@takagaki/cortex-decisions-viewer 0.12.60 → 0.12.61

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 +20 -91
  2. package/package.json +1 -1
package/dist/render.js CHANGED
@@ -20,7 +20,6 @@ exports.chatRowsToAdd = chatRowsToAdd;
20
20
  exports.gchatRowsToAdd = gchatRowsToAdd;
21
21
  exports.overlayGchatNotify = overlayGchatNotify;
22
22
  exports.overlaySlackNotify = overlaySlackNotify;
23
- exports.overlayNotifyAuto = overlayNotifyAuto;
24
23
  exports.devRowsToAdd = devRowsToAdd;
25
24
  exports.markExcludedPendingRows = markExcludedPendingRows;
26
25
  exports.designRowsToAdd = designRowsToAdd;
@@ -889,11 +888,14 @@ const REGISTERED_CAP_NAMES = {
889
888
  * `orgUnknown` で同じ穴を1つ埋めた(0.12.1)のに、同族の3欄が残っていた。
890
889
  */
891
890
  const REGISTERED_FIELDS = {
892
- // notifyAuto(#589): 接続が確認できたので自動で通知先になった行の印。
893
- // **`notify` と対で読む**——サーバは通知先である行にしか付けない
894
- chat: ["ref", "name", "workspace", "orgUnknown", "origin", "goldState", "notify", "notifyAuto"],
891
+ // ⚠ **自動で入った行の印を足し戻さない(オーナー指示 2026-09-12・#592)。** #589 の初版は
892
+ // 札の語を出し分けるためにその欄(`notifyAuto`)を通していたが、1 日で撤回された
893
+ // ——自動で入るのが既定の動きなので、画面で人が設定した行と区別する意味が無い。
894
+ // この定数はクライアントへ `JSON.stringify` で渡る(コメントは付いて行かない)ので、
895
+ // 消した欄の名前をここに残しても画面には出ない
896
+ chat: ["ref", "name", "workspace", "orgUnknown", "origin", "goldState", "notify"],
895
897
  // notify(#572): スペースも通知先にできる。真偽値の扱いは chat の notify と同じ篩
896
- "google-chat": ["ref", "name", "notify", "notifyAuto"],
898
+ "google-chat": ["ref", "name", "notify"],
897
899
  dev: ["ref", "type"],
898
900
  // 🔴 **意図的に外した開発リポジトリ(#391)。** サーバは前から別キーで返していたが、
899
901
  // ここに無いので篩が丸ごと落としていた。**これが読めないと「読み取り停止中」の行を
@@ -978,9 +980,11 @@ function sanitizeRegisteredNow(v) {
978
980
  // **false はキーごと落とす。** 読み手は `=== true` で見る(`s.notify === true` /
979
981
  // `r.orgUnknown === true`)ので、false を載せても意味は同じ——載せないほうが
980
982
  // 「印が無い」と「印が false」の2通りを画面に持ち込まない。
981
- // 例外はこの3欄だけ(#589 で `notifyAuto` を足した)——他の欄まで真偽値を通すと、
982
- // 許可リストが篩の意味を失う
983
- if (f === "orgUnknown" || f === "notify" || f === "notifyAuto") {
983
+ // 例外はこの2欄だけ——他の欄まで真偽値を通すと、許可リストが篩の意味を失う
984
+ // (#589 で足した自動設定の印は #592 で落とした。上の許可リストの項を参照)
985
+ // この行はクライアントへ丸ごと流し込まれる。**印の欄の名前をここに書かない**
986
+ // ——画面にその語が 1 度も出ないことを notify-auto-gone.test.mjs が見張っている
987
+ if (f === "orgUnknown" || f === "notify") {
984
988
  if (fv === true)
985
989
  item[f] = true;
986
990
  continue;
@@ -1195,10 +1199,6 @@ function chatRowsToAdd(externals, rows) {
1195
1199
  // **真偽値の印は true のときだけ載せる**(読み手は `s.notify === true`。篩の項を参照)
1196
1200
  if (r.notify === true)
1197
1201
  row.notify = true;
1198
- // 自動で設定された通知先の印(#589)。**足す行にも載せる**——載せないと、追加して
1199
- // 接続を確認した直後(一番この説明が要る瞬間)だけ「自動で設定」が出ない
1200
- if (r.notify === true && r.notifyAuto === true)
1201
- row.notifyAuto = true;
1202
1202
  out.push(row);
1203
1203
  }
1204
1204
  return out;
@@ -1225,9 +1225,6 @@ function gchatRowsToAdd(externals, rows) {
1225
1225
  // 通知先の印(#572)。真偽値の印は true のときだけ載せる(chatRowsToAdd と同じ)
1226
1226
  if (r.notify === true)
1227
1227
  row.notify = true;
1228
- // 自動で設定された通知先の印(#589・chatRowsToAdd と同じ条件)
1229
- if (r.notify === true && r.notifyAuto === true)
1230
- row.notifyAuto = true;
1231
1228
  out.push(row);
1232
1229
  }
1233
1230
  return out;
@@ -1319,63 +1316,6 @@ function overlaySlackNotify(externals, rows) {
1319
1316
  });
1320
1317
  return changed ? out : list;
1321
1318
  }
1322
- /**
1323
- * 「自動で設定された通知先」の印(#589)を、まとめ表の行に重ねる。
1324
- *
1325
- * 🔴 **まとめ表(fleet-status)はこの印を持たない。** 印の置き場は案件リポの
1326
- * `チャット/notify.json` の `autoDefault` で、それを読んで行に付けるのは中央(intake)の
1327
- * `registeredNow` だけ。重ねないと、**自動で通知先になった行が「通知先」としか出ず、
1328
- * 担当者は自分が設定した覚えのない通知先を前にして、外してよいのかも分からない**
1329
- * (オーナー決定 4「外せる」が画面から読めない)。
1330
- *
1331
- * **印だけを重ねる。** `notify` そのものには触らない——通知先かどうかを live で重ねるのは
1332
- * `overlayGchatNotify`(Google Chat)と `overlaySlackNotify`(Slack)の仕事で、**この関数より
1333
- * 先に走る**。ここで二重に決めると「どちらが正か」が読めなくなる。印は `notify` が立っている
1334
- * 行にしか付けない(サーバ側も同じ条件で付けている)。
1335
- *
1336
- * live に該当の能力のキーが無ければ(読めていない)何も変えない。
1337
- *
1338
- * **クロージャを持たない純関数に保つこと**(`.toString()` でクライアントへ渡す)。
1339
- */
1340
- function overlayNotifyAuto(externals, reg) {
1341
- const list = externals || [];
1342
- if (!reg || typeof reg !== "object")
1343
- return list;
1344
- const auto = {};
1345
- const known = {};
1346
- const scan = (rows, type, withWorkspace) => {
1347
- if (!Array.isArray(rows))
1348
- return;
1349
- for (const r of rows) {
1350
- if (!r || !r.ref)
1351
- continue;
1352
- const key = type + "\t" + (withWorkspace ? String(r.workspace || "") : "") + "\t" + String(r.ref);
1353
- known[key] = true;
1354
- auto[key] = r.notifyAuto === true && r.notify === true;
1355
- }
1356
- };
1357
- scan(reg.chat, "slack", true);
1358
- scan(reg["google-chat"], "google-chat", false);
1359
- let changed = false;
1360
- const out = list.map(function (s) {
1361
- if (!s || !s.ref || (s.type !== "slack" && s.type !== "google-chat"))
1362
- return s;
1363
- const key = s.type + "\t" + (s.type === "slack" ? String(s.workspace || "") : "") + "\t" + String(s.ref);
1364
- if (!Object.prototype.hasOwnProperty.call(known, key))
1365
- return s;
1366
- const want = auto[key] === true && s.notify === true;
1367
- if ((s.notifyAuto === true) === want)
1368
- return s;
1369
- changed = true;
1370
- const row = Object.assign({}, s);
1371
- if (want)
1372
- row.notifyAuto = true;
1373
- else
1374
- delete row.notifyAuto;
1375
- return row;
1376
- });
1377
- return changed ? out : list;
1378
- }
1379
1319
  /**
1380
1320
  * 開発の行で、まとめ表がまだ知らないもの。**鍵は `owner/repo` の生文字列。**
1381
1321
  *
@@ -1784,8 +1724,6 @@ function mergeRegisteredFleet(view, reg) {
1784
1724
  out.externalSources = overlayGchatNotify(v.externalSources, reg["google-chat"]);
1785
1725
  // Slack の行の「通知先」も live が正(#589・まとめ表は夜間の生成物で、自動設定に追いつかない)
1786
1726
  out.externalSources = overlaySlackNotify(out.externalSources, reg.chat);
1787
- // 「自動で設定」の印も live が正(#589・まとめ表は持っていない)。`notify` を重ねた後に置く
1788
- out.externalSources = overlayNotifyAuto(out.externalSources, reg);
1789
1727
  const add = registeredRowsToAdd(v, reg);
1790
1728
  if (add.externalSources.length)
1791
1729
  out.externalSources = (out.externalSources || []).concat(add.externalSources);
@@ -5192,7 +5130,6 @@ ${chatRowsToAdd.toString()}
5192
5130
  ${gchatRowsToAdd.toString()}
5193
5131
  ${overlayGchatNotify.toString()}
5194
5132
  ${overlaySlackNotify.toString()}
5195
- ${overlayNotifyAuto.toString()}
5196
5133
  ${devRowsToAdd.toString()}
5197
5134
  ${markExcludedPendingRows.toString()}
5198
5135
  ${designRowsToAdd.toString()}
@@ -11367,18 +11304,13 @@ ${calendarAddUrl.toString()}
11367
11304
  * 描画時と押した後で別々に作ると、押した行だけ見た目の違う札が並ぶ。
11368
11305
  */
11369
11306
  /**
11370
- * @param auto 接続が確認できたので**自動で**通知先になった行か(#589)。
11371
- * 語を増やしすぎない——札は「通知先(自動で設定)」の1つで、外せることと
11372
- * 「外したら戻さない」は hover の説明に置く(行に長い定型文を入れない)。
11373
- * **押して通知先にした行には付けない**(トグルが作る札は常に素の「通知先」)
11307
+ * **自動で入った行にも同じ札を出す(オーナー指示 2026-09-12・#592)。** #589 の初版は
11308
+ * 自動で入った行だけ札の語を変え、外し方を hover で説明していたが、1 日で撤回された
11309
+ * ——自動で入るのが既定の動きなので、画面で区別する意味が無い。外したい人はどちらの行でも
11310
+ * 「通知を止める」を押せばよい。**出し分けを足し戻さない**(notify-auto-gone.test.mjs が番人)
11374
11311
  */
11375
- function notifyBadge(auto) {
11376
- if (auto !== true) return el("span", { class: "badge ds-notify", text: "通知先" });
11377
- return el("span", {
11378
- class: "badge ds-notify",
11379
- text: "通知先(自動で設定)",
11380
- title: "接続が確認できたので、自動でこのチャンネルを通知先にしました。外すには「通知を止める」を押してください(外したら自動では戻しません)。",
11381
- });
11312
+ function notifyBadge() {
11313
+ return el("span", { class: "badge ds-notify", text: "通知先" });
11382
11314
  }
11383
11315
 
11384
11316
  /**
@@ -11422,13 +11354,10 @@ ${calendarAddUrl.toString()}
11422
11354
  // 行の元データも合わせる。ライブの読み直しで同じ行が描き直されるまでの間、
11423
11355
  // ここだけが「いまどちらか」を持っている
11424
11356
  s.notify = next;
11425
- // **押した時点で「自動で設定」ではなくなる(#589)。** 人が入り切りした行に
11426
- // 「自動で設定」と出したままだと、外して押し直した行が自動で戻ったように見える
11427
- s.notifyAuto = false;
11428
11357
  btn.textContent = labelOf();
11429
11358
  var badge = badges.querySelector(".ds-notify");
11430
11359
  // 並びは描画時と同じ(札の先頭)。後ろに足すと、押した行だけ順番が変わる
11431
- if (on && !badge) badges.insertBefore(notifyBadge(false), badges.firstChild);
11360
+ if (on && !badge) badges.insertBefore(notifyBadge(), badges.firstChild);
11432
11361
  if (!on && badge) badges.removeChild(badge);
11433
11362
  });
11434
11363
  });
@@ -13934,7 +13863,7 @@ ${calendarAddUrl.toString()}
13934
13863
  title: "このリポジトリは読み取り対象から除外されています(開発の登録ファイル dev-sources.json の exclude)。この画面からは戻せません。",
13935
13864
  }));
13936
13865
  }
13937
- if (s.notify === true) badges.appendChild(notifyBadge(s.notifyAuto === true));
13866
+ if (s.notify === true) badges.appendChild(notifyBadge());
13938
13867
  // **どのワークスペースのチャンネルかを、必ず行に出す(#104・2026-08-20 に社内も)。**
13939
13868
  //
13940
13869
  // 折りたたみの見出しでまとめるのをやめた(オーナー指摘「複雑になっちゃってる」)ので、
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.60",
3
+ "version": "0.12.61",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,