dsh-manage-session 0.5.7 → 2.0.4
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.
- package/CHANGELOG.ja.md +33 -229
- package/CHANGELOG.ko.md +33 -229
- package/CHANGELOG.md +33 -363
- package/INSTALL.ja.md +164 -164
- package/INSTALL.ko.md +164 -164
- package/INSTALL.md +164 -164
- package/INSTALL.zh.md +164 -164
- package/LICENSE +21 -21
- package/README.en.md +41 -46
- package/README.ja.md +33 -57
- package/README.ko.md +32 -55
- package/README.md +64 -64
- package/cordis.patch.yml +19 -16
- package/dsh.plugin.json +4 -4
- package/lib/client.js +661 -3082
- package/lib/index.d.ts +79 -970
- package/lib/index.js +249 -2669
- package/locale/de.json +2 -2
- package/locale/en.json +2 -2
- package/locale/es.json +2 -2
- package/locale/fr.json +2 -2
- package/locale/it.json +2 -2
- package/locale/ja.json +2 -2
- package/locale/ko.json +2 -2
- package/locale/ru.json +2 -2
- package/locale/zh.json +2 -2
- package/package.json +15 -25
- package/screenshots.json +3 -3
- package/src/client/bridge-scope.ts +202 -213
- package/src/client/card.tsx +154 -154
- package/src/client/health-panel.tsx +49 -49
- package/src/client/host-api.ts +72 -6
- package/src/client/index.ts +594 -503
- package/src/client/locales.ts +893 -893
- package/src/client/manage-locales.ts +178 -0
- package/src/client/{search/manage.tsx → manage.tsx} +430 -404
- package/src/client/panel.tsx +131 -129
- package/src/client/session-menu-legacy.ts +2 -3
- package/src/client/session-menu.tsx +5 -5
- package/src/config.ts +43 -99
- package/src/host/health/attribution.ts +118 -118
- package/src/host/health/lossless.ts +128 -128
- package/src/host/health/repair.ts +2 -2
- package/src/host/health/source-kind.ts +350 -350
- package/src/host/history/archive-source.ts +250 -250
- package/src/host/history/archive.ts +249 -249
- package/src/host/history/favorites.ts +71 -71
- package/src/host/history/purge.ts +370 -370
- package/src/host/history/tombstones.ts +3 -3
- package/src/host/registry/archive-registry.ts +317 -317
- package/src/host/settings-bridge.ts +222 -264
- package/src/index.ts +66 -694
- package/src/client/search/card.tsx +0 -563
- package/src/client/search/host-api.ts +0 -213
- package/src/client/search/locales.ts +0 -861
- package/src/client/search/locate.ts +0 -330
- package/src/client/search/panel.tsx +0 -940
- package/src/client/search/platform.ts +0 -136
- package/src/host/index/archive-source.ts +0 -90
- package/src/host/index/drs-source.ts +0 -211
- package/src/host/index/engine.ts +0 -699
- package/src/host/index/extract.ts +0 -272
- package/src/host/index/peers.ts +0 -62
- package/src/host/index/rebuild.ts +0 -432
- package/src/host/index/schema.ts +0 -136
- package/src/host/index/snapshot.ts +0 -135
- package/src/host/index/sync.ts +0 -413
package/CHANGELOG.ja.md
CHANGED
|
@@ -1,229 +1,33 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
## 0.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
第一方旧行のみのログは書き込まない。30 名対照テストとホスト公式デコーダ読み返し
|
|
35
|
-
検証を追加(161 テスト全緑)。
|
|
36
|
-
|
|
37
|
-
### 強化 —— R2:purge 側が署名変換バックアップを認識
|
|
38
|
-
|
|
39
|
-
- 統計とクリーンアップの両経路で `*.pre-sourcemigrate-<ts>` バックアップを認識:
|
|
40
|
-
統計は行ごとに `backupBytes`/`backupCount` を追加(`bytes` の部分集合、単列で
|
|
41
|
-
誤読防止)、クリーンアップ結果は `backupsRemoved` を追加。回帰 6 件を追加、
|
|
42
|
-
全 167 テスト。
|
|
43
|
-
|
|
44
|
-
## 0.1.0-alpha.6
|
|
45
|
-
|
|
46
|
-
### 修正 —— アイコンとラベルの間隔を詰め、狭いサイドバーで隣を潰さない
|
|
47
|
-
|
|
48
|
-
- **間隔 8px → 4px**: 🧭 と「セッションスチュワード」の間を実測に基づいて詰めました(ユーザー指摘
|
|
49
|
-
「icon と文字の間隔を小さく」)。あわせて自前の左右パディングを `0 12px 0 10px` →
|
|
50
|
-
`0 10px 0 8px` にし、隣の「検索」ピルと揃えました。
|
|
51
|
-
- **自分が縮む**: `.dss_entryWrap` を `flex:none` → `flex:0 1 auto; min-width:0` に変更し、
|
|
52
|
-
外側の左マージンを `8px → 6px`。以前は一切譲らなかったため不足分がすべて検索ピルに乗り、
|
|
53
|
-
相手のラベルを一文字に潰していました。現在は不足分を自分で引き受けます(ラベルは省略記号で終端)。
|
|
54
|
-
- **レール寸法は 28×28 に戻す**: レールの内容ボックスは 36px しかなく(56px レール − 左右 10px)、
|
|
55
|
-
36×36 のコントロール 2 個は入りません(実測 36+28=64px、14px はみ出し)。
|
|
56
|
-
28+28=56px とし、変更前の 32+28=60px より狭くしました。
|
|
57
|
-
- **協調の境界は不変**: あくまで自身の CSS のみを変更し、検索インデックスの値を参照せず、
|
|
58
|
-
インストール有無も仮定しません。
|
|
59
|
-
|
|
60
|
-
## 0.1.0-alpha.5
|
|
61
|
-
|
|
62
|
-
### 変更 —— サイドバー入口にラベルを付け、「検索インデックス」と同一行で調和
|
|
63
|
-
|
|
64
|
-
- **入口に名前が付きました**: フッター入口は 28x28 のアイコン丸ボタン(🧭)だけで、何の入口か伝わりませんでした。
|
|
65
|
-
ワイド表示では 42px の行コントロール **🧭 セッションスチュワード** になり、隣の「検索」ピルと
|
|
66
|
-
同じ高さ・同じ角丸(12px)・同じ文字サイズになります。
|
|
67
|
-
- **同一行のジオメトリ協調**: 検索入口側が `flex:1;min-width:0` を宣言して行全体を占有しなくなったため、
|
|
68
|
-
2 つの入口は `sidebar.footer.action` の兄弟要素として同じ行に並びます。本入口はワイド時に
|
|
69
|
-
`margin-left:8px` で間隔を空けます(公式 `ui-settings-general` の `.triggerRow{gap:8px}` に対応)。
|
|
70
|
-
相手プラグインの存在は知らず、値も参照しません —— 協調は各自の CSS 内だけで完結します。
|
|
71
|
-
- **レール表示への退避**: `wide=false` では `.dss_footerEntryRail`(36x36 の円、ラベルなし)になり、
|
|
72
|
-
Figma のレール仕様(56px レール / 10px パディング / 36x36 コントロール)と公式レールコントロールに一致します。
|
|
73
|
-
ラベルはワイド時のみ表示されます。
|
|
74
|
-
- **コピーの帰属修正**: コンポーネント内にハードコードされていた `'会话管家'` のフォールバックを削除し、
|
|
75
|
-
入口のラベルはパネル見出しと同じ出所(辞書 `panel.title`)になりました。
|
|
76
|
-
|
|
77
|
-
## 0.1.0-alpha.4
|
|
78
|
-
|
|
79
|
-
設定カードにドロワー形態を復元:従来は裸の行だけで、「プラグイン」設定セクション内の他プラグインと揃っていなかった。
|
|
80
|
-
|
|
81
|
-
### 修正
|
|
82
|
-
|
|
83
|
-
- **設定カードにドロワーの外殻が無い(重要)**:DSH の「プラグイン」設定セクション
|
|
84
|
-
(`dsh-client-ui-settings-plugins`)が行うのはただ一つ——settings 名前空間ごとに
|
|
85
|
-
`settings.plugin.item` を配ること:
|
|
86
|
-
|
|
87
|
-
renderSlot('settings.plugin.item', {}, { entryKey: ns })
|
|
88
|
-
|
|
89
|
-
外殻は**一切提供されない**。カードのタイトル・説明・開閉はすべてプラグイン自身の持ち物である。
|
|
90
|
-
本プラグインは裸の行しか描画していなかったため、二点が崩れていた:
|
|
91
|
-
1. セクション内の他プラグインの「折りたたみドロワー」と形態が揃わない;
|
|
92
|
-
2. `card.title`(セッション管家)と `card.desc`(履歴ファイル · 健康チェック)が
|
|
93
|
-
**定義されているのに一度も描画されない**死んだ文言になっていた——これが「欠けていたドロワー項目」。
|
|
94
|
-
|
|
95
|
-
ヘッダー(タイトル + 説明 + chevron、ブロック全体がクリック可能)を復元し、
|
|
96
|
-
本体は既定で折りたたむ(同セクションの他カードと同じ)。`aria-expanded` は開閉状態を反映する。
|
|
97
|
-
- **設定サービスが使えないときの挙動**:以前はカード全体が「設定サービスが利用できません」の一行に
|
|
98
|
-
退化し、**タイトルごと消えていた**。現在はドロワーヘッダーは通常どおり描画し、
|
|
99
|
-
理由は本体にのみ示す——このプラグインがセクションから完全に消えることはない。
|
|
100
|
-
|
|
101
|
-
### 変更
|
|
102
|
-
|
|
103
|
-
- 開閉の切替と chevron の回転は `prefers-reduced-motion` に従う。
|
|
104
|
-
|
|
105
|
-
## 0.1.0-alpha.3
|
|
106
|
-
|
|
107
|
-
健康チェック結果のキャッシュ:パネルを閉じて開き直すとゼロ遅延で内容が出て、処置後は該当行だけが更新される。
|
|
108
|
-
|
|
109
|
-
### 追加
|
|
110
|
-
|
|
111
|
-
- **健康チェック結果のキャッシュ(プロセス内)**:一度の完全スキャン(分割で語料を走り切る)の結果を
|
|
112
|
-
ホストプロセスに保持し、パネルを開き直すとキャッシュをそのまま描画する(全量再スキャンしない)。
|
|
113
|
-
キャッシュは**語料を一周し切ったときだけ**成立する——途中でパネルを閉じても、
|
|
114
|
-
半端な結果が完全な結論のふりをすることはない。
|
|
115
|
-
- **`resume` は純粋な読み取り**:`session-health-scan` に `resume: true` を追加。**キャッシュを読むだけでスキャンしない**。
|
|
116
|
-
パネルはマウント時にこれで一度だけゼロコストで探り、命中すれば内容を出し、外れれば何もしない
|
|
117
|
-
(マウント即重作業は前版で指摘された点)。同時に現在の語料総数も返す。
|
|
118
|
-
- **生成時刻と更新入口**:命中時は「結果はキャッシュ · N 分前」を表示し、「更新」を用意する
|
|
119
|
-
(強制的に全量再スキャン)。古い結果がスキャン直後のふりをすることはない。
|
|
120
|
-
- **語料変化の通知**:キャッシュ時の語料総数と現在が食い違うとき
|
|
121
|
-
「語料が変化しました(a → b)。更新を推奨」と表示。この突き合わせはディレクトリ列挙だけで安い
|
|
122
|
-
——だからキャッシュ失効戦略そのものにはならない。
|
|
123
|
-
|
|
124
|
-
### 変更
|
|
125
|
-
|
|
126
|
-
- **単条の書き戻し**:単一セッションの健康チェックと可逆処置の後は再スキャンに頼らない——
|
|
127
|
-
処置は既に `after` を再計算しているので、それをそのままキャッシュへ書き戻す。
|
|
128
|
-
パネルが一覧へ戻ったとき、その行は既に最新の段階になっている
|
|
129
|
-
(回復した行は消える。「問題のみ列挙」と一致)。
|
|
130
|
-
- キャッシュは**ディスクに書かない**:DSH 再起動で失効する。永続化には失効戦略が必要で、
|
|
131
|
-
失効判定のコスト(語料の列挙、ログの mtime/size 照合)は再スキャン自体に近い。本スライスは YAGNI。
|
|
132
|
-
|
|
133
|
-
### テスト
|
|
134
|
-
|
|
135
|
-
- `tests/cache.spec.ts` を新規追加(19 件):成立規則(未走破 / 走破 / 空語料 / 途中中断 / `clear`)、
|
|
136
|
-
単条書き戻しの全分岐(追加 / 置換 / 回復で除去 / no-op)、そして `handleMethod` の配線
|
|
137
|
-
(`resume` はスキャンしない、分割走破後の命中、`onlyProblems=false` はキャッシュを汚さない、
|
|
138
|
-
処置後書き戻しのオブジェクト同一性、cache 無しのランタイムでも動作)。
|
|
139
|
-
|
|
140
|
-
## 0.1.0-alpha.2
|
|
141
|
-
|
|
142
|
-
処置(処方)の判定と提示の修正:「判定不能」のゲートに処方せず、処置後の結論を明示する。
|
|
143
|
-
|
|
144
|
-
### 修正
|
|
145
|
-
|
|
146
|
-
- **`skipped` への誤処方(重要)**:`prescribe()` は従来 `level !== 'ok'` で投影キャッシュの隔離要否を
|
|
147
|
-
判定していたため、「本ゲートは判定不能」も「投影キャッシュ未整合」と見なされ、
|
|
148
|
-
自身の根拠と矛盾する処方を出し、**存在しない**記録の隔離を提案していた。
|
|
149
|
-
共有述語 `isActionable()`(`warn` / `fail` のみ処置可能)を抽出して一本化。
|
|
150
|
-
`gates.ts` の段階基準と `repair.ts` の処置基準がこれで同一の意味になる。
|
|
151
|
-
- **「四門全緑」の誤報**:処置項目が無いとき固定で「四門全緑」と表示していた。
|
|
152
|
-
ゲートが `skipped`(判定不能であり緑ではない)のときこの文言は成立しない。
|
|
153
|
-
「処置項目なし(N ゲートは判定不能、異常ではない):<ゲート id 一覧>」に変更。
|
|
154
|
-
- **処置後も異常と表示され、処置が効いたか分からない**:パネルは「処置前 / 処置後」の段階のみを
|
|
155
|
-
描画していたため、両方が異常のとき「処置失敗」と「処置が病巣と無関係」を区別できなかった。
|
|
156
|
-
ホストに `assessRepair({ before, after, repair })` を追加し、5 段階のいずれかと人向け説明を返す:
|
|
157
|
-
`nothing-to-do`(四門全緑)/ `repaired`(回復)/ `repaired-with-residual`(キャッシュは隔離したが
|
|
158
|
-
キャッシュと無関係の異常が残存、例:セッションログの open step)/
|
|
159
|
-
`not-applicable`(現在の異常に可逆処置項目が無い)/ `failed`(処置自体の失敗)。
|
|
160
|
-
パネルは段階ごとの配色で結論バナーを描画する。
|
|
161
|
-
|
|
162
|
-
### 説明
|
|
163
|
-
|
|
164
|
-
- **処置能力は不変**:「投影キャッシュ記録の隔離のみ、コピー後に移動、セッションログは改変しない」。
|
|
165
|
-
今回は**判定**と**提示**のみを修正した。典型例は「`cold-read` のみ異常
|
|
166
|
-
(セッションに未決済の open step がある)」——これは本来本プラグインが修復すべき異常ではなく、
|
|
167
|
-
現在は `not-applicable` と明示して理由を説明する。黙って「処置後も異常」とは表示しない。
|
|
168
|
-
|
|
169
|
-
### テスト
|
|
170
|
-
|
|
171
|
-
- `tests/repair.spec.ts` を新規追加(12 件):`isActionable` の 4 段階、`prescribe` が空の処方を
|
|
172
|
-
出さないこと、`assessRepair` の 5 段階判定の分岐を網羅。
|
|
173
|
-
|
|
174
|
-
## 0.1.0-alpha.1
|
|
175
|
-
|
|
176
|
-
健康チェックパネルの判定とフィードバックの修正:「注意」の全件誤報を解消し、スキャン進捗と行内の理由を追加。
|
|
177
|
-
|
|
178
|
-
### 修正
|
|
179
|
-
|
|
180
|
-
- **「注意」の全件誤報(重要)**:`lossless-json` / `projection-cache` / `cold-read` の 3 ゲートが
|
|
181
|
-
**判定不能**のとき(コールドセッションにホット投影が無い、キャッシュ記録が未生成、
|
|
182
|
-
ログに turn/end が無い)に `warn` を返していたため、**未ロードの全セッションが常に「注意」**
|
|
183
|
-
となり、本当のシグナルがノイズに埋もれていた。
|
|
184
|
-
中性段階 `skipped`(パネル表記は「未チェック」)を追加し、「観測不能」を担わせ、
|
|
185
|
-
**総合判定には寄与させない**。
|
|
186
|
-
固定した基準:`warn` = 異常現象を観測(根拠あり)/`skipped` = 観測不能・判定不能(根拠なし)。
|
|
187
|
-
実測:30 セッションが「30×注意」→「26 正常 / 3 注意 / 1 異常」。
|
|
188
|
-
- **一覧行に原因が出ない**:結果一覧は総合段階のみを描画し、行同士が区別できなかった。
|
|
189
|
-
非 ok の「ゲート·段階」要約(例 `可接続性·注意`)を行内に表示し、個別に開く必要をなくした。
|
|
190
|
-
|
|
191
|
-
### 追加
|
|
192
|
-
|
|
193
|
-
- **スキャン進捗**:`session-health-scan` が `offset` による分割呼び出しに対応し `total` を返す。
|
|
194
|
-
パネルは小バッチで連続呼び出しし、**実進捗**(`n/total · 経過 Xs`)を自前で累積する。
|
|
195
|
-
分母が未取得の初回は不確定アニメーション。ホストは無状態のままで、同期ループの非同期化は不要。
|
|
196
|
-
- **処置のビジー表示**:可逆処置ボタンにスピナーを追加し、無効状態を維持。
|
|
197
|
-
|
|
198
|
-
### 変更
|
|
199
|
-
|
|
200
|
-
- **タブ名変更**:`病案室` → `養老院`(英語 `Records Room` → `Retirement Home`)。
|
|
201
|
-
「健康チェック / 処方 / 退院」のメタファーと統一。
|
|
202
|
-
|
|
203
|
-
## 0.1.0-alpha.0
|
|
204
|
-
|
|
205
|
-
最初の alpha 版:セッション・スチュワード(履歴ファイル + 健康チェック)。
|
|
206
|
-
|
|
207
|
-
### 追加
|
|
208
|
-
|
|
209
|
-
- **セッション履歴ファイル(カルテ室)**:`dsh-session-search-toggle` から公式アーカイブ集合の読み取りとクリーンアップの実装を移入し、
|
|
210
|
-
挙動は移行前と等価(バックアップ + 同一ディレクトリへの一時書き込み + アトミック置換。明示的な編集モードでのみクリーンアップを許可)。
|
|
211
|
-
差分:一覧の取得元を**公式アーカイブ集合の真値**(registry 優先、ストレージファイルにフォールバック)に変更。独立インデックスは検索インデックスパッケージとともに離れたため。
|
|
212
|
-
タイトルなどのメタデータはベストエフォート(`sessionQuery` のタイトルスナップショット → プロジェクションキャッシュの title → 空)。
|
|
213
|
-
- **健康チェック(健診 → 処方 → 退院)**:独立にテスト可能な四つのゲート
|
|
214
|
-
(`log-integrity` / `projection-cache` / `lossless-json` / `cold-read`)を備え、
|
|
215
|
-
統一の出力 `{ id, level, evidence, attribution, detail }`、集約結果は `SessionHealthReport`。
|
|
216
|
-
- **帰属インデックス**:profile の `node_modules/<pkg>/lib/*.js` を静的に走査して「プロジェクション key → パッケージ名」を構築し、
|
|
217
|
-
失敗したゲートを具体的なプラグインとフィールドパスに紐付ける。走査できない場合は正直に `unknown` と表示する。
|
|
218
|
-
- **可逆的な処方**:破損したプロジェクションキャッシュのレコードを隔離(先にコピーでバックアップし、`.quarantine-<ts>` へ移動)+ コマンド一覧。
|
|
219
|
-
**禁止**事項:セッションログの書き換え、履歴データの変更、フィールドの暗黙的な破棄。
|
|
220
|
-
- **二つの feature gate**:`historyFiles` / `healthCheck`。オフのときは対応するサブドメイン全体が登録されず(明示的な disabled エラー)、
|
|
221
|
-
クライアントも対応するタブを描画しない。
|
|
222
|
-
- **ルート**:`/session-steward/api/*`。メソッド名は一律 `session-*` で、検索インデックスの `/switch-search/api` の `index-*` とは完全に分離。
|
|
223
|
-
|
|
224
|
-
### 既知の制限
|
|
225
|
-
|
|
226
|
-
- `lossless-json` ゲートは、ホストが `sessionProjections`(ホット状態)を公開している場合にのみ確定判定を下せる。
|
|
227
|
-
取得できないときは正直に `warn` へ降格し、推測はしない。
|
|
228
|
-
- 健康スキャンは既定で直近 30 件の非健康セッションのみを列挙する(`limit` の上限は 200)。全件走査は既定の挙動としない。
|
|
229
|
-
- クライアントパネルは最小実装(一覧 + 詳細 + 三ステップのボタン)で、仮想スクロールと一括操作は未実装。
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
`dsh-session-steward` 0.5.7 から複製・改名した独立パッケージの初版です(旧パッケージの履歴は
|
|
6
|
+
そのリポジトリの CHANGELOG を参照)。本パッケージの位置づけは**セッションマネージャー**:
|
|
7
|
+
アクティブ/アーカイブ済みセッションの統合管理と全文検索。
|
|
8
|
+
|
|
9
|
+
### 位置づけと命名
|
|
10
|
+
|
|
11
|
+
- パッケージ名 / プラグイン id:`dsh-session-steward` → `dsh-manage-session`。表示名:セッション管理(9 言語同期)。
|
|
12
|
+
- 設定名前空間:`session-steward` → `manage-session`、`switch-search` → `manage-session-search`。
|
|
13
|
+
- ルート接頭辞:`/session-steward/api` → `/manage-session/api`、`/switch-search/api` → `/manage-session-search/api`。
|
|
14
|
+
- ストレージ:索引・墓碑の既定ディレクトリ `~/.dsh-switch-search` → `~/.dsh-manage-session-index`、
|
|
15
|
+
お気に入り `session-steward-favorites.json` → `manage-session-favorites.json`(旧パッケージと干渉しません)。
|
|
16
|
+
- スタイル接頭辞 `dss_`/`dsws_` → `dms_`/`dmss_`。スタイルシート id と data 属性も改名。
|
|
17
|
+
|
|
18
|
+
### 新規:入口の位置(上部ツール枠 / 下部フォールバック)
|
|
19
|
+
|
|
20
|
+
- ホストが上部ツール行(`sidebar.panellist` パネル行 + `main` ページ枠)を宣言している場合、
|
|
21
|
+
検索と管理の 2 つの入口を**パネル行**として「プラグイン」行の直後、「その他」ランチャーの手前
|
|
22
|
+
(order 5 / 6)に配置し、クリックでメイン列に全ページ表示。ページ内「閉じる」で会話に戻ります。
|
|
23
|
+
- その枠が無いホスト(旧ライン/簡易レイアウト)ではサイドバー下部(`sidebar.footer.action`)に
|
|
24
|
+
フォールバックし、フローティングダイアログを開きます。
|
|
25
|
+
- 判定はロード時(`slots.specDynamic` で両席を確認)。枠が後から現れた場合は下部入口を外して上部へ切替。
|
|
26
|
+
- パネル行/ページは設定スイッチ(`enabled` / `search` / `healthCheck`)に連動し、切替は即時反映。
|
|
27
|
+
|
|
28
|
+
### 付随変更
|
|
29
|
+
|
|
30
|
+
- パネルに全ページ形態(`variant: 'page'`)を追加:遮罩と浮動配置を外しメイン列を埋めます。ダイアログ形態は不変。
|
|
31
|
+
- ドキュメント刷新:README / INSTALL を 4 言語で同期(位置づけ・入口・ルート・設定表)。互換節は
|
|
32
|
+
`scripts/sync-hosts.mjs` の単一ソース生成のまま。
|
|
33
|
+
- 対応ホストのホワイトリストは不変:`engines.dsh` は 0.1.0-rc.2 〜 0.2.1-rc.3 の rc 列挙。
|
package/CHANGELOG.ko.md
CHANGED
|
@@ -1,229 +1,33 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
## 0.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
###
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
제1자 구형 행만 있는 로그는 기록하지 않음. 30명 대조 테스트와 호스트 공식
|
|
35
|
-
디코더 재독 단언 추가(161 테스트 전부 통과).
|
|
36
|
-
|
|
37
|
-
### 강화 —— R2:purge 측 서명 변환 백업 인식
|
|
38
|
-
|
|
39
|
-
- 통계와 정리 양 경로에서 `*.pre-sourcemigrate-<ts>` 백업을 인식: 통계는 행마다
|
|
40
|
-
`backupBytes`/`backupCount` 추가(`bytes`의 부분집합, 단열로 오독 방지),
|
|
41
|
-
정리 결과에 `backupsRemoved` 추가. 회귀 6건 추가, 전체 167 테스트.
|
|
42
|
-
|
|
43
|
-
## 0.1.0-alpha.6
|
|
44
|
-
|
|
45
|
-
### 수정 — 아이콘과 레이블 간격 축소, 좁은 사이드바에서 이웃을 밀어내지 않음
|
|
46
|
-
|
|
47
|
-
- **간격 8px → 4px**: 🧭 와 「세션 스튜어드」 사이를 실측에 따라 좁혔습니다(사용자 피드백
|
|
48
|
-
「icon 과 글자 간격을 작게」). 아울러 자체 좌우 패딩을 `0 12px 0 10px` →
|
|
49
|
-
`0 10px 0 8px` 로 맞춰 옆의 「검색」 필과 동일하게 했습니다.
|
|
50
|
-
- **스스로 줄어듭니다**: `.dss_entryWrap` 을 `flex:none` → `flex:0 1 auto; min-width:0` 으로 바꾸고
|
|
51
|
-
바깥 왼쪽 여백을 `8px → 6px`. 이전에는 전혀 양보하지 않아 부족분이 전부 검색 필에 얹혔고,
|
|
52
|
-
상대 레이블을 한 글자로 만들었습니다. 이제는 부족분을 스스로 떠안습니다(레이블은 말줄임표로 끝맺음).
|
|
53
|
-
- **레일 치수는 28×28 로 복귀**: 레일 내용 상자는 36px 뿐이라(56px 레일 − 좌우 10px)
|
|
54
|
-
36×36 컨트롤 두 개는 들어가지 않습니다(실측 36+28=64px, 14px 넘침).
|
|
55
|
-
28+28=56px 로 하여 변경 전의 32+28=60px 보다 좁혔습니다.
|
|
56
|
-
- **협조 경계는 그대로**: 오직 자체 CSS 만 바꾸고, 검색 인덱스의 값을 참조하지 않으며,
|
|
57
|
-
설치 여부도 가정하지 않습니다.
|
|
58
|
-
|
|
59
|
-
## 0.1.0-alpha.5
|
|
60
|
-
|
|
61
|
-
### 변경 — 사이드바 진입점에 레이블 추가, 「검색 인덱스」와 같은 행에서 조화
|
|
62
|
-
|
|
63
|
-
- **진입점에 이름이 생겼습니다**: 하단 진입점은 28x28 아이콘 원형 버튼(🧭)뿐이어서 무엇인지 알 수 없었습니다.
|
|
64
|
-
넓은 사이드바에서는 42px 행 컨트롤 **🧭 세션 스튜어드**가 되어, 옆의 「검색」 필과 같은 높이 ·
|
|
65
|
-
같은 모서리 반경(12px) · 같은 글자 크기를 씁니다.
|
|
66
|
-
- **같은 행의 지오메트리 협조**: 검색 진입점이 `flex:1;min-width:0`을 선언해 행 전체를 차지하지 않게 되어,
|
|
67
|
-
두 진입점은 `sidebar.footer.action`의 형제 요소로 같은 행에 놓입니다. 이 진입점은 넓은 모드에서
|
|
68
|
-
`margin-left:8px`로 간격을 만듭니다(공식 `ui-settings-general`의 `.triggerRow{gap:8px}`에 대응).
|
|
69
|
-
상대 플러그인의 존재를 알지도, 값을 참조하지도 않습니다 — 협조는 각자의 CSS 안에서만 일어납니다.
|
|
70
|
-
- **레일 표시로의 축소**: `wide=false`에서는 `.dss_footerEntryRail`(36x36 원, 레이블 없음)이 되어
|
|
71
|
-
Figma 레일 규격(56px 레일 / 10px 패딩 / 36x36 컨트롤)과 공식 레일 컨트롤에 맞춥니다.
|
|
72
|
-
레이블은 넓은 모드에서만 나타납니다.
|
|
73
|
-
- **문구 소유권 수정**: 컴포넌트에 하드코딩된 `'会话管家'` 폴백을 제거하고, 진입점 레이블을
|
|
74
|
-
패널 제목과 같은 출처(사전 `panel.title`)로 옮겼습니다.
|
|
75
|
-
|
|
76
|
-
## 0.1.0-alpha.4
|
|
77
|
-
|
|
78
|
-
설정 카드에 서랍(드로어) 형태를 복원: 이전에는 맨 행만 있어 「플러그인」 설정 섹션의 다른 플러그인과 일치하지 않았다.
|
|
79
|
-
|
|
80
|
-
### 수정
|
|
81
|
-
|
|
82
|
-
- **설정 카드에 드로어 외피가 없음(중요)**: DSH 의 「플러그인」 설정 섹션
|
|
83
|
-
(`dsh-client-ui-settings-plugins`)이 하는 일은 단 하나——settings 네임스페이스별로
|
|
84
|
-
`settings.plugin.item` 을 배포하는 것:
|
|
85
|
-
|
|
86
|
-
renderSlot('settings.plugin.item', {}, { entryKey: ns })
|
|
87
|
-
|
|
88
|
-
외피는 **전혀 제공되지 않는다**. 카드의 제목·설명·펼침/접힘은 모두 플러그인 자신의 소유다.
|
|
89
|
-
이 플러그인은 맨 행만 렌더링했기 때문에 두 가지가 어긋났다:
|
|
90
|
-
1. 섹션 안 다른 플러그인의 「접이식 드로어」와 형태가 맞지 않음;
|
|
91
|
-
2. `card.title`(세션 스튜어드)과 `card.desc`(이력 파일 · 상태 점검)가
|
|
92
|
-
**정의만 되고 한 번도 렌더링되지 않는** 죽은 문구가 됨——이것이 「빠진 드로어 항목」.
|
|
93
|
-
|
|
94
|
-
이제 헤더(제목 + 설명 + chevron, 블록 전체 클릭 가능)를 복원하고
|
|
95
|
-
본문은 기본적으로 접힌다(같은 섹션의 다른 카드와 동일). `aria-expanded` 는 펼침 상태를 반영한다.
|
|
96
|
-
- **설정 서비스를 쓸 수 없을 때의 동작**: 이전에는 카드 전체가 「설정 서비스를 사용할 수 없음」 한 줄로
|
|
97
|
-
퇴화하며 **제목까지 사라졌다**. 이제는 드로어 헤더를 정상적으로 렌더링하고
|
|
98
|
-
사유는 본문에만 표시한다——이 플러그인이 섹션에서 완전히 사라지지 않는다.
|
|
99
|
-
|
|
100
|
-
### 변경
|
|
101
|
-
|
|
102
|
-
- 펼침 전환과 chevron 회전은 `prefers-reduced-motion` 을 따른다.
|
|
103
|
-
|
|
104
|
-
## 0.1.0-alpha.3
|
|
105
|
-
|
|
106
|
-
상태 점검 결과 캐시: 패널을 닫았다 열면 지연 없이 내용이 나오고, 처치 후에는 그 행만 갱신된다.
|
|
107
|
-
|
|
108
|
-
### 추가
|
|
109
|
-
|
|
110
|
-
- **상태 점검 결과 캐시(프로세스 내)**: 한 번의 완전 스캔(분할로 말뭉치를 끝까지 도는 것) 결과를
|
|
111
|
-
호스트 프로세스에 보관하고, 패널을 다시 열면 캐시를 그대로 렌더링한다(전량 재스캔 없음).
|
|
112
|
-
캐시는 **말뭉치를 한 바퀴 다 돌았을 때만** 성립한다——중간에 패널을 닫아도
|
|
113
|
-
반쪽 결과가 완전한 결론인 척하지 않는다.
|
|
114
|
-
- **`resume` 은 순수 읽기**: `session-health-scan` 에 `resume: true` 를 추가. **캐시만 읽고 스캔하지 않는다**.
|
|
115
|
-
패널은 마운트 시 이것으로 한 번만 무비용 탐색하고, 적중하면 내용을 내고 빗나가면 아무것도 하지 않는다
|
|
116
|
-
(마운트 즉시 중작업은 이전 버전에서 지적된 지점). 동시에 현재 말뭉치 총수를 돌려준다.
|
|
117
|
-
- **생성 시각과 갱신 입구**: 적중 시 「결과는 캐시 · N분 전」을 표시하고 「새로 고침」을 제공한다
|
|
118
|
-
(강제 전량 재스캔). 오래된 결과가 방금 스캔한 척하지 않는다.
|
|
119
|
-
- **말뭉치 변화 알림**: 캐시 시점의 말뭉치 총수와 현재가 다르면
|
|
120
|
-
「말뭉치가 변했습니다(a → b). 새로 고침을 권장」을 표시. 이 대조는 디렉터리 열거만 하므로 저렴하다
|
|
121
|
-
——따라서 캐시 무효화 전략 자체가 되지는 않는다.
|
|
122
|
-
|
|
123
|
-
### 변경
|
|
124
|
-
|
|
125
|
-
- **단건 되쓰기**: 단일 세션 상태 점검과 가역 처치 후에는 재스캔에 의존하지 않는다——
|
|
126
|
-
처치는 이미 `after` 를 재계산하므로 그것을 그대로 캐시에 되쓴다.
|
|
127
|
-
패널이 목록으로 돌아왔을 때 그 행은 이미 최신 단계다
|
|
128
|
-
(회복된 행은 사라진다. 「문제만 나열」과 일치).
|
|
129
|
-
- 캐시는 **디스크에 쓰지 않는다**: DSH 재시작 시 무효. 영속화에는 무효화 전략이 필요하고,
|
|
130
|
-
무효 판정 비용(말뭉치 열거, 로그 mtime/size 대조)은 재스캔 자체에 가깝다. 이번 슬라이스는 YAGNI.
|
|
131
|
-
|
|
132
|
-
### 테스트
|
|
133
|
-
|
|
134
|
-
- `tests/cache.spec.ts` 신규 추가(19건): 성립 규칙(미완주 / 완주 / 빈 말뭉치 / 중도 중단 / `clear`),
|
|
135
|
-
단건 되쓰기의 모든 분기(추가 / 교체 / 회복으로 제거 / no-op), 그리고 `handleMethod` 배선
|
|
136
|
-
(`resume` 은 스캔하지 않음, 분할 완주 후 적중, `onlyProblems=false` 는 캐시를 오염시키지 않음,
|
|
137
|
-
처치 후 되쓰기의 객체 동일성, cache 없는 런타임에서도 동작).
|
|
138
|
-
|
|
139
|
-
## 0.1.0-alpha.2
|
|
140
|
-
|
|
141
|
-
처치(처방)의 판정과 표시 수정: 「판정 불가」 게이트에 처방하지 않고, 처치 후의 결론을 명시한다.
|
|
142
|
-
|
|
143
|
-
### 수정
|
|
144
|
-
|
|
145
|
-
- **`skipped` 에 대한 오처방(중요)**: `prescribe()` 는 기존에 `level !== 'ok'` 로 프로젝션 캐시
|
|
146
|
-
격리 여부를 판단했기 때문에, 「이 게이트는 판정 불가」도 「프로젝션 캐시 미정합」으로 간주되어
|
|
147
|
-
자신의 근거와 모순되는 처방을 내고 **존재하지 않는** 기록의 격리를 제안했다.
|
|
148
|
-
공유 술어 `isActionable()`(`warn` / `fail` 만 처치 가능)을 추출해 일원화했다.
|
|
149
|
-
`gates.ts` 의 단계 기준과 `repair.ts` 의 처치 기준이 이제 같은 의미가 된다.
|
|
150
|
-
- **「사문 전록」 오탐**: 처치 항목이 없을 때 고정으로 「사문 전록(四門全綠)」을 표시했다.
|
|
151
|
-
게이트가 `skipped`(판정 불가이며 녹색이 아님)일 때 이 문구는 성립하지 않는다.
|
|
152
|
-
「처치 항목 없음(N 게이트 판정 불가, 이상 아님): <게이트 id 목록>」으로 변경했다.
|
|
153
|
-
- **처치 후에도 이상으로 표시되어 처치가 효과가 있었는지 알 수 없음**: 패널은 「처치 전 / 처치 후」의
|
|
154
|
-
단계만 렌더링했기 때문에 둘 다 이상일 때 「처치 실패」와 「처치가 병소와 무관」을 구분할 수 없었다.
|
|
155
|
-
호스트에 `assessRepair({ before, after, repair })` 를 추가해 5단계 중 하나와 사람용 설명을 반환한다:
|
|
156
|
-
`nothing-to-do`(사문 전록) / `repaired`(회복) / `repaired-with-residual`(캐시는 격리했으나
|
|
157
|
-
캐시와 무관한 이상이 잔존, 예: 세션 로그의 open step) /
|
|
158
|
-
`not-applicable`(현재 이상에 가역 처치 항목이 없음) / `failed`(처치 자체의 실패).
|
|
159
|
-
패널은 단계별 배색으로 결론 배너를 렌더링한다.
|
|
160
|
-
|
|
161
|
-
### 설명
|
|
162
|
-
|
|
163
|
-
- **처치 능력은 불변**: 「프로젝션 캐시 기록의 격리만, 복사 후 이동, 세션 로그는 개서하지 않음」.
|
|
164
|
-
이번에는 **판정**과 **표시**만 수정했다. 대표적 사례는 「`cold-read` 만 이상
|
|
165
|
-
(세션에 미결제 open step 이 있음)」——이는 본래 이 플러그인이 복구할 대상이 아니며,
|
|
166
|
-
이제는 `not-applicable` 로 명시하고 사유를 설명한다. 조용히 「처치 후에도 이상」으로
|
|
167
|
-
표시하지 않는다.
|
|
168
|
-
|
|
169
|
-
### 테스트
|
|
170
|
-
|
|
171
|
-
- `tests/repair.spec.ts` 신규 추가(12건): `isActionable` 의 네 단계, `prescribe` 가 빈 처방을 내지
|
|
172
|
-
않음, `assessRepair` 5단계 판정의 분기를 커버.
|
|
173
|
-
|
|
174
|
-
## 0.1.0-alpha.1
|
|
175
|
-
|
|
176
|
-
상태 점검 패널의 판정과 피드백 수정: 「주의」 전량 오탐을 해소하고 스캔 진행률과 행 내 사유를 추가.
|
|
177
|
-
|
|
178
|
-
### 수정
|
|
179
|
-
|
|
180
|
-
- **「주의」 전량 오탐(중요)**: `lossless-json` / `projection-cache` / `cold-read` 세 게이트가
|
|
181
|
-
**판정 불가**일 때(콜드 세션에 핫 프로젝션이 없음, 캐시 기록 미생성, 로그에 turn/end 없음)
|
|
182
|
-
`warn` 을 반환하여 **로드되지 않은 모든 세션이 항상 「주의」** 가 되고 실제 신호가 노이즈에
|
|
183
|
-
묻혔다. 중립 단계 `skipped`(패널 표기는 「미점검」)를 추가하여 「관측 불가」를 담당하게 하고
|
|
184
|
-
**총합 판정에 기여하지 않게** 했다.
|
|
185
|
-
고정한 기준: `warn` = 이상 현상을 관측(근거 있음) / `skipped` = 관측·판정 불가(근거 없음).
|
|
186
|
-
실측: 30개 세션이 「30×주의」 → 「26 정상 / 3 주의 / 1 이상」.
|
|
187
|
-
- **목록 행에 사유 미표시**: 결과 목록이 총합 단계만 렌더링해 행끼리 구분되지 않았다.
|
|
188
|
-
비정상(non-ok) 「게이트·단계」 요약(예 `연결성·주의`)을 행 안에 표시하여 개별로 열 필요를 없앴다.
|
|
189
|
-
|
|
190
|
-
### 추가
|
|
191
|
-
|
|
192
|
-
- **스캔 진행률**: `session-health-scan` 이 `offset` 분할 호출을 지원하고 `total` 을 반환한다.
|
|
193
|
-
패널은 소배치로 연속 호출해 **실제 진행률**(`n/total · 경과 Xs`)을 자체 누적한다.
|
|
194
|
-
분모를 아직 받지 못한 첫 회차는 불확정 애니메이션. 호스트는 무상태를 유지하며
|
|
195
|
-
동기 루프를 비동기로 바꿀 필요가 없다.
|
|
196
|
-
- **처치 비지 표시**: 가역 처치 버튼에 스피너를 추가하고 비활성 상태를 유지.
|
|
197
|
-
|
|
198
|
-
### 변경
|
|
199
|
-
|
|
200
|
-
- **탭 이름 변경**: `病案室` → `養老院`(영어 `Records Room` → `Retirement Home`).
|
|
201
|
-
「상태 점검 / 처방 / 퇴원」 메타포와 통일.
|
|
202
|
-
|
|
203
|
-
## 0.1.0-alpha.0
|
|
204
|
-
|
|
205
|
-
첫 번째 alpha 버전: 세션 스튜어드(히스토리 파일 + 상태 점검).
|
|
206
|
-
|
|
207
|
-
### 추가
|
|
208
|
-
|
|
209
|
-
- **세션 히스토리 파일(기록 보관소)**: `dsh-session-search-toggle`에서 공식 아카이브 집합의 읽기 및 정리 구현을 이관했으며,
|
|
210
|
-
동작은 이관 전과 동등합니다(백업 + 동일 디렉터리 임시 쓰기 + 원자적 교체; 명시적 편집 모드에서만 정리 허용).
|
|
211
|
-
차이점: 목록 출처가 **공식 아카이브 집합 진값**으로 변경되었습니다(registry 우선, 스토리지 파일 폴백). 독립 인덱스가 검색 인덱스 패키지와 함께 떠났기 때문입니다;
|
|
212
|
-
제목 등 메타데이터는 최선 노력 방식입니다(`sessionQuery` 제목 스냅샷 → 프로젝션 캐시 title → 비어 있음).
|
|
213
|
-
- **상태 점검(점검 → 처방 → 퇴원)**: 독립적으로 테스트 가능한 네 개의 gate
|
|
214
|
-
(`log-integrity` / `projection-cache` / `lossless-json` / `cold-read`),
|
|
215
|
-
통일된 출력 `{ id, level, evidence, attribution, detail }`; `SessionHealthReport`로 집계됩니다.
|
|
216
|
-
- **귀속 인덱스**: 프로필의 `node_modules/<pkg>/lib/*.js`를 정적 스캔하여 「프로젝션 key → 패키지 이름」을 구축하고,
|
|
217
|
-
실패한 gate를 구체적인 플러그인과 필드 경로로 되돌려 지목합니다; 찾지 못하면 사실대로 `unknown`으로 표기합니다.
|
|
218
|
-
- **되돌릴 수 있는 처방**: 손상된 프로젝션 캐시 레코드 격리(먼저 복사 백업, 그다음 `.quarantine-<ts>`로 이동) + 명령 목록.
|
|
219
|
-
세션 로그 재작성, 히스토리 데이터 변경, 필드 무단 삭제는 **금지**합니다.
|
|
220
|
-
- **두 개의 feature gate**: `historyFiles` / `healthCheck`, 꺼지면 해당 하위 도메인 전체가 등록되지 않고(명시적 disabled 오류),
|
|
221
|
-
클라이언트도 해당 탭을 렌더링하지 않습니다.
|
|
222
|
-
- **라우트**: `/session-steward/api/*`, 메서드 이름은 일괄 `session-*`이며, 검색 인덱스의 `/switch-search/api`의 `index-*`와 완전히 격리됩니다.
|
|
223
|
-
|
|
224
|
-
### 알려진 제한
|
|
225
|
-
|
|
226
|
-
- `lossless-json` gate는 호스트가 `sessionProjections`(핫 상태)를 노출해야 확정 판정을 내릴 수 있습니다;
|
|
227
|
-
얻지 못하면 사실대로 `warn`으로 강등하며, 추측하지 않습니다.
|
|
228
|
-
- 상태 스캔은 기본적으로 최근 30개의 비정상 세션만 나열하며(`limit` 상한 200), 전체 라이브러리 순회를 기본 동작으로 삼지 않습니다.
|
|
229
|
-
- 클라이언트 패널은 최소 구현(목록 + 상세 + 3단계 버튼)이며, 가상 스크롤과 일괄 작업은 구현하지 않았습니다.
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
`dsh-session-steward` 0.5.7에서 복제·개명한 독립 패키지의 첫 버전입니다(구 패키지 이력은 해당
|
|
6
|
+
저장소 CHANGELOG 참조). 이 패키지의 정체성은 **세션 매니저**: 활성·보관 세션의 통합 관리와 전문 검색.
|
|
7
|
+
|
|
8
|
+
### 정체성과 이름
|
|
9
|
+
|
|
10
|
+
- 패키지명 / 플러그인 id: `dsh-session-steward` → `dsh-manage-session`. 표시 이름: 세션 관리(9개 언어 동기화).
|
|
11
|
+
- 설정 네임스페이스: `session-steward` → `manage-session`, `switch-search` → `manage-session-search`.
|
|
12
|
+
- 라우트 접두사: `/session-steward/api` → `/manage-session/api`, `/switch-search/api` → `/manage-session-search/api`.
|
|
13
|
+
- 저장소: 색인·묘비 기본 디렉터리 `~/.dsh-switch-search` → `~/.dsh-manage-session-index`,
|
|
14
|
+
즐겨찾기 `session-steward-favorites.json` → `manage-session-favorites.json`(구 패키지와 충돌 없음).
|
|
15
|
+
- 스타일 접두사 `dss_`/`dsws_` → `dms_`/`dmss_`. 스타일시트 id와 data 속성도 개명.
|
|
16
|
+
|
|
17
|
+
### 신규: 진입점 위치(상단 도구 슬롯 / 하단 대체)
|
|
18
|
+
|
|
19
|
+
- 호스트가 상단 도구 행(`sidebar.panellist` 패널 행 + `main` 페이지 슬롯)을 선언하면 검색·관리 두
|
|
20
|
+
진입점이 **패널 행**으로 「플러그인」 행 바로 뒤, 「더 보기」 런처 앞(order 5/6)에 놓이고 클릭 시
|
|
21
|
+
메인 열에 전체 페이지로 열립니다. 페이지의 「닫기」는 대화로 복귀합니다.
|
|
22
|
+
- 해당 슬롯이 없는 호스트(구버전/간소 레이아웃)는 사이드바 하단(`sidebar.footer.action`)으로 대체되어
|
|
23
|
+
플로팅 대화상자를 엽니다.
|
|
24
|
+
- 판정은 로드 시점(`slots.specDynamic`로 두 좌석 확인). 슬롯이 늦게 생기면 하단 진입점을 제거하고 상단 전환.
|
|
25
|
+
- 패널 행/페이지는 설정 스위치(`enabled` / `search` / `healthCheck`)와 연동되어 즉시 반영됩니다.
|
|
26
|
+
|
|
27
|
+
### 부수 변경
|
|
28
|
+
|
|
29
|
+
- 패널에 전체 페이지 형태(`variant: 'page'`) 추가: 오버레이·부동 배치를 제거하고 메인 열을 채웁니다.
|
|
30
|
+
대화상자 형태는 그대로입니다.
|
|
31
|
+
- 문서 개편: README / INSTALL 4개 언어 동기화(정체성·진입점·라우트·설정 표). 호환 절은
|
|
32
|
+
`scripts/sync-hosts.mjs` 단일 소스 생성 유지.
|
|
33
|
+
- 지원 호스트 화이트리스트 불변: `engines.dsh`는 0.1.0-rc.2 ~ 0.2.1-rc.3 rc 열거.
|