Skip to content

Releases: xfgil/dsh-session-clock

v0.1.1 — 时区检测不到时按北京时间来

Choose a tag to compare

@xfgil xfgil released this 19 Oct 12:21

v0.1.1 — 时区检测不到时按北京时间来,不再停摆

timeZone 留空表示「用进程时区」。但进程时区是 UTC 或取不到时(容器、服务器、装系统没选区域),跟着它走会让实例系统性偏 8 小时;配置里写一个不存在的 IANA 名则会把插件直接停用。两种情况现在都改为落到北京时间。

新增

  • lib/time.js 导出 FALLBACK_TIME_ZONE = 'Asia/Shanghai';normalizeTimeZone() 检测失败时返回兜底时区并带 isFallback: true,不再返回 ok: false。
  • isUtcLike():UTC / GMT / Etc/UTC / Etc/GMT 等一律视为「没检测到」。显式配置 timeZone: UTC 仍然尊重 —— 那说明确实想要 UTC,不是检测失败。
  • 配置项 fallbackTimeZone(默认 Asia/Shanghai),可改成别的兜底时区。
  • 状态端点新增 timeZoneSource(detected / fallback)与 timeZoneError(落到兜底的原因)。

改动

  • 注入文案:消息不带浏览器时区(QQ / 网关通道)时,注入行直接声明北京时间为权威时区,并明确写「Do not ask the user for their time zone.」——原来那句 none reported 会诱使模型反问用户时区。
  • 非法配置值不再停用插件,只记一条 warn 并继续注入。
  • 版本 0.1.0 → 0.1.1。

修复

  • timeZoneError 原本按 zone.ok 判断取值,而兜底时 ok 仍为 true,会把失败原因吞成 null。改按 isFallback || !ok 判断。

怎么升

cd D:\Plugins\dsh-session-clock
git pull          # 或重新下载 Release 附件覆盖

热重载插件(dsh-hot-reloader)会自动接管,也可以重启 DSH。不需要迁移数据 —— 状态文件 session-clock/activity.json 格式未变,也不用改现有配置(不写 fallbackTimeZone 就用默认的北京时间)。

想改成别的兜底时区:

- id: session-clock
  name: dsh-session-clock
  config:
    timeZone: ''                 # 留空 = 跟随进程时区,检测不到就兜底
    fallbackTimeZone: Asia/Tokyo  # 可选,默认 Asia/Shanghai

自测

新增 test/selftest.mjs(此前仓库里没有自测):75 条断言全过。覆盖 9 种 UTC 变体、5 种非法值、自定义兜底时区、浏览器时区判定、时间戳与时长格式化。

node test/selftest.mjs   # pass=75 fail=0

支持的 DSH 版本

>=0.2.0-rc.2 <0.3.0-0,开发与验证所用为 0.2.1-rc.2。需要宿主内置 @deepseek-ai/dsh-time-context 存在(补它的缺口,不替代它)。