@takagaki/cortex-decisions-viewer 0.4.72 → 0.4.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/render.js +47 -13
  2. package/package.json +1 -1
package/dist/render.js CHANGED
@@ -2908,17 +2908,22 @@ ${capabilityState.toString()}
2908
2908
  // 別名は上のチップ(読み取り専用の記録)で見せるに留める。Lambda 側も add/remove とも断る。
2909
2909
  used = true;
2910
2910
  } else if (s.kind === "会議" && usable("会議", "google-meet")) {
2911
+ // **文面に設定ファイル名を出さない(2026-08-12 の文言原則)。** ここが見ているのは
2912
+ // 会議の取り込み設定(ingest-config.json の有無と enabled)だが、それは
2913
+ // 注: ここは埋め込みJSのテンプレートリテラル内。コメントでもバッククォートを使わない
2914
+ // 読む人の操作対象ではない——画面から直せないものなので、次の一歩は「担当者へ連絡」。
2915
+ // 「手で直してください」も出さない(PM に設定ファイルを編集させる案内になっていた)。
2911
2916
  if (s.ingestState === "unset") {
2912
- box.appendChild(el("p", { class: "sec-how", text: "会議の取り込み設定がこのリポジトリにありません(ingest-config.json)。先に設置が必要です。" }));
2917
+ box.appendChild(el("p", { class: "sec-how", text: "この案件では議事録の自動取り込みがまだ用意されていません。cortex の担当者にご連絡ください。" }));
2913
2918
  used = true;
2914
2919
  } else if (s.ingestState === "broken") {
2915
- box.appendChild(el("p", { class: "sec-how", text: "会議の取り込み設定(ingest-config.json)が壊れているため、ここからは変更できません。手で直してください。" }));
2920
+ box.appendChild(el("p", { class: "sec-how", text: "議事録の取り込み設定を読み取れないため、この画面からは変更できません。cortex の担当者にご連絡ください。" }));
2916
2921
  used = true;
2917
2922
  } else if (s.ingestState === "off") {
2918
2923
  // 自動取り込みを止めている案件(例: Teams を使っていて手動で取り込む運用)。
2919
2924
  // ここでトグルを出すと「押せば始まる」と読めるが、実際は設定ファイルの意思表示なので
2920
2925
  // 画面から気軽に反転させるものではない。状態だけを伝える。
2921
- box.appendChild(el("p", { class: "sec-how", text: "この案件は会議の自動取り込みを行わない設定です(ingest-config.json の enabled が false)。" }));
2926
+ box.appendChild(el("p", { class: "sec-how", text: "この案件は議事録の自動取り込みを停止しています。" }));
2922
2927
  used = true;
2923
2928
  }
2924
2929
  }
@@ -2945,10 +2950,13 @@ ${capabilityState.toString()}
2945
2950
  // 同期ミラー(backlog-settings.json)の位置から決めている。ミラーが1つも
2946
2951
  // 無い案件では正本をどこへ置けばよいかも決められないので、条件は変わらない
2947
2952
  if (!s.url) {
2948
- box.appendChild(el("p", { class: "sec-how", text: "この案件の課題管理の設定ファイル(同期ミラーの backlog-settings.json)がまだありません。接続先の正本(issues-config.json)の置き場もここから決められないため、先に初回の同期を実行するか、担当者にご連絡ください。" }));
2953
+ box.appendChild(el("p", { class: "sec-how", text: "この案件はまだ一度も Backlog と同期していないため、この画面からは接続先を設定できません。先に初回の同期を実行するか、cortex の担当者にご連絡ください。" }));
2949
2954
  used = true;
2950
2955
  } else box.appendChild(addForm({
2951
2956
  title: "接続先を変更",
2957
+ // **「追加」ではなく「保存」。** 接続先は1件しか持てない置き換えで、
2958
+ // 「追加」だと2つ目を足せると読める(実機テストでの指摘・複数対応は #127)
2959
+ submitLabel: "保存",
2952
2960
  placeholder: "https://<スペース>.backlog.jp/projects/<プロジェクトキー>",
2953
2961
  requiredNote: "BacklogのURLを入力してください(プロジェクトキーが入った形。数字だけのURLは受け付けません)。",
2954
2962
  hint: "Backlog でこの案件のプロジェクトを開き、ブラウザのURLをそのまま貼ってください(課題の画面のURLでも構いません)。APIキーは下の「Backlog のAPIキー」から別に登録します。",
@@ -2980,12 +2988,14 @@ ${capabilityState.toString()}
2980
2988
  }
2981
2989
 
2982
2990
  if (s.kind === "共有資料" && usable("共有資料", "google-drive")) {
2991
+ // 状態の出どころは資料の取り込み設定(materials-config.json)だが、会議と同じく
2992
+ // 文面には出さない(2026-08-12 の文言原則)。画面から直せない状態の次の一歩は担当者への連絡。
2983
2993
  if (s.driveState === "unset") {
2984
- box.appendChild(el("p", { class: "sec-how", text: "資料の同期設定がこのリポジトリにありません(materials-config.json)。先に設置が必要です。" }));
2994
+ box.appendChild(el("p", { class: "sec-how", text: "この案件では共有資料の取り込みがまだ用意されていません。cortex の担当者にご連絡ください。" }));
2985
2995
  used = true;
2986
2996
  } else if (s.driveState === "broken") {
2987
2997
  // 壊れていると書き込みも失敗する。フォームを出して押させない
2988
- box.appendChild(el("p", { class: "sec-how", text: "資料の同期設定(materials-config.json)が壊れているため、ここからは変更できません。手で直してください。" }));
2998
+ box.appendChild(el("p", { class: "sec-how", text: "共有資料の取り込み設定を読み取れないため、この画面からは変更できません。cortex の担当者にご連絡ください。" }));
2989
2999
  used = true;
2990
3000
  } else if (s.driveState) {
2991
3001
  // フォルダが1件も無いのに ON/OFF だけ出しても意味が無いので、追加フォームを先に出す
@@ -3363,14 +3373,21 @@ ${capabilityState.toString()}
3363
3373
 
3364
3374
  /**
3365
3375
  * 「+…を追加」のフォーム。URLをそのまま貼れるようにする(IDだけを要求すると転記ミスが増える)。
3366
- * @param opts { title, placeholder, hint, needsName, confirmLines, build(values) }
3376
+ *
3377
+ * **ボタンの語は呼び出し側が決める(既定は「追加」)。** 課題管理の「接続先を変更」だけは
3378
+ * 1件しか持てない設定の**置き換え**なのに、ボタンが「追加」だと**複数登録できる**と読める
3379
+ * (実機テストでの指摘。複数接続先の対応は #127 の将来要件で、いまは持てない)。
3380
+ * 押した結果の表示(+/追加済み)も同じ理由で語を揃える。
3381
+ *
3382
+ * @param opts { title, placeholder, hint, needsName, confirmLines, build(values), submitLabel }
3367
3383
  */
3368
3384
  function addForm(opts) {
3369
3385
  var main = el("input", { class: "sec-input", type: "text", placeholder: opts.placeholder, autocomplete: "off" });
3370
3386
  var name = opts.needsName
3371
3387
  ? el("input", { class: "sec-input", type: "text", placeholder: opts.namePlaceholder || "表示名", autocomplete: "off" })
3372
3388
  : null;
3373
- var btn = el("button", { class: "ds-toggle-btn", type: "button", text: "追加" });
3389
+ var submitLabel = opts.submitLabel || "追加";
3390
+ var btn = el("button", { class: "ds-toggle-btn", type: "button", text: submitLabel });
3374
3391
  var msg = el("div", { class: "ds-toggle-msg" });
3375
3392
 
3376
3393
  btn.addEventListener("click", function () {
@@ -3398,9 +3415,9 @@ ${capabilityState.toString()}
3398
3415
  // (実際にそうなった)。だから押した結果をここで見せる。
3399
3416
  pending.appendChild(
3400
3417
  el("div", { class: "ds-pending-item" }, [
3401
- el("span", { class: "ds-pending-mark", text: "+" }),
3418
+ el("span", { class: "ds-pending-mark", text: opts.submitLabel ? "✓" : "+" }),
3402
3419
  el("span", { class: "ds-pending-name", text: addedName || added }),
3403
- el("span", { class: "ds-pending-note", text: "追加済み・反映中" }),
3420
+ el("span", { class: "ds-pending-note", text: submitLabel + "済み・反映中" }),
3404
3421
  ]),
3405
3422
  );
3406
3423
  });
@@ -3531,8 +3548,19 @@ ${capabilityState.toString()}
3531
3548
 
3532
3549
  /**
3533
3550
  * 登録の由来の表示(#118)。値は fleet-status.json の origin
3534
- * (explicit … 登録ファイルに手で書いた / derived … .gitmodules 等からの自動導出 / both)。
3551
+ * (explicit … 登録ファイルに手で書いた / derived … 自動導出 / both)。
3535
3552
  * **知らない値には何も出さない**(生の内部値を顧客の画面に出さないため)。
3553
+ *
3554
+ * **#119 で、開発リポの自動導出は無くなった。** .gitmodules の submodule を登録として
3555
+ * 扱うのをやめた(手元でコードを読みたいという案件のカスタマイズであって、中身を顧客可視の
3556
+ * Gold に上げてよいという同意ではない)ので、いま engine が derived を付けるのは
3557
+ * Slack だけ。**新しく生成されるデータでは github の行は必ず explicit になる。**
3558
+ *
3559
+ * **それでも derived / both の表示と、下の削除の出し分けは残す。** 再生成前の
3560
+ * fleet-status.json にはまだ derived が入っている(艦隊の実データで確認: cortex-context
3561
+ * 5件・mitsubishi 5件・verdy 4件・gdo 1件)。ここを消すと、その案件では
3562
+ * **「登録から削除」が出てはいけない行に出て**、押しても翌日また現れる。
3563
+ * 全案件の再生成が回りきったら、github 側のこの分岐を落とす。
3536
3564
  */
3537
3565
  var ORIGIN_LABEL = { explicit: "明示登録", derived: "自動検出", both: "明示登録+自動検出" };
3538
3566
  var ORIGIN_HELP = {
@@ -3557,7 +3585,9 @@ ${capabilityState.toString()}
3557
3585
  // 登録の由来(#118)。**「登録から削除」が出る/出ないの理由がこれ。** 導出されたリポは
3558
3586
  // 登録ファイルから消しても翌日また現れるので削除を出していないが、画面には
3559
3587
  // 「同じ見た目の行なのに、片方にだけ削除がある」としか映らず、毎回考え直すことになる。
3560
- // GitHub の行だけに出す(削除の出し分けがあるのはここだけで、他は全部 explicit)
3588
+ // **GitHub の行だけに出す。** 由来で出し分けているのはここだけだから——Slack も
3589
+ // channels.json 由来の derived だが、あちらに削除は無く、由来を見せても打つ手が増えない。
3590
+ // #119 以降、新しいデータの github は必ず explicit(詳細は ORIGIN_LABEL)
3561
3591
  if (String(s.type).indexOf("github") === 0 && ORIGIN_LABEL[s.origin]) {
3562
3592
  badges.appendChild(el("span", {
3563
3593
  class: "badge ds-origin",
@@ -3599,9 +3629,13 @@ ${capabilityState.toString()}
3599
3629
  return { op: "set-github-source-enabled", repo: s.ref, value: next };
3600
3630
  },
3601
3631
  }));
3602
- // **削除は「手で登録したもの」にだけ出す。** .gitmodules 等から自動で見つかったリポは
3632
+ // **削除は「手で登録したもの」にだけ出す。** 自動で見つかったリポは
3603
3633
  // 登録ファイルから消しても翌日また現れる(=消えないのに消せたように見える)。
3604
3634
  // 止めたいだけなら上の「読み取りを止める」で足りる。
3635
+ //
3636
+ // **#119 以降、新しいデータの github は必ず explicit** なので、この条件は
3637
+ // いずれ常に真になる。それまでは残す——再生成前のスナップショットには derived が
3638
+ // まだ入っており、条件を外すと押しても戻ってくる削除ボタンが出る(ORIGIN_LABEL 参照)。
3605
3639
  if (s.origin === "explicit") {
3606
3640
  card.appendChild(removeButton({
3607
3641
  label: "登録から削除",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.4.72",
3
+ "version": "0.4.73",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,