Skip to content

Releases: GooDAnDReaDY/dsh-context-lens

v0.1.35 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 23 Oct 11:11

What's Changed

  • Direct File Reading via filePath in context_lens_code (#128): Enabled context_lens_code to directly read files from disk when code is omitted, eliminating token-costly redundant read_file roundtrips before skeletonization. Added file size limit (MAX_DIRECT_READ_BYTES = 1 MiB), directory guard, and automated language detection (detectLanguageFromPath).
  • Client CSS Fallback Theme Tokens (#128): Removed hardcoded #ffffff fallback in .cl-btn-primary within lib/client.js, strictly adhering to canonical DSH theme tokens and clearing the preflight warning.
  • On-Demand Architecture & Settings Clarification (#128): Realigned README.md (EN, RU, ZH) with on-demand tool execution model, documented direct file reading parameters, and clarified autoCompressThreshold usage in context_lens_log. Documented Section 11 On-Demand Semantic Execution & Direct File Reading Contract in docs/design/DESIGN.md.
  • Quality Gates: All 101 tests passing (npm test), dsh-plugin-preflight FAIL=0, package size 29.7 KB (< 256 KB).

Release Metadata

  • Plugin Version: 0.1.35
  • Compatible DSH Version: v0.2.0-rc.2
  • Gitea Commit: 7e40c90aa9278122170098a9ddc50fe4e6d97f8c
  • Mirror Commit: 448126849ee7335686e7c0a7eddc2d13ffaa4e71

v0.1.34 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 19 Oct 12:43

What's Changed

  • Relative Focus Pattern Matching for Absolute File Paths (#125): Resolved an issue where relative focus patterns and directory names (e.g. src, lib/foo.ts, ./src, /src) failed to match absolute file paths (e.g. /repo/src/a.js) in context_lens_code, causing focused files to be skeletonized. Implemented boundary-checked directory segment matching and leading ./ normalization in lib/tools.js with zero false positives for partial folder collisions (my-src vs src).
  • Design Contract Updated: Documented Session Focus Path Matching Contract in docs/design/DESIGN.md.
  • Quality Gates: All 96 tests passing (npm test), dsh-plugin-preflight FAIL=0, package size 28.5 KB (< 256 KB).

Release Metadata

  • Plugin Version: 0.1.34
  • Compatible DSH Version: v0.2.0-rc.2
  • Gitea Commit: bc455b2f3ac1100ce7bc992eacc0c999bfe2e84c
  • Mirror Commit: 7850e4eda5addecbc199b392bc146aa3c74fec88

v0.1.33 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 13 Oct 15:26
chore(publish): sanitized tree from 11bcc7c8

v0.1.32 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 12 Oct 15:47
chore(publish): sanitized tree from 33fe7e83

v0.1.31 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 12 Oct 10:55
chore(publish): sanitized tree from e0a49554

v0.1.30 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 09 Oct 20:08

English

What's Changed

  • Schemastery Volatile Box Unwrapping: Ensured that plainConfig wraps initial readConfig and teardown fallback in lib/index.js, preventing raw Schemastery Volatile boxes { get: [Function] } from reaching tool consumers (astSkeletonMaxDepth, compressionMode, autoCompressThreshold) and preventing NaN or [object Object] comparisons.
  • Active Live Settings Cache Invalidation: Added local cachedLiveSettings that is actively refreshed on settings/document-updated events, eliminating empty stub handlers and avoiding repeated synchronous describe() queries during tool executions.
  • Pruned Dead Code: Removed unreachable legacy sctx.settings.get branch from host settings reader and pruned unused module-level variable lastActiveSession in lib/tools.js.

中文

变更说明

  • 解包 Schemastery Volatile 对象:确保在 lib/index.js 的初始 readConfig 和 teardown 清理路径中均通过 plainConfig 解包配置,彻底杜绝 { get: [Function] } 对象渗透进工具层(astSkeletonMaxDepth、compressionMode、autoCompressThreshold),避免由此引发的 NaN 或 [object Object] 比较异常。
  • 主动刷新实时配置缓存:引入 cachedLiveSettings 缓存,并在监听到 settings/document-updated 事件时主动刷新,移除了此前未执行任何操作的空注释监听器,同时避免了工具每次执行时重复同步查询 describe()。
  • 清理无用代码:移除宿主设置读取中已废弃且不存在的 sctx.settings.get 分支,并清理了 lib/tools.js 中从未被读取的模块级变量 lastActiveSession。

Русский

Что нового

  • Распаковка Schemastery Volatile-боксов: Начальное присваивание readConfig и восстановление конфигурации на этапе teardown в lib/index.js теперь гарантированно вызывают plainConfig(config). Это исключает попадание боксов { get: [Function] } в потребители параметров инструментов (astSkeletonMaxDepth, compressionMode, autoCompressThreshold) и предотвращает появление NaN и [object Object].
  • Активное обновление кэша настроек: Добавлен кэш cachedLiveSettings, который активно обновляется при срабатывании события settings/document-updated, устраняя пустой обработчик и исключая избыточные синхронные вызовы describe() при каждом выполнении инструментов.
  • Удаление мёртвого кода: Удалена недостижимая ветка sctx.settings.get в модуле настроек хоста, а также неиспользуемая переменная lastActiveSession в lib/tools.js.

v0.1.29 [DSH v0.2.0-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 05 Oct 20:16

English

What's Changed

  • DSH 0.2.0-rc.2 List Slot Compatibility: Starting with DSH Desktop 0.2.0-rc.2, the plugins.item slot was changed to a list slot requiring options.id.
  • Provided both options.id and options.key for plugins.item for dual compatibility across DSH 0.2.0-rc.2+ and older cores.
  • Retained options.key for keyed slot plugins.row.config.
  • Wrapped slot registration inside the inject callback with try / catch to eliminate unhandled boot exceptions.
  • Closes #3.

中文

变更说明

  • 兼容 DSH 0.2.0-rc.2 plugins.item 列表槽:自 DSH 0.2.0-rc.2 起,plugins.item 槽变为列表槽(list slot),必须提供 options.id。此前由于仅传递 key,在每次启动时均会触发 Uncaught Error: list slot "plugins.item" requires options.id。
  • 为 plugins.item 同时传递 options.id 与 options.key,确保在 DSH 0.2.0-rc.2+ 及旧版内核中均能正确挂载设置卡片。
  • 保留 plugins.row.config 键控槽原有的 key 注册参数。
  • 在 inject 回调内增加 try / catch 异常隔离保护,防止槽注册异常冒泡造成崩溃。
  • 关闭 #3。

Русский

Что нового

  • Совместимость со списочным слотом plugins.item в DSH 0.2.0-rc.2: Начиная с DSH 0.2.0-rc.2 слот plugins.item переведён в тип list, требующий options.id.
  • Для plugins.item передаются одновременно options.id и options.key (полная обратная совместимость).
  • Для слота plugins.row.config сохранена передача options.key.
  • Вызов регистрации внутри отложенного колбэка inject защищён блоком try / catch с логированием в console.warn.
  • Закрывает #3.

v0.1.26

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 26 Sep 19:38
  • Narrow to semantic compression (AST code skeletons, test/build logs)
  • Delegate context budgeting, token counting, and tool pruning to DSH core (>= 0.1.5)
  • Consolidate agent tools into context_lens_code and context_lens_log
  • Streamline client UI settings card with client-side interactive preview

v0.1.25 — SettingsForms Adapter Fix

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 25 Sep 13:08

v0.1.25 — SettingsForms Adapter Fix

Fixed

  • SettingsForms modern API adapter (#66): removed legacy call to nonexistent sctx.settings.register preventing crash on DSH 0.1.7-rc.1 core. Implemented SettingsForms adapter with configure({ auto: false }), live reading via describe() / get(), dynamic updates via settings/document-updated, and full cleanup on effect disposal.

v0.1.24 — Audit Optimizations & Bug Fixes

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 24 Sep 11:30

v0.1.24 — Audit Optimizations & Bug Fixes

Performance

  • Optimized log auto-compression: replaced string array allocation split(' ').length > 100 with zero-allocation early-exit hasAtLeastLines(text, 101) scan, delivering ~55x faster checks on large log outputs (#85).
  • Fast-path ANSI stripping: added immediate fast-path return in cleanAnsi for strings without � and cached cleaned lines during log compression to eliminate duplicate regex execution (#88).

Security

  • Hardened /dsh-context-lens/status route: enforced HTTP GET method (405 Method Not Allowed on other methods) and verified trusted source via isTrustedRequest (403 Forbidden on untrusted origins), closing cross-site telemetry leak (#87).

Fixed

  • Prevented session memory leak: clearFocus(key) now explicitly deletes the session key from focusBySession, and enforced a maximum capacity limit (MAX_FOCUS_SESSIONS = 500) with LRU eviction (#86).
  • Sanitized focus paths and fixed matching: filtered out empty and whitespace strings in context_lens_focus, and implemented strict path segment matching in isPathFocused() to prevent false compression bypass (#89).