Skip to content

Releases

v0.1.19

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 14 Oct 17:56

@goodandready/dsh-usage-guard v0.1.19

🇬🇧 English

  • Supply-Chain Release Age Compliance: Removed the --config.minimumReleaseAge=0 override flag from one-click updater commands (lib/updater.js). Auto-updater calls now strictly respect host/profile supply-chain protection policies (minimumReleaseAge / minimumReleaseAgeExclude in pnpm-workspace.yaml) (#58).
  • Testable Command Builder: Exported buildInstallArgs helper for transparent verification of plugin installation arguments (#58).
  • Threat Model Alignment: Clarified that this plugin operates as a token counter sanitizer/rescuer (preventing session crashes caused by NaN values and anomalous spikes) rather than a hard spend-enforcement firewall (#58).

🇨🇳 中文

  • 遵循供应链发布时间策略:从一键更新器(lib/updater.js)的命令参数中移除了 --config.minimumReleaseAge=0 覆盖标志。更新调用现在严格遵循主机及配置文件中的供应链安全防护策略(pnpm-workspace.yaml 中的 minimumReleaseAge / minimumReleaseAgeExclude)(#58)。
  • 可测试的命令构建器:导出 buildInstallArgs 辅助函数,实现插件安装参数的透明组装与断言测试 (#58)。
  • 对齐威胁模型:明确本插件定位为 Token 计数清洗与会话拯救层(防止 NaN 算术污染导致历史无法打开,并削平异常尖峰),而非硬性预算限制防火墙 (#58)。

🇷🇺 Русский

  • Соблюдение политик безопасности цепочки поставок: Из вызова автоматического обновления (lib/updater.js) удалён флаг обхода --config.minimumReleaseAge=0. Теперь вызовы обновления строго соблюдают глобальные настройки профиля (minimumReleaseAge / minimumReleaseAgeExclude в pnpm-workspace.yaml) (#58).
  • Тестируемый сборщик аргументов: Экспортирована функция buildInstallArgs для прозрачного формирования и тестирования параметров команды установки (#58).
  • Фиксация модели угроз: Подтверждено назначение плагина как санитайзера счётчиков токенов (защита истории сессий от сбоев при NaN и сглаживание аномальных всплесков), а не жёсткого шлюза контроля расходов (#58).

Verification & Build:

  • Test Suite: 66/66 tests passing
  • Preflight: 0 FAIL, clean static checks
  • Gitea ref: b45ecd04fbbddab3febe66013d81abde5bc8c6cc
  • Mirror commit: cbda464ae9196f959adc89eb762adc5cbf84740a

v0.1.18

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 09 Oct 16:30

@goodandready/dsh-usage-guard v0.1.18

🇬🇧 English

  • DSH Desktop Support: Allowed non-HTTP referer schemes (such as dsh-app://app/ sent by the Electron forwarder in DSH Desktop) to pass through to loopback socket authorization in isTrustedSettingsRequest, resolving 403 Forbidden on telemetry and reset calls (#55).
  • Hardened Referer Policy: Strict host validation is strictly applied to standard web schemes (http: and https:), preventing CSRF and DNS rebinding attacks while seamlessly supporting native desktop webviews on loopback (#55).

🇨🇳 中文

  • 支持 DSH Desktop 桌面端:允许非 HTTP 协议头的 Referer(例如 DSH Desktop 中 Electron 转发器发送的 dsh-app://app/)穿透至 isTrustedSettingsRequest 的 loopback 本地套接字认证,解决遥测及重置请求返回 403 Forbidden 的问题 (#55)。
  • 加固 Referer 安全策略:针对标准 Web 协议(http: 与 https:)维持严格的 host 校验,防止 CSRF 和 DNS 重绑定攻击,同时无缝兼容桌面端本地环境 (#55)。

🇷🇺 Русский

  • Поддержка DSH Desktop: Разрешён пропуск не-HTTP схем в заголовке Referer (например, dsh-app://app/, передаваемый форвардером Electron в DSH Desktop) к проверке локального loopback-сокета в функции isTrustedSettingsRequest, устраняя ошибку 403 Forbidden при вызове телеметрии и сброса (#55).
  • Усиленная политика проверки Referer: Строгая сверка хоста применяется исключительно к стандартным веб-схемам (http: и https:), что блокирует атаки CSRF и DNS rebinding в веб-браузерах и одновременно обеспечивает работу нативных desktop-клиентов на loopback (#55).

Verification & Build:

  • Test Suite: 65/65 tests passing
  • Preflight: 0 FAIL, clean static checks
  • Gitea ref: e89a7015ced28974166ef6d670dc9364f6b0e072
  • Mirror commit: 685de8b00b543d86278c0e16cf57cd4d9a2fb0e8

v0.1.17

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 08 Oct 14:01

@goodandready/dsh-usage-guard v0.1.17

🇬🇧 English

  • DSH 0.2 Settings Modernization: Declared all Config schema fields (repair, report, maxStepTokens) as .volatile() for reactive Settings Forms (#48).
  • Reactive Configuration Lifecycle: Implemented plainConfig unwrapping and subscribed to loader/volatile-update and settings/document-updated events for seamless live updates without restarting the harness (#49).
  • Cleanup of Obsolete APIs: Removed deprecated settings.register() call and unreached fallback scopes, ensuring native compatibility with DSH 0.2 host lifecycle (#47, #50).
  • Network Request Timeouts: Added 15-second client timeouts (AbortSignal.timeout(15000)) with localized error notices across all UI fetch requests (#52).
  • Hardened Telemetry Security: Enforced strict origin matching and fail-closed validation on /api/dsh-usage-guard/telemetry, completely rejecting cross-site and unauthorized remote/loopback calls (#51).
  • Public API Isolation: Removed test helper resetTelemetry from public module exports (#53).

🇨🇳 中文

  • DSH 0.2 设置模型现代化:将所有 Config 模式字段(repair、report、maxStepTokens)声明为 .volatile(),支持 DSH 0.2 响应式设置表单 (#48)。
  • 响应式配置生命周期:实现 plainConfig 解包并监听 loader/volatile-update 与 settings/document-updated 事件,无需重启即可动态生效配置 (#49)。
  • 清理废弃 API:移除已废弃的 settings.register() 调用及未使用的回退作用域,确保完全符合 DSH 0.2 主机生命周期规范 (#47, #50)。
  • 客户端网络超时控制:在所有 UI fetch 请求中加入 15 秒超时保护(AbortSignal.timeout(15000))及本地化错误提示 (#52)。
  • 遥测端点深度加固:严格校验源与主机头,对跨站及未授权的远程/本地重绑定请求返回 403 Forbidden (#51)。
  • 收紧公开导出接口:从模块公开导出中移除内部测试钩子 resetTelemetry (#53)。

🇷🇺 Русский

  • Модернизация настроек для DSH 0.2: Все поля схемы Config (repair, report, maxStepTokens) объявлены как .volatile() для совместимости с реактивными формами настроек DSH 0.2 (#48).
  • Реактивный жизненный цикл настроек: Добавлено безопасное разворачивание plainConfig и подписка на события loader/volatile-update и settings/document-updated для мгновенного обновления конфигурации без перезапуска харнесса (#49).
  • Очистка устаревших API: Удалён устаревший вызов settings.register() и недостижимые резервные ветки, обеспечивая чистую интеграцию с ядром DSH 0.2 (#47, #50).
  • Сетевые таймауты в клиенте: Добавлен 15-секундный таймаут (AbortSignal.timeout(15000)) с локализованным уведомлением об ошибке для всех fetch-запросов веб-интерфейса (#52).
  • Усиление защиты API телеметрии: Внедрена строгая проверка происхождения запроса isTrustedSettingsRequest, полностью блокирующая cross-site вызовы и атаки через loopback/DNS rebinding (#51).
  • Изоляция публичного API: Внутренний тестовый хук resetTelemetry исключён из публичных экспортов библиотеки (#53).

Verification & Build:

  • Test Suite: 65/65 tests passing
  • Preflight: 0 FAIL, clean static checks
  • Integration: Verified against DSH 0.2 reactive settings schema

v0.1.16

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 26 Sep 18:34

@goodandready/dsh-usage-guard v0.1.16

🇬🇧 English

  • Telemetry Endpoint Security: Protected /api/dsh-usage-guard/telemetry with isTrustedSettingsRequest source policy, rejecting cross-site and unauthenticated requests with 403 Forbidden (#45).
  • Session Metadata & Sample Redaction: Eliminated raw usage samples (sample) and provider names (provider) from telemetry data to prevent sensitive session information leakage (#45).

🇨🇳 中文

  • 遥测端点安全防护:通过 isTrustedSettingsRequest 源保护策略对 /api/dsh-usage-guard/telemetry 进行防护,对跨站和未授权的远程请求返回 403 Forbidden (#45)。
  • 清除原始样本与元数据:从遥测数据中彻底移除原始用量样本(sample)和提供商名称(provider),防止敏感会话元数据泄露 (#45)。

🇷🇺 Русский

  • Защита эндпоинта телеметрии: Маршрут /api/dsh-usage-guard/telemetry защищен политикой проверки источника isTrustedSettingsRequest, отклоняя cross-site и удаленные неавторизованные запросы с кодом 403 Forbidden (#45).
  • Удаление сырых образцов и провайдеров: Из структуры инцидентов и снимков телеметрии полностью удалены сырые образцы использования (sample) и имена провайдеров (provider), предотвращая утечку метаданных сессий (#45).

Verification & Build:

  • Test Suite: 59/59 tests passing
  • Preflight: 0 FAIL, clean static validation
  • Test Server: verified on MiniPC (192.168.1.123), same-origin 200 OK, cross-site 403 Forbidden
  • Gitea ref: b9418f30faf2c9e6d462ee7ffbf2a7c71a3dd606
  • Mirror commit: 6f42fe3d14b0b83e6f352d78bf4d7ab638f44010

v0.1.15

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 24 Sep 10:19

@goodandready/dsh-usage-guard v0.1.15

🇬🇧 English

  • Fix Updater Symlink Resolution: Resolved symlinks in findDshCliEntry using realpathSync so globally symlinked dsh CLI binaries reliably locate @deepseek-ai/dsh/lib/bin.js for automatic updates (#37).
  • Refactor Telemetry Route: Unified /api/dsh-usage-guard/telemetry route registration via registerTelemetryRoute and eliminated duplicated inline handler (#38).
  • Optimize Token Damage Tracking (V8 Packed Elements): Preserved bad as a pure packed array in V8, avoiding array deoptimization; clamping details are kept in a module-internal WeakMap (#39).
  • Optimize Canonical Property Check: Prioritized canonical field in borrowed() before iterating alias synonyms dictionary (#40).
  • Update Design Contract: Documented primary plugins.item seat with fallbacks and standardized theme CSS variables in DESIGN.md (#41).

🇨🇳 中文

  • 修复更新器符号链接解析:在 findDshCliEntry 中使用 realpathSync 解析符号链接,以便全局符号链接的 dsh CLI 二进制文件能够正确定位 @deepseek-ai/dsh/lib/bin.js 进行一键自动更新 (#37)。
  • 重构遥测路由:通过 registerTelemetryRoute 统一注册 /api/dsh-usage-guard/telemetry 路由,消除重复的内联处理器 (#38)。
  • 优化 V8 数组性能:将 bad 保持为纯净的打包数组,避免 V8 数组逆优化,将截断详情保存在内部 WeakMap 中 (#39)。
  • 优先检查规范字段:在 borrowed() 中优先检查规范字段本身,然后再遍历同义词字典 (#40)。
  • 更新设计契约:在 DESIGN.md 中记录主插槽 plugins.item、降级插槽以及主题 CSS 变量规范 (#41)。

🇷🇺 Русский

  • Исправление разрешения симлинков в автоапдейтере: В findDshCliEntry добавлено разрешение симлинков через realpathSync, благодаря чему глобальные симлинки dsh корректно находят @deepseek-ai/dsh/lib/bin.js и активируют canAutoUpdate (#37).
  • Унификация маршрута телеметрии: Регистрация эндпоинта /api/dsh-usage-guard/telemetry переведена на registerTelemetryRoute, устранен мертвый дубликат (#38).
  • Оптимизация V8 для отслеживания повреждений: Массив bad сохраняется как чистый Packed Array без динамических именованных свойств, данные об обрезке спайков хранятся во внутреннем WeakMap (#39).
  • Приоритет канонического поля: В borrowed() проверка канонического поля выполняется до обхода словаря синонимов (#40).
  • Актуализация дизайн-контракта: В DESIGN.md зафиксирован основной слот plugins.item, слоты обратной совместимости и системные токены --dsw-alias-state-*-bg (#41).

Verification & Build:

  • Test Suite: 58/58 tests passing
  • Preflight: 0 FAIL, clean static validation
  • Test Server: verified on MiniPC (192.168.1.123), canAutoUpdate: true, telemetry OK
  • Gitea ref: 9fb964cd939cb7c1a3ab663026f7c85fbd562760
  • Mirror commit: 65a41edf396f785cee845ecf4e4e7c1082b53916

v0.1.14

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 22 Sep 14:20

English

Settings no longer wait on the removed settingsScope service. The client reads its namespace from configForms.

中文

设置不再等待已移除的 settingsScope 服务。客户端通过 configForms 读取自己的命名空间。

Русский

Настройки больше не ждут удалённый сервис settingsScope. Клиент читает свой namespace через configForms.

v0.1.13

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 19 Sep 22:26

Full Changelog: v0.1.11...v0.1.13

v0.1.12

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 19 Sep 22:37

Full Changelog: v0.1.11...v0.1.12

v0.1.11: Quality, resilience, and service contract alignment

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 18 Sep 14:30

Maintenance and stabilization release aligning package identity, UI theme CSS variables, error handling, English comments, and core service contracts.

v0.1.10: Maintenance and Quality Update

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 18 Sep 14:25

DeepSeek Harness Usage Guard v0.1.10

Comprehensive maintenance, standards compliance, and resilience update resolving all audit findings (#13-#20):

What Changed:

  • Package Identity (#13): Synchronized export const name in lib/index.js to @goodandready/dsh-usage-guard matching package.json, cordis.patch.yml, and client loader id. Added identity verification test.
  • Client Locale Resolution (#14): Updated getActiveLocale in lib/client.js to conform to @deepseek-ai/dsh-client-locale LocaleSnapshot (snap.active/snap.locale).
  • Repository Hygiene (#15, #19): Untracked internal plans and tarball artifacts. Isolated packaging builds to /tmp. Added regression test ensuring zero .tgz files linger in source tree.
  • Icon Integration (#16): Substituted hardcoded chevron with core IconChevronDownOutline14 from @deepseek-ai/dsh-client-ui-primitives with graceful fallback.
  • Code Language Standardization (#17): Translated internal comments and module descriptions across lib/ to English.
  • Theme Variables (#18): Replaced all hardcoded rgba(...) and hex colors in lib/client.js with DSH design system tokens (--dsw-alias-*).
  • Error Handling & Logger (#20): Eliminated empty catch blocks in server and client code. Switched diagnostic warnings to ctx.logger.warn. Added status indicator in UI when live settings watch is inactive.

Quality & Verification:

  • 56/56 unit tests passing.
  • Verified on isolated test server MiniPC (192.168.1.123): dsh-test-plugin install, verified endpoints, clean removal (DSH_TEST_OK).
  • Production acceptance on MiniAI (192.168.1.111): installed candidate, dsh-web.service active and healthy, endpoints return 200 OK.