@takagaki/cortex-decisions-viewer 0.12.59 → 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 +61 -0
  2. package/package.json +1 -1
package/dist/render.js CHANGED
@@ -19,6 +19,7 @@ exports.overlayStateOnFleet = overlayStateOnFleet;
19
19
  exports.chatRowsToAdd = chatRowsToAdd;
20
20
  exports.gchatRowsToAdd = gchatRowsToAdd;
21
21
  exports.overlayGchatNotify = overlayGchatNotify;
22
+ exports.overlaySlackNotify = overlaySlackNotify;
22
23
  exports.devRowsToAdd = devRowsToAdd;
23
24
  exports.markExcludedPendingRows = markExcludedPendingRows;
24
25
  exports.designRowsToAdd = designRowsToAdd;
@@ -887,6 +888,11 @@ const REGISTERED_CAP_NAMES = {
887
888
  * `orgUnknown` で同じ穴を1つ埋めた(0.12.1)のに、同族の3欄が残っていた。
888
889
  */
889
890
  const REGISTERED_FIELDS = {
891
+ // ⚠ **自動で入った行の印を足し戻さない(オーナー指示 2026-09-12・#592)。** #589 の初版は
892
+ // 札の語を出し分けるためにその欄(`notifyAuto`)を通していたが、1 日で撤回された
893
+ // ——自動で入るのが既定の動きなので、画面で人が設定した行と区別する意味が無い。
894
+ // この定数はクライアントへ `JSON.stringify` で渡る(コメントは付いて行かない)ので、
895
+ // 消した欄の名前をここに残しても画面には出ない
890
896
  chat: ["ref", "name", "workspace", "orgUnknown", "origin", "goldState", "notify"],
891
897
  // notify(#572): スペースも通知先にできる。真偽値の扱いは chat の notify と同じ篩
892
898
  "google-chat": ["ref", "name", "notify"],
@@ -975,6 +981,9 @@ function sanitizeRegisteredNow(v) {
975
981
  // `r.orgUnknown === true`)ので、false を載せても意味は同じ——載せないほうが
976
982
  // 「印が無い」と「印が false」の2通りを画面に持ち込まない。
977
983
  // 例外はこの2欄だけ——他の欄まで真偽値を通すと、許可リストが篩の意味を失う
984
+ // (#589 で足した自動設定の印は #592 で落とした。上の許可リストの項を参照)
985
+ // ⚠ この行はクライアントへ丸ごと流し込まれる。**印の欄の名前をここに書かない**
986
+ // ——画面にその語が 1 度も出ないことを notify-auto-gone.test.mjs が見張っている
978
987
  if (f === "orgUnknown" || f === "notify") {
979
988
  if (fv === true)
980
989
  item[f] = true;
@@ -1264,6 +1273,49 @@ function overlayGchatNotify(externals, rows) {
1264
1273
  });
1265
1274
  return changed ? out : list;
1266
1275
  }
1276
+ /**
1277
+ * まとめ表が既に持っている Slack の行に、live(registeredNow)が「通知先」と言う印を**足す**(#589)。
1278
+ *
1279
+ * 🔴 **#589 で、まとめ表を待たずに通知先が増えるようになった。** まとめ表(fleet-status)は
1280
+ * 夜間の生成物なので、「接続を確認」で自動的に通知先になったチャンネルは**翌朝まで
1281
+ * `notify` を持たない**——札が出ないだけでなく、トグルが「通知先にする」のままになる。
1282
+ * **通知は届いているのに画面は通知先でないと言う**、という取り違えが最長 24 時間続く。
1283
+ *
1284
+ * 🔴 **足すだけで、外さない(`overlayGchatNotify` との違い)。** 画面の `registeredNow` からは
1285
+ * 「宣言を読んだうえで通知先でなかった」と「宣言を読めなかった」が区別できない
1286
+ * (どちらも `notify` のキーが無い。サーバ側 `buildRegisteredNow` は notify.json を読めなかった
1287
+ * 便では**全行から印を落とす**)。外す向きにも効かせると、GitHub が不調だった 1 回の読み取りで
1288
+ * **本物の通知先が画面から「通知先でない」に化ける**——通知の宛先を取り違えさせる方向なので、
1289
+ * 足す向きだけに限る。外す向きが遅れる(最長 24 時間「通知先」の札が残る)のは #589 より前からの
1290
+ * Slack の挙動で、こちらは悪化させない。Google Chat が両向きなのは、まとめ表が
1291
+ * その欄を**そもそも持たない**ので「読めなかった」と混ざりようが無いから。
1292
+ *
1293
+ * 新しく足す行の印は `chatRowsToAdd` が持つ(こちらは既にある行だけを直す)。
1294
+ *
1295
+ * **クロージャを持たない純関数に保つこと**(`.toString()` でクライアントへ渡す)。
1296
+ */
1297
+ function overlaySlackNotify(externals, rows) {
1298
+ const list = externals || [];
1299
+ if (!Array.isArray(rows))
1300
+ return list;
1301
+ const live = {};
1302
+ for (const r of rows) {
1303
+ if (!r || !r.ref || r.notify !== true)
1304
+ continue;
1305
+ // 鍵はワークスペース込み(チャンネルIDはワークスペースの中でしか一意でない・#104)
1306
+ live[String(r.workspace || "") + "\t" + String(r.ref)] = true;
1307
+ }
1308
+ let changed = false;
1309
+ const out = list.map(function (s) {
1310
+ if (!s || s.type !== "slack" || !s.ref || s.notify === true)
1311
+ return s;
1312
+ if (live[String(s.workspace || "") + "\t" + String(s.ref)] !== true)
1313
+ return s;
1314
+ changed = true;
1315
+ return Object.assign({}, s, { notify: true });
1316
+ });
1317
+ return changed ? out : list;
1318
+ }
1267
1319
  /**
1268
1320
  * 開発の行で、まとめ表がまだ知らないもの。**鍵は `owner/repo` の生文字列。**
1269
1321
  *
@@ -1670,6 +1722,8 @@ function mergeRegisteredFleet(view, reg) {
1670
1722
  return out;
1671
1723
  // Google Chat の行の「通知先」は live が正(#572・まとめ表は持っていない)。足す前に重ねる
1672
1724
  out.externalSources = overlayGchatNotify(v.externalSources, reg["google-chat"]);
1725
+ // Slack の行の「通知先」も live が正(#589・まとめ表は夜間の生成物で、自動設定に追いつかない)
1726
+ out.externalSources = overlaySlackNotify(out.externalSources, reg.chat);
1673
1727
  const add = registeredRowsToAdd(v, reg);
1674
1728
  if (add.externalSources.length)
1675
1729
  out.externalSources = (out.externalSources || []).concat(add.externalSources);
@@ -5075,6 +5129,7 @@ ${sanitizeRegisteredNow.toString()}
5075
5129
  ${chatRowsToAdd.toString()}
5076
5130
  ${gchatRowsToAdd.toString()}
5077
5131
  ${overlayGchatNotify.toString()}
5132
+ ${overlaySlackNotify.toString()}
5078
5133
  ${devRowsToAdd.toString()}
5079
5134
  ${markExcludedPendingRows.toString()}
5080
5135
  ${designRowsToAdd.toString()}
@@ -11248,6 +11303,12 @@ ${calendarAddUrl.toString()}
11248
11303
  * 「通知先」の札。**組み立てる場所を1つにする**——下のトグルで後から付け外しするので、
11249
11304
  * 描画時と押した後で別々に作ると、押した行だけ見た目の違う札が並ぶ。
11250
11305
  */
11306
+ /**
11307
+ * ⚠ **自動で入った行にも同じ札を出す(オーナー指示 2026-09-12・#592)。** #589 の初版は
11308
+ * 自動で入った行だけ札の語を変え、外し方を hover で説明していたが、1 日で撤回された
11309
+ * ——自動で入るのが既定の動きなので、画面で区別する意味が無い。外したい人はどちらの行でも
11310
+ * 「通知を止める」を押せばよい。**出し分けを足し戻さない**(notify-auto-gone.test.mjs が番人)
11311
+ */
11251
11312
  function notifyBadge() {
11252
11313
  return el("span", { class: "badge ds-notify", text: "通知先" });
11253
11314
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.59",
3
+ "version": "0.12.61",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,