dsh-session-guard 4.1.16 → 4.2.1

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 CHANGED
@@ -11,6 +11,25 @@
11
11
  - [Changelog на русском](./CHANGELOG.ru.md)
12
12
  - [Changelog en español](./CHANGELOG.es.md)
13
13
 
14
+ ## 4.2.1 — 2026-10-17(ホスト列挙の更新:0.2.1-rc.1 を追加)
15
+
16
+ ### Fixed
17
+ - `engines.dsh` と 4 つの `@deepseek-ai/dsh-client-*` peer に `|| 0.2.1-rc.1` を追加(16 ホストの正確な列挙)。ホスト互換ゲートが DSH `0.2.1-rc.1` を受け入れるように。
18
+ - `dsh.plugin.json` の `engines.dsh` を同じ 16 ホスト列挙に統一(従来は範囲 `>=0.2.0-rc.1 <0.2.1-0`。ゲートは `package.json` のみを読むが、両リストは一致すべき)。
19
+ - README の互換記述を列挙に同期(zh/de/es/fr/it/ru)。このリリースに動作変更はありません。
20
+
21
+ ## 4.2.0 — 2026-10-17
22
+
23
+ ### 追加
24
+ - 法定祝日対応(src/holidays.js + src/holiday-store.js)。内置 2026 確定スナップショット:39 行 = 33 休日 + 6 振替出勤日(出典 holiday-cn、国務院公告)。厳格 parse(ゼロ埋め日付、isOffDay 真偽、跨年拒否);判定字段のみ sha256 指紋(上流の文言/順序変更は偽差異を出さない)。キャッシュファイル $DSH_HOME/.dsh/session-guard/holidays/<year>.json はロード時に指紋照合、不一致は破棄して内置フォールバック + 再取得。自動更新:起動時 + 每小时 ensureFresh;対象年は北京当年、11/12 月は翌年も(年末公告はリリース無しで反映);jsDelivr 主 / raw.githubusercontent 副、10s タイムアウト;指紋変化時のみ原子的書込;24h 再取得抑制;全链路 fail-open。DSH_SESSION_GUARD_HOLIDAY_FETCH=0 で離线内置固定。
25
+ - 宣言式開关 holidayMode / holidayAutoFetch(どちらも既定 ON)。/session-guard/status に holidayMode + holidays[](年/出典/指紋/取得时刻/件数)を追加。
26
+
27
+ ### 変更
28
+ - weekendMode を休息日语义へ昇格:法定祝日は终日オフピーク、振替出勤周末は通常どおりピーク判定、nextOffPeakInstant の先読み 7 -> 14 日で表対応。holidayMap は readCfg 経由で cfg に載り、shouldPause 消费链(scheduler tick / request-guard / step-gate / wiring)はシグネチャ不変で自动生效。
29
+
30
+ ### 修正
31
+ - family claim rank 1 -> 2、冻结权重表(唯一真源 _tools/family-rank.mjs)と整合。
32
+
14
33
  ## 4.1.16 — 2026-10-14(マニフェスト整合/欠落していた 4.1.15 の補記)
15
34
 
16
35
  ### 修正
package/CHANGELOG.ko.md CHANGED
@@ -11,6 +11,25 @@
11
11
  - [Changelog на русском](./CHANGELOG.ru.md)
12
12
  - [Changelog en español](./CHANGELOG.es.md)
13
13
 
14
+ ## 4.2.1 — 2026-10-17(호스트 열거 갱신: 0.2.1-rc.1 추가)
15
+
16
+ ### Fixed
17
+ - `engines.dsh`와 4개의 `@deepseek-ai/dsh-client-*` peer에 `|| 0.2.1-rc.1` 추가(16호스트 정확 열거). 호스트 호환 게이트가 DSH `0.2.1-rc.1`을 허용.
18
+ - `dsh.plugin.json`의 `engines.dsh`를 동일한 16호스트 열거로 통일(기존 범위 `>=0.2.0-rc.1 <0.2.1-0`였음. 게이트는 `package.json`만 읽지만 두 목록은 일치해야 함).
19
+ - README 호환 서술(zh/de/es/fr/it/ru)을 열거와 동기화. 이 릴리스에는 동작 변경 없음.
20
+
21
+ ## 4.2.0 — 2026-10-17
22
+
23
+ ### 추가
24
+ - 법정 공휴 인식(src/holidays.js + src/holiday-store.js). 내장 2026 확정 스냅샷: 39행 = 33 휴일 + 6 보근 근무일(출처 holiday-cn, 국무원 공고). 엄격한 파싱(제로패딩 날짜, isOffDay 불리언, 연도 초과 거부); 판정 필드만 sha256 지문(상문구/순서 변경은 오탐 없음). 캐시 파일 $DSH_HOME/.dsh/session-guard/holidays/<year>.json 은 로드 시 지문 자체 검증 — 불일치 시 폐기 후 내장 폴백 + 재조회. 자동 갱신: 시작 시 + 매시간 ensureFresh; 관련 연도 = 베이징 현재 연도, 11/12 월은 이듬해 추가(jsDelivr 주, raw.githubusercontent 보조, 10s 타임아웃); 지문 변화 시에만 원자적 tmp+rename 기록; 24h 재조회 억제; 전 구간 fail-open. DSH_SESSION_GUARD_HOLIDAY_FETCH=0 오프라인 고정.
25
+ - 선언식 스위치 holidayMode / holidayAutoFetch(기본 켜짐). /session-guard/status 가 holidayMode + 연도별 holidays[](출처/지문/조회시각/건수) 노출.
26
+
27
+ ### 변경
28
+ - weekendMode 를 휴식일 의미로 승격: 법정 공휴는 종일 비봉우리, 보근 주말은 정상 봉우리 판정, nextOffPeakInstant 선탐색 7 -> 14 일, 표 인지. holidayMap 은 readCfg 로 cfg 에 실려 shouldPause 소비 체인(스케줄러/request-guard/step-gate/wiring)이 서명 변경 없이 자동 적용.
29
+
30
+ ### 수정
31
+ - family claim rank 1 -> 2, 동결 가중 랭크 표(_tools/family-rank.mjs 단일 진원)와 정렬.
32
+
14
33
  ## 4.1.16 — 2026-10-14 (매니페스트 정리, 누락된 4.1.15 항목 보충)
15
34
 
16
35
  ### 수정
package/CHANGELOG.md CHANGED
@@ -11,6 +11,27 @@ All notable changes to `dsh-session-guard` are recorded here. Versions follow se
11
11
  - [Changelog на русском](./CHANGELOG.ru.md)
12
12
  - [Changelog en español](./CHANGELOG.es.md)
13
13
 
14
+ ## 4.2.1 — 2026-10-17 (host enumeration: +0.2.1-rc.1)
15
+
16
+ ### Fixed
17
+ - `engines.dsh` and the four `@deepseek-ai/dsh-client-*` peers append `|| 0.2.1-rc.1` (16-host exact enumeration),
18
+ so the host compatibility gate accepts DSH `0.2.1-rc.1`.
19
+ - `dsh.plugin.json` `engines.dsh` aligned to the same 16-host enumeration (was the range `>=0.2.0-rc.1 <0.2.1-0`);
20
+ the gate only reads `package.json`, but the two lists must not diverge.
21
+ - README compatibility statements (zh/de/es/fr/it/ru) synced to the enumeration. No behaviour change in this release.
22
+
23
+ ## 4.2.0 — 2026-10-17
24
+
25
+ ### Added
26
+ - Statutory-holiday awareness (src/holidays.js + src/holiday-store.js). Builtin 2026 finalized snapshot: 39 rows = 33 rest days + 6 make-up workdays (source: holiday-cn, State Council notices). Strict parse (zero-padded dates, boolean isOffDay, cross-year rows rejected); sha256 fingerprint over the decision fields only — upstream copy/reorder edits cause no false churn. The cache file $DSH_HOME/.dsh/session-guard/holidays/<year>.json self-verifies its fingerprint at load: mismatch discards the cache (builtin fallback) and triggers a re-fetch. Auto refresh: startup check + hourly ensureFresh; relevant years = Beijing current year, Nov/Dec also add next year (the State Council publishes next year in late December, so it lands without a release); jsDelivr primary, raw.githubusercontent fallback, 10 s timeout; refetch only on fingerprint change, then atomic tmp+rename write; 24 h no-refetch budget; consistent hits only bump the check timestamp; fail-open end to end. DSH_SESSION_GUARD_HOLIDAY_FETCH=0 pins offline/builtin mode (tests ride it).
27
+ - Declarative settings switches holidayMode and holidayAutoFetch (both default on; auto-form on 0.1.7+). /session-guard/status now exposes holidayMode + holidays[] per year (source / fingerprint / fetchedAt / entry count).
28
+
29
+ ### Changed
30
+ - weekendMode upgraded to rest-day semantics: statutory holidays (including ones landing on workdays) are off-peak all day; make-up-workday weekends enter peak gating normally; nextOffPeakInstant lookahead widened 7 -> 14 days and is table-aware. holidayMap rides cfg via readCfg, so shouldPause consumers (scheduler tick / request-guard / step-gate / wiring release timers) pick it up with zero signature churn.
31
+
32
+ ### Fixed
33
+ - Family claim rank 1 -> 2, aligned with the frozen weighted rank ladder (single source _tools/family-rank.mjs).
34
+
14
35
  ## 4.1.16 — 2026-10-14 (metadata alignment; backfill the missing 4.1.15 entry)
15
36
 
16
37
  ### Fixed
package/README.de.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **Identität dieser Linie**: Zweig `compat/0.2.0`, npm-Versionsnummer **`4.0.0`** (semver), dist-tag **`dsh-0.2.0`**.
57
57
  > Die `engines.dsh` in `package.json` und `dsh.plugin.json` sowie die vier `@deepseek-ai/dsh-client-*`-Peers
58
- > sind einheitlich auf `>=0.2.0-rc.1 <0.2.1-0` gesetzt; die Untergrenze des `@deepseek-ai/cordis`-Peers entspricht dem `^4.0.4` der Host-Linie.
58
+ > sind einheitlich auf `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1` gesetzt; die Untergrenze des `@deepseek-ai/cordis`-Peers entspricht dem `^4.0.4` der Host-Linie.
59
59
  > Früher benutzte das README „2.x / 3.x" als **Liniencoden** — das war eine Erzählkonvention, **keine aus der Registry
60
60
  > pullbare Versionsnummer** — maßgeblich sind ausschließlich die npm-Versionen `0.3.1` (0.1.2-Linie), `3.0.0`/`3.0.1` (0.1.5-Linie),
61
61
  > `3.2.4` (0.1.7-Linie) und `4.0.0` (0.2.0-Linie).
package/README.en.md CHANGED
@@ -344,6 +344,13 @@ npm test # node --test tests/*.test.mjs (timezone/weekend/state-machine/sessio
344
344
  | `src/index.js` | Host apply (settings/routes/tick/provide service/retry + request guard wiring) |
345
345
  | `src/client/` | Browser half (status badge + settings card + four-language dictionaries) |
346
346
 
347
+
348
+ ## Statutory holidays and make-up workdays (4.2.0+)
349
+
350
+ weekendMode now means rest-day aware: statutory holidays (including ones landing on workdays) are off-peak all day; make-up-workday weekends enter the peak windows normally. The data source is the holiday-cn finalized snapshot — builtin 2026 with all 39 rows (33 rest days + 6 make-up workdays, State Council notices) — plus startup check and hourly refresh: jsDelivr primary with raw.githubusercontent fallback, 10 s timeout; the Beijing current year is fetched, and Nov/Dec also track next year (late-December notices land without a plugin release). Cache lives at $DSH_HOME/.dsh/session-guard/holidays/<year>.json, self-verified by a sha256 fingerprint over the decision fields only (upstream copy edits cause no false churn); mismatch discards the cache and falls back to builtin. Only fingerprint changes write (atomic tmp+rename); 24 h refetch budget; fail-open across the entire chain.
351
+
352
+ Settings: holidayMode (rest-day awareness, default on) and holidayAutoFetch (network refresh, default on); pin offline mode with DSH_SESSION_GUARD_HOLIDAY_FETCH=0. /session-guard/status exposes year / source / fingerprint / fetchedAt / entry count.
353
+
347
354
  ## License
348
355
 
349
356
  MIT — see [LICENSE](LICENSE).
package/README.es.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **Identidad de esta línea**: rama `compat/0.2.0`, número de versión npm **`4.0.0`** (semver), dist-tag **`dsh-0.2.0`**.
57
57
  > Los `engines.dsh` de `package.json` y `dsh.plugin.json` y los cuatro pares `@deepseek-ai/dsh-client-*`
58
- > se unifican en `>=0.2.0-rc.1 <0.2.1-0`; el límite inferior del par `@deepseek-ai/cordis` se alinea con el `^4.0.4` de la línea del host.
58
+ > se unifican en `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1`; el límite inferior del par `@deepseek-ai/cordis` se alinea con el `^4.0.4` de la línea del host.
59
59
  > Históricamente el README usó «2.x / 3.x» como **apodos de línea**: era una costumbre narrativa, **no números de versión
60
60
  > descargables del registro** — guíate siempre por las versiones npm `0.3.1` (línea 0.1.2), `3.0.0`/`3.0.1` (línea 0.1.5),
61
61
  > `3.2.4` (línea 0.1.7) y `4.0.0` (línea 0.2.0).
package/README.fr.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **Identité de cette ligne** : branche `compat/0.2.0`, numéro de version npm **`4.0.0`** (semver), dist-tag **`dsh-0.2.0`**.
57
57
  > Les `engines.dsh` de `package.json` et de `dsh.plugin.json` ainsi que les quatre peers `@deepseek-ai/dsh-client-*`
58
- > sont unifiés à `>=0.2.0-rc.1 <0.2.1-0` ; le plancher du peer `@deepseek-ai/cordis` est aligné sur le `^4.0.4` de la ligne hôte.
58
+ > sont unifiés à `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1` ; le plancher du peer `@deepseek-ai/cordis` est aligné sur le `^4.0.4` de la ligne hôte.
59
59
  > Historiquement, le README utilisait « 2.x / 3.x » comme **surnoms de ligne** ; c'était une convention narrative, **pas des numéros de version téléchargeables depuis le registre** —
60
60
  > référez-vous toujours aux versions npm `0.3.1` (ligne 0.1.2), `3.0.0`/`3.0.1` (ligne 0.1.5), `3.2.4` (ligne 0.1.7) et `4.0.0` (ligne 0.2.0).
61
61
  >
package/README.it.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **Identità di questa linea**: branch `compat/0.2.0`, numero di versione npm **`4.0.0`** (semver), dist-tag **`dsh-0.2.0`**.
57
57
  > I `engines.dsh` di `package.json` e `dsh.plugin.json` e i quattro peer `@deepseek-ai/dsh-client-*`
58
- > sono unificati a `>=0.2.0-rc.1 <0.2.1-0`; il floor del peer `@deepseek-ai/cordis` è allineato al `^4.0.4` della linea host.
58
+ > sono unificati a `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1`; il floor del peer `@deepseek-ai/cordis` è allineato al `^4.0.4` della linea host.
59
59
  > In passato il README usava «2.x / 3.x» come **nomi in codice di linea**: era una convenzione narrativa, **non numeri di versione
60
60
  > scaricabili dal registry** — fare riferimento sempre alle versioni npm `0.3.1` (linea 0.1.2), `3.0.0`/`3.0.1` (linea 0.1.5),
61
61
  > `3.2.4` (linea 0.1.7) e `4.0.0` (linea 0.2.0).
package/README.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **本线身份**:分支 `compat/0.2.0`,npm 版本号 **`4.0.0`**(semver),dist-tag **`dsh-0.2.0`**。
57
57
  > `package.json` 与 `dsh.plugin.json` 的 `engines.dsh` 与四个 `@deepseek-ai/dsh-client-*`
58
- > peer 线统一为 `>=0.2.0-rc.1 <0.2.1-0`;`@deepseek-ai/cordis` peer 下限对齐宿主线的 `^4.0.4`。
58
+ > peer 线统一为 16 档精确枚举 `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1`;`@deepseek-ai/cordis` peer 下限对齐宿主线的 `^4.0.4`。
59
59
  > 历史上 README 曾用「2.x / 3.x」当**线代号**,那是叙述习惯,**不是注册表里可拉取的版本号** ——
60
60
  > 请一律以 npm 版本号 `0.3.1`(0.1.2 线)、`3.0.0`/`3.0.1`(0.1.5 线)、`3.2.4`(0.1.7 线)与 `4.0.0`(0.2.0 线)为准。
61
61
  >
@@ -368,6 +368,13 @@ npm test # node --test tests/*.test.mjs(时区/周末/状态机/会话门/
368
368
  | `src/index.js` | host apply(设置/路由/tick/提供服务/重试接线/请求守卫) |
369
369
  | `src/client/` | 浏览器 half(**暂停会话按钮** + 状态徽标 + 设置卡片) |
370
370
 
371
+
372
+ ## 法定节假日与调休(4.2.0+)
373
+
374
+ weekendMode 升级为休息日语义:法定假日(含落在工作日的)全天非峰;调休补班的周末照常走入峰窗口。数据源为 holiday-cn 定稿快照——内置 2026 全年 39 条(33 放假日 + 6 补班日,国务院公告),启动核对 + 每小时自动刷新:jsDelivr 主源、raw.githubusercontent 备源,10s 超时;按北京当年抓取,11/12 月追加次年(年底公告无需发版即自动进表);缓存落 $DSH_HOME/.dsh/session-guard/holidays/<year>.json,加载时以 sha256 指纹(只覆盖判定字段,上游改文案不引起伪变化)自校验,不符即弃用回退内置并重抓;仅指纹变化才原子写盘(tmp+rename),24 小时内不重抓;全链路 fail-open。
375
+
376
+ 设置项:holidayMode(休息日识别,默认开)、holidayAutoFetch(联网自动刷新,默认开);离线可用环境变量 DSH_SESSION_GUARD_HOLIDAY_FETCH=0 钉死内置档。/session-guard/status 透出年份/来源/指纹/抓取时间/条数。
377
+
371
378
  ## License
372
379
 
373
380
  MIT — 见 [LICENSE](LICENSE)。
package/README.ru.md CHANGED
@@ -55,7 +55,7 @@
55
55
  >
56
56
  > **Идентификация этой линии**: ветка `compat/0.2.0`, номер версии npm **`4.0.0`** (semver), dist-tag **`dsh-0.2.0`**.
57
57
  > `engines.dsh` в `package.json` и `dsh.plugin.json`, а также четыре peer-зависимости `@deepseek-ai/dsh-client-*`
58
- > единообразно приведены к `>=0.2.0-rc.1 <0.2.1-0`; нижняя граница peer-зависимости `@deepseek-ai/cordis` выровнена по `^4.0.4` хостовой линии.
58
+ > единообразно приведены к `0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1`; нижняя граница peer-зависимости `@deepseek-ai/cordis` выровнена по `^4.0.4` хостовой линии.
59
59
  > Раньше README использовало «2.x / 3.x» как **кодовые имена линий** — это была манера изложения, а **не номера версий, которые можно
60
60
  > получить из реестра**, — ориентируйтесь только на npm-версии `0.3.1` (линия 0.1.2), `3.0.0`/`3.0.1` (линия 0.1.5),
61
61
  > `3.2.4` (линия 0.1.7) и `4.0.0` (линия 0.2.0).
package/dsh.plugin.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "id": "dsh-external/dsh-session-guard",
3
- "version": "4.1.16",
3
+ "version": "4.2.1",
4
4
  "main": "./src/index.js",
5
5
  "description": "高峰自动会话门:step 级门控 + 周末模式 + 高峰自动暂停 + 官方源二维判定 + 会话级冻结 + 后端自动重试。",
6
6
  "engines": {
7
- "dsh": ">=0.2.0-rc.1 <0.2.1-0"
7
+ "dsh": "0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1"
8
8
  },
9
9
  "contributes": {
10
10
  "tools": [],
package/lib/client.js CHANGED
@@ -890,8 +890,9 @@ window.__ModuleLoader__.load({
890
890
  const FAMILY_SECTION_ID = "dsh-family";
891
891
  /** 家族子席位 key(与 thinking-levels 的声明严格一致)。 */
892
892
  const FAMILY_CHILD_KEY = "dsh-family.tab";
893
- /** 让位宽限:声明批内 TL 的注册微秒级落账,此延迟后查账本足以分辨「TL 在场」。 */
894
- const FAMILY_YIELD_MS = 500;
893
+ /** 让位宽限(由分级派生):TL rank 0 在 200ms 落账,本插件 rank 1 到 1100ms 才查账本——
894
+ * 落账时刻由各家 rank 决定(不再依赖 inject 注册顺序里谁先 fire),此延迟后足以分辨「TL 在场」。 */
895
+ const FAMILY_YIELD_MS = 2e3;
895
896
  /**
896
897
  * 客户端所需服务:slots(状态徽标)+ locale。持久设置走双代腰
897
898
  * (registerSettingsFaces):configForms 为 0.1.7+ 独有,顶层注入会在
@@ -1000,13 +1001,7 @@ window.__ModuleLoader__.load({
1000
1001
  }, GuardFamilySection);
1001
1002
  console.log("[dsh-session-guard] family takeover registered (children declared)");
1002
1003
  } catch (error) {
1003
- console.log(`[dsh-session-guard] children decl conflict (${error instanceof Error ? error.message : error}); registering without children`);
1004
- try {
1005
- ctx.slots.register(base, GuardFamilySection);
1006
- console.log("[dsh-session-guard] family takeover registered (no children)");
1007
- } catch (secondary) {
1008
- console.log(`[dsh-session-guard] family takeover abandoned: ${secondary instanceof Error ? secondary.message : secondary}`);
1009
- }
1004
+ console.log(`[dsh-session-guard] children claim lost — withdrawing (${error instanceof Error ? error.message : error})`);
1010
1005
  }
1011
1006
  }, FAMILY_YIELD_MS);
1012
1007
  });