Repository navigation
Releases
Releases · GooDAnDReaDY/dsh-messenger-gateway
v0.4.29: fix TypeError gw.resolveWebAppUrl is not a function
Bug fix release:
- Implemented missing Gateway.prototype.resolveWebAppUrl() in lib/gateway.js.
- Added defensive optional chaining safeguards gw.resolveWebAppUrl?.() in lib/gateway-turn.js and lib/gateway-commands.js.
- Fixes GitHub issue #13.
v0.4.28: telegram mini app dashboard for artifacts, kanban and gateway status
Release 5: Dashboard & Final Roadmap Completion
- Telegram Mini App (TMA) Dashboard (#150):
- Lightweight mobile web UI mounted under /dsh-messenger-gateway/webapp with native Telegram theme CSS variables.
- Cryptographic HMAC-SHA256 validation of window.Telegram.WebApp.initData (�alidateTelegramWebAppData).
- In-memory ring buffer store createArtifactStore capturing generated Mermaid diagrams, charts, and tables with deep-linking #artifact= support.
- Fullscreen artifact viewer with zoomable/pannable SVG rendering, syntax-highlighted code inspection, and one-tap copy button.
- Live host health and adapter status dashboard: uptime, message counters, active chats, and Outbox DLQ monitoring with quick retry action.
- Integration into Telegram Bot UX: persistent menu button [📊 Dashboard] via Bot API setChatMenuButton, quick actions keyboard expansion, and /app chat command.
- Comprehensive unit test coverage in est/webapp.test.mjs (8 tests).
v0.4.27: outbox DLQ queue with offline recovery and cost tracker bridge
Release 4: Reliability & Metering
- Outbound Transactional Queue (Outbox DLQ) (#155):
- Zero-dependency transactional queue (outbox-queue.json) persisting outbound operations before delivery.
- Automatic offline buffering, retry scheduling with exponential backoff and jitter, and Telegram
etry_after header adherence. - Fail-closed terminal error detection diverting failures to Dead Letter Queue (DLQ).
- Admin notifications to pairing chat on DLQ overflow.
- Operational /outbox command (/outbox, /outbox retry, /outbox clear).
- Token Usage & Cost Tracker in Messenger Sessions (#156):
- Extracted usage metrics (prompt, completion, reasoning, cached tokens) and turn duration.
- Multi-tier session projection reading (session.projection(\ costByModel)) with fallback to turn accumulation.
- Accurate pricing calculations (DeepSeek official token rates).
- Configurable compact cost footer ( elegram.costFooter) appending execution metrics to turn replies.
- Configurable budget alert threshold ( elegram.budgetAlertThresholdUsd).
- Interactive /cost command with detailed breakdown.
v0.4.26: Topic-based workspaces and dsh-memory-brain integration
Release 3 of 5:
- Issue #151: Topic-based autonomous workspaces and isolated project worktrees (/project bind/list/unbind, git worktree inspection, dynamic cwd resolution).
- Issue #152: Integration with dsh-memory-brain for persistent user profiles and memory (/memory, /forget, turn context auto-injection, strict user-level scope isolation).
v0.4.25 [DSH v0.2.1-rc.2]
English
Features & Usability
- Batch Media Ingestion & Media Group Debouncing (
lib/adapters/telegram.js,lib/config.js, Gitea #154):- Grouped inbound Telegram messages sharing identical
media_group_idinto a sliding debounce window (mediaGroupDebounceMs, default:650ms). - Aggregated all photos, videos, and documents from a single album into a single unified agent turn with multiple image attachments.
- Combined captions and text from album items, preventing fragmented turns and duplicate "photo received" prompts.
- Safe best-effort timer cleanup on adapter
stop().
- Grouped inbound Telegram messages sharing identical
- Zero-Dependency Safe Zip Archive Ingestion (
lib/documents.js,lib/adapters/telegram-inbound.js, Gitea #154):- Integrated zero-dependency Central Directory and local file header parser using standard library
node:zlib. - Strict path traversal protection (
isSafeZipPath) against Zip Slip vulnerabilities (blocking.., leading slashes, and Windows drive roots). - Enforced security limits: max 100 entries, 10MB total uncompressed extraction limit (zip bomb guard), and 512KB single file limit.
- Automatically filtered out non-code binaries, lockfiles (
package-lock.json,pnpm-lock.yaml,yarn.lock), and build directories (node_modules,.git,dist,.turbo,build,vendor). - Generated structured ASCII file tree summaries and injected extracted source code directly into conversation context.
- Unit tests added in
test/batch-media-zip.test.mjs(6 tests).
- Integrated zero-dependency Central Directory and local file header parser using standard library
- Mermaid & Charts Visualizer with Companion Photo Previews (
lib/artifacts.js,lib/gateway-turn.js, Gitea #153):- Diagram type detection (
detectDiagramType) for Mermaid diagrams (pie,xychart,sequence,flowchart,code). - Dedicated vector SVG card generators using modern dark palette:
renderPieChartSvg(donut slices with percentages & legend),renderXyChartSvg(axes, gridlines, bars, line charts). - In-memory SHA-256 hash caching (
getCachedDiagram/setCachedDiagram) avoiding redundant re-renders. - Asynchronous SVG-to-PNG conversion via local
ffmpeg(convertSvgToPng). - Companion visual preview cards dispatched as Telegram photos (
kind: photo,mime: image/png), ensuring crisp mobile readability with inline references to the original code. - Graceful fallback: defaults to
.svgdocument attachment or styled code card on conversion error. - Unit tests added in
test/artifacts.test.mjs(10 tests).
- Diagram type detection (
- Design Contract Alignment (
docs/design/DESIGN.md, Gitea #154, #153):- Updated Section 10 (Locked Design Decisions) with batch media debouncing, safe zip ingestion, and visualizer invariants.
Verification
- 352/352 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Production deployment verified on DSH profile
web.
Русский
Новые возможности и улучшения
- Пакетная обработка медиа-альбомов и дебаунсинг медиа-групп (
lib/adapters/telegram.js,lib/config.js, Gitea #154):- Группировка входящих сообщений Telegram с одинаковым
media_group_idв скользящем окне дебаунсинга (mediaGroupDebounceMs, по умолчанию 650мс). - Агрегация всех фото, видео и документов альбома в единый ход агента с передачей нескольких вложений сразу.
- Объединение подписей и текстов элементов альбома, предотвращающее гонки и дублирование ответов бота на каждую фотографию.
- Безопасная очистка таймеров при остановке адаптера (
stop()).
- Группировка входящих сообщений Telegram с одинаковым
- Безопасная инъекция
.zipархивов кода без внешних зависимостей (lib/documents.js,lib/adapters/telegram-inbound.js, Gitea #154):- Разбор Центральной Директории и локальных заголовков ZIP на чистой стандартной библиотеке
node:zlib. - Защита от атак обхода директорий Zip Slip (
isSafeZipPathблокирует.., абсолютные пути и дисковые корни). - Лимиты безопасности: до 100 файлов, суммарно не более 10МБ распаковки (защита от zip-бомб) и до 512КБ на один файл.
- Автоматическая фильтрация бинарников, lock-файлов (
package-lock.json,pnpm-lock.yaml,yarn.lock) и служебных папок (node_modules,.git,dist,.turbo,build,vendor). - Формирование структурированного ASCII-дерева файлов архива и инъекция исходного кода в контекст модели.
- 6 unit-тестов в
test/batch-media-zip.test.mjs.
- Разбор Центральной Директории и локальных заголовков ZIP на чистой стандартной библиотеке
- Визуализатор Mermaid-диаграмм и графиков в нативные фото-превью (
lib/artifacts.js,lib/gateway-turn.js, Gitea #153):- Определение типа диаграммы (
detectDiagramType): круговые диаграммыpie, координатные графикиxychart,sequenceDiagram,flowchart, код. - Генерация стилизованных SVG-карточек:
renderPieChartSvg(donut-сегменты с процентами и легендой),renderXyChartSvg(оси, сетка, столбцы, графики). - Кэширование сгенерированных карточек по SHA-256 хэшу содержимого.
- Асинхронная конвертация SVG в PNG через локальный
ffmpeg(convertSvgToPng). - Отправка визуальных карточек в Telegram через
sendPhoto(kind: photo,mime: image/png), обеспечивающая читаемое отображение на узких экранах мобильных устройств. - Graceful fallback: безопасное переключение на
.svgдокумент или блок кода при ошибках конвертации. - 10 unit-тестов в
test/artifacts.test.mjs.
- Определение типа диаграммы (
- Дизайн-контракт (
docs/design/DESIGN.md):- Зафиксированы решения по обработке медиа-альбомов, архивов и визуализации в разделе 10.
Проверки
- 352/352 тестов успешно пройдены (
npm test). - Префлайт пройден без ошибок (
dsh-plugin-preflight: FAIL=0, WARN=6). - Пакет опубликован в npm (
@goodandready/dsh-messenger-gateway@0.4.25).
v0.4.24 [DSH v0.2.1-rc.2]
English
Features & Usability
- Live Reasoning Streaming & Collapsible Thought Blocks (
lib/stream.js,lib/telegram-format.js,lib/gateway.js,lib/gateway-turn.js, Gitea #149):- Integrated live streaming extraction for reasoning and
<thought>blocks during LLM responses. - Streaming previews display intermediate reasoning progress (
💭 Thinking... (Xs)\n> latest snippet) and auto-switch to output when final response tokens start arriving. - Completed reasoning blocks are wrapped into native Telegram expandable blockquotes (
<blockquote expandable>💭 Thought (Xs)\n...</blockquote>), keeping chats clean and readable on mobile and desktop clients while preserving the full thought process. - Added user settings
showReasoning(boolean, default:true) andthoughtCollapse(boolean, default:true). - Unit tests added in
test/stream-reasoning.test.mjs(11 tests).
- Integrated live streaming extraction for reasoning and
- Interactive Action Approval Cards with Inline Diff & Buttons (
lib/gateway-turn.js,lib/config.js,lib/client.js,lib/locales/, Gitea #148):- Structured formatting for action approval cards (
formatApprovalCard) when the model requests execution of sensitive tools. - Syntax-highlighted code blocks for command execution (
<pre><code class="language-bash">...</code></pre>). - Unified diff view (
<pre><code class="language-diff">...</code></pre>) with green/red additions/deletions highlighting for file modifications (edit_file,write_file). - 4 interactive action buttons:
[✅ Approve],[❌ Reject],[✏️ Steer / Amend],[⚡ Trust Session]. - Added configurable sensitivity
approvalsSensitivity:all(prompts for every tool),mutations(default; prompts only for commands, file edits, git, deploy, and mutations while letting read-only tools run smoothly), anddisabled. - Added fail-closed timeout protection
approvalsTimeoutMs(default 5 minutes), auto-rejecting pending actions if unanswered. - Unit tests added in
test/action-approvals.test.mjs(8 tests).
- Structured formatting for action approval cards (
- Design Contract Alignment (
docs/design/DESIGN.md, Gitea #148):- Updated Section 10 (Locked Design Decisions) with HITL action approval UX, sensitivity tiers, and fail-closed timeout invariants.
Verification
- 340/340 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Production deployment verified on DSH profile
web.
Русский
Новые возможности и улучшения
- Стриминг рассуждений модели и сворачиваемые блоки мыслей (
lib/stream.js,lib/telegram-format.js,lib/gateway.js,lib/gateway-turn.js, Gitea #149):- Потоковое извлечение рассуждений и тегов
<thought>в реальном времени во время генерации ответа LLM. - Отображение промежуточного прогресса рассуждений (
💭 Thinking... (Xs)\n> фрагмент мыслей) с автоматическим переключением на вывод ответа при появлении основных токенов. - Сворачивание завершённого блока рассуждений в нативную раскрывающуюся цитату Telegram (
<blockquote expandable>💭 Thought (Xs)\n...</blockquote>), сохраняющую чат компактным и аккуратным. - Настройки
showReasoning(boolean, по умолчанию:true) иthoughtCollapse(boolean, по умолчанию:true). - 11 unit-тестов в
test/stream-reasoning.test.mjs.
- Потоковое извлечение рассуждений и тегов
- Интерактивные карточки подтверждения действий с inline-диффом и кнопками (
lib/gateway-turn.js,lib/config.js,lib/client.js,lib/locales/, Gitea #148):- Структурированные карточки подтверждения выполнения действий агента (
formatApprovalCard). - Блоки выполнения shell-команд с подсветкой синтаксиса bash (
<pre><code class="language-bash">...</code></pre>). - Унифицированный diff-просмотр (
<pre><code class="language-diff">...</code></pre>) с цветовым выделением добавлений и удалений для редактирования файлов (edit_file,write_file). - 4 кнопки действий:
[✅ Approve],[❌ Reject],[✏️ Steer / Amend],[⚡ Trust Session]. - Настройка чувствительности
approvalsSensitivity:all,mutations(по умолчанию; требует подтверждения только для команд, правок файлов, git/деплоя и мутаций),disabled. - Защита по тайм-ауту
approvalsTimeoutMs(по умолчанию 5 мин) с безопасным отклонением (fail-closed). - 8 unit-тестов в
test/action-approvals.test.mjs.
- Структурированные карточки подтверждения выполнения действий агента (
- Дизайн-контракт (
docs/design/DESIGN.md, Gitea #148):- Зафиксированы решения по Human-in-the-Loop подтверждениям в разделе 10.
Проверки
- 340/340 тестов успешно пройдены (
npm test). - Префлайт пройден без ошибок (
dsh-plugin-preflight: FAIL=0, WARN=6). - Пакет опубликован в npm (
@goodandready/dsh-messenger-gateway@0.4.24).
v0.4.23 [DSH v0.2.1-rc.2]
English
Bug Fixes & Usability
- Runtime Commands AbortSignal on Idle Chat (
lib/gateway.js, Gitea #167, Resolves #11):- Resolved
TypeError: Cannot read properties of undefined (reading 'aborted')when running DSH runtime commands (/compact,/goal, plugin commands) between agent turns. - Initialized a scoped
AbortControllerand passedcmdAbort.signaltocommandsService.execute(agent, cleanBody, attachments, cmdAbort.signal)whenchat.abortis undefined on idle chats. - Linked
chat.abort = cmdAbortduring command execution so that/stopor turn cancellation can abort active commands. - Cleaned up
chat.abortback toundefinedinfinallyblock to maintain idle chat invariants.
- Resolved
- Design Contract Alignment (
docs/design/DESIGN.md, Gitea #167):- Updated Section 10 (Locked Design Decisions) with architecture guarantees for runtime command
AbortSignalpropagation.
- Updated Section 10 (Locked Design Decisions) with architecture guarantees for runtime command
Verification
- 321/321 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Production deployment verified on DSH profile
web.
Issues & Pull Requests
- Closes #11
Русский
Исправления и улучшения
- Гарантированная передача AbortSignal в runtime-команды на неактивном чате (
lib/gateway.js, Gitea #167, Resolves #11):- Устранена ошибка
TypeError: Cannot read properties of undefined (reading 'aborted')при вызове команд DSH (/compact,/goal, команды плагинов) в состоянии покоя между ходами агента. - Инициализируется изолированный
AbortController, иcmdAbort.signalгарантированно передаётся в сервисcommandsService.execute(agent, cleanBody, attachments, cmdAbort.signal), еслиchat.abortне определён. - Контроллер временно связывается с
chat.abort = cmdAbortна время выполнения команды, что позволяет прерывать долгие команды через/stopили отмену. - В блоке
finallyсвойствоchat.abortбезопасно возвращается вundefined.
- Устранена ошибка
- Дизайн-контракт (
docs/design/DESIGN.md):- Зафиксировано архитектурное решение в разделе 10.
Проверки
- 321/321 тестов успешно пройдены (
npm test). - Префлайт пройден без ошибок (
dsh-plugin-preflight: FAIL=0, WARN=6). - Пакет опубликован в npm (
@goodandready/dsh-messenger-gateway@0.4.23).
v0.4.22 [DSH v0.2.1-rc.2]
English
Bug Fixes & Usability
- Skill Gesture Hyphen Restoration (
lib/forum-mirror.js,lib/gateway.js, Refs GH #9):- Maintained dynamic mapping from Telegram-sanitized underscore command names back to original hyphenated skill names (
gw.skillNameMap). - Added
restoreSkillGesture(gw, body)to restore hyphenated skill gesture tokens (e.g./code_review->/code-review), enabling DSH's@deepseek-ai/dsh-tool-skillSKILL_GESTUREscanner to recognize and load skills tapped from Telegram's command menu. - Preserved literal underscore skill names if explicitly registered in the raw skill registry.
- Automatically stripped optional
@BotNamegroup mentions before matching.
- Maintained dynamic mapping from Telegram-sanitized underscore command names back to original hyphenated skill names (
- DSH Runtime Command Direct Execution (
lib/gateway.js, Refs GH #10):- Integrated direct execution of DSH runtime commands (
/compact,/goal, and custom plugin commands) via Cordiscommands.execute(chat.agent, cleanBody, attachments, signal). - Returned execution outcome directly to the messenger user (
outcome.result?.textor localizedmsg.command_done) without initiating unnecessary LLM turns or consuming model tokens. - Seamlessly fell through to standard turn loop (
runTurn) when command is unhandled or corresponds to a skill gesture. - Added localized strings for
msg.command_donein English and Chinese.
- Integrated direct execution of DSH runtime commands (
- Design Contract Alignment (
docs/design/DESIGN.md):- Updated Section 10 (Locked Design Decisions) with architecture guarantees for skill hyphen restoration and runtime command execution.
Verification
- 319/319 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Production deployment verified on DSH profile
web.
Issues & Pull Requests
Русский
Исправления и улучшения
- Восстановление дефисов в жестах навыков из меню Telegram (
lib/forum-mirror.js,lib/gateway.js, Refs GH #9):- Реализовано динамическое сохранение маппинга санитизированных Telegram-команд в оригинальные имена навыков с дефисами (
gw.skillNameMap). - Добавлена функция
restoreSkillGesture(gw, body), восстанавливающая оригинальный жест (например,/code_review->/code-review), благодаря чему сканерSKILL_GESTUREв@deepseek-ai/dsh-tool-skillактивирует навык при тапе из меню бота. - Имена навыков, буквально зарегистрированные через подчёркивание, не перезаписываются.
- Очищаются упоминания бота в группах (
/code_review@BotName->/code-review).
- Реализовано динамическое сохранение маппинга санитизированных Telegram-команд в оригинальные имена навыков с дефисами (
- Прямое исполнение runtime-команд DSH (
lib/gateway.js, Refs GH #10):- Внедрён прямой вызов командного сервиса DSH
commands.execute(chat.agent, cleanBody, attachments, signal)для системных команд (/compact,/goal, плагинные команды). - Результат выполнения возвращается напрямую пользователю в мессенджер без запуска LLM-хода и расхода токенов модели.
- Нераспознанные команды и вызовы навыков прозрачно передаются в стандартный цикл исполнения хода (
runTurn). - Добавлены локализации
msg.command_doneна английском и китайском языках.
- Внедрён прямой вызов командного сервиса DSH
- Дизайн-контракт (
docs/design/DESIGN.md):- Актуализирован раздел 10 (Locked Design Decisions).
v0.4.21 [DSH v0.2.1-rc.2]
English
Bug Fixes & Usability
- Dynamic Skills Registration & Telegram Autocomplete (
lib/forum-mirror.js, Refs GH #7):- Made
collectDynamicSkills(ctx)asynchronous withawait skillsService.list(), resolving silent promise iteration errors and ensuring dynamic skills populate Telegram command autocomplete. - Aligned user-invocability checks with the
@deepseek-ai/dsh-skillcontract (s.invocation?.userInvocable !== false). - Implemented
truncateSafe()utility enforcing a strict 80-character budget per dynamic skill to avoid Telegram Bot API aggregate command limits (BOT_COMMANDS_TOO_MUCH). - Guaranteed UTF-16 surrogate safety, preventing lone high surrogates (
!str.isWellFormed()) that previously caused Telegram400 Bad Request.
- Made
- Slash Command Agent Pass-Through (
lib/gateway-commands.js,lib/gateway.js, Refs GH #8):- Allowed unrecognized slash commands to pass through to the underlying DSH agent (
forwardToAgent: true) instead of immediately rejecting them withUnknown command /xxx. - Enables messenger invocation of DSH runtime commands (
/compact,/goal), dynamic skills, and plugin commands. - Automatically strips Telegram group/forum bot username tags (e.g.
/compact@MyBot->/compact) before feeding the turn to the agent.
- Allowed unrecognized slash commands to pass through to the underlying DSH agent (
- Design Contract Alignment (
docs/design/DESIGN.md):- Updated Section 10 (Locked Design Decisions) with architecture guarantees for dynamic skill collection and command pass-through.
Verification
- 315/315 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Production deployment verified on DSH profile
web.
Issues & Pull Requests
Русский
Исправления и улучшения
- Регистрация динамических навыков в автодополнении Telegram (
lib/forum-mirror.js, Refs GH #7):- Сбор навыков
collectDynamicSkills(ctx)переведён на асинхронный вызов сawait skillsService.list(), устраняя ошибку и гарантируя появление установленных навыков в списке команд Telegram. - Проверка доступности навыков для вызова пользователем приведена в соответствие с контрактом
@deepseek-ai/dsh-skill(s.invocation?.userInvocable !== false). - Введена функция
truncateSafe()с лимитом 80 символов на описание: исключает расщепление UTF-16 суррогатов (isWellFormed() === true) и предотвращает превышение общего лимита TelegramsetMyCommands(BOT_COMMANDS_TOO_MUCH).
- Сбор навыков
- Сквозная передача слэш-команд агенту (
lib/gateway-commands.js,lib/gateway.js, Refs GH #8):- Нераспознанные встроенным шлюзом команды больше не блокируются ошибкой
Unknown command /xxx, а передаются в рабочий цикл агента. - Позволяет вызывать через мессенджер runtime-команды ядра DSH (
/compact,/goal), установленные плагинные команды и навыки. - Автоматически отсекается имя бота при вызове команд в группах (
/compact@BotName->/compact).
- Нераспознанные встроенным шлюзом команды больше не блокируются ошибкой
- Дизайн-контракт (
docs/design/DESIGN.md):- Актуализирован раздел 10 (Locked Design Decisions).
v0.4.20 [DSH v0.2.1-rc.2]
English
Features & Usability
- Working Directory (
agent.cwd) in Web UI Settings Card (lib/client.js,lib/index.js, #159, #160, Refs GH #6):- Exposed the previously invisible
agent.cwdconfiguration parameter in the Web UI Settings card under Agent & reasoning behaviour. - Added dynamic hint showing effective directory fallback (
process.cwd()) when left blank. - Implemented directory path validation and warning badge (
⚠️ Directory does not exist or is not accessible) for invalid or non-existent directories. - Added localization support for English, Chinese, and Russian.
- Exposed the previously invisible
- Automatic DSH Workspace Registration (
lib/workspace.js,lib/gateway.js, #159, #160, Refs GH #6):- Implemented
registerSessionInWorkspaceusing Cordisctx.workspaceRegistrywith automatic fallback to atomic write of~/.dsh/storages/workspace.json. - Automatically files new messenger gateway sessions (
msgw-*) into the matching DSH workspace by canonical path. - Resolves the issue where all gateway sessions landed in DSH's "Ungrouped" (未分组) bucket in the sidebar.
- Implemented
- Chat Command
/cwd(lib/commands.js,lib/gateway-commands.js, #159, #160, Refs GH #6):- Added
/cwdcommand to view current chat session working directory and configuration source. - Unified
/filesand/getcommands to resolve paths viaresolveEffectiveCwd.
- Added
- Design Contract Alignment (
docs/design/DESIGN.md, #159, #160):- Updated Section 2 (User Surfaces) and Section 10 (Locked Design Decisions).
Verification
- 308/308 automated unit and integration tests passing (
npm test). - Mechanical preflight checks passed (
dsh-plugin-preflight: FAIL=0, WARN=6). - Verified on isolated DSH test server profile.
Issues & Pull Requests
- Resolves GitHub Issue #6
- Resolves Gitea Issue #159 and Gitea PR #160
Русский
Новые возможности и удобство
- Настройка рабочей директории (
agent.cwd) в карточке настроек Web UI (lib/client.js,lib/index.js, #159, #160, Refs GH #6):- В карточке настроек в блоке «Agent & reasoning behaviour» открыт параметр
agent.cwd, ранее требовавший ручной правкиcordis.patch.yml. - Добавлена подсказка с эффективной директорией по умолчанию (
process.cwd()). - Добавлена валидация пути с предупреждающим бейджем при указании несуществующего пути.
- Полная поддержка локализации интерфейса на английском и китайском языках.
- В карточке настроек в блоке «Agent & reasoning behaviour» открыт параметр
- Автоматическая регистрация сессий в Workspace DSH (
lib/workspace.js,lib/gateway.js, #159, #160, Refs GH #6):- Реализован механизм
registerSessionInWorkspaceчерез сервисctx.workspaceRegistryс атомарным fallback-сохранением в~/.dsh/storages/workspace.json. - Новые сессии мессенджера (
msgw-*) автоматически привязываются к Workspace с совпадающим путём и группируются в сайдбаре DSH вместо категории «未分组» (Без группы).
- Реализован механизм
- Команда чата
/cwd(lib/commands.js,lib/gateway-commands.js, #159, #160, Refs GH #6):- Добавлена команда
/cwdдля просмотра текущей рабочей директории диалога. - Команды
/filesи/getунифицированы на использованиеresolveEffectiveCwd.
- Добавлена команда
- Дизайн-контракт (
docs/design/DESIGN.md):- Актуализированы разделы 2 и 10.