Skip to content

Releases

v0.4.29: fix TypeError gw.resolveWebAppUrl is not a function

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 03 Nov 11:05

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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Oct 17:08

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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Oct 16:13

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

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Oct 15:05

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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Oct 13:00

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_id into 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().
  • 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).
  • 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 .svg document attachment or styled code card on conversion error.
    • Unit tests added in test/artifacts.test.mjs (10 tests).
  • 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()).
  • Безопасная инъекция .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.
  • Визуализатор 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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Oct 12:32

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) and thoughtCollapse (boolean, default: true).
    • Unit tests added in test/stream-reasoning.test.mjs (11 tests).
  • 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), and disabled.
    • 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).
  • 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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 27 Oct 13:49

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 AbortController and passed cmdAbort.signal to commandsService.execute(agent, cleanBody, attachments, cmdAbort.signal) when chat.abort is undefined on idle chats.
    • Linked chat.abort = cmdAbort during command execution so that /stop or turn cancellation can abort active commands.
    • Cleaned up chat.abort back to undefined in finally block to maintain idle chat invariants.
  • Design Contract Alignment (docs/design/DESIGN.md, Gitea #167):
    • Updated Section 10 (Locked Design Decisions) with architecture guarantees for runtime command AbortSignal propagation.

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


Русский

Исправления и улучшения

  • Гарантированная передача 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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 27 Oct 08:41

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-skill SKILL_GESTURE scanner 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 @BotName group mentions before matching.
  • 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 Cordis commands.execute(chat.agent, cleanBody, attachments, signal).
    • Returned execution outcome directly to the messenger user (outcome.result?.text or localized msg.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_done in English and Chinese.
  • 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).
  • Прямое исполнение runtime-команд DSH (lib/gateway.js, Refs GH #10):
    • Внедрён прямой вызов командного сервиса DSH commands.execute(chat.agent, cleanBody, attachments, signal) для системных команд (/compact, /goal, плагинные команды).
    • Результат выполнения возвращается напрямую пользователю в мессенджер без запуска LLM-хода и расхода токенов модели.
    • Нераспознанные команды и вызовы навыков прозрачно передаются в стандартный цикл исполнения хода (runTurn).
    • Добавлены локализации msg.command_done на английском и китайском языках.
  • Дизайн-контракт (docs/design/DESIGN.md):
    • Актуализирован раздел 10 (Locked Design Decisions).

v0.4.21 [DSH v0.2.1-rc.2]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 26 Oct 09:08

English

Bug Fixes & Usability

  • Dynamic Skills Registration & Telegram Autocomplete (lib/forum-mirror.js, Refs GH #7):
    • Made collectDynamicSkills(ctx) asynchronous with await skillsService.list(), resolving silent promise iteration errors and ensuring dynamic skills populate Telegram command autocomplete.
    • Aligned user-invocability checks with the @deepseek-ai/dsh-skill contract (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 Telegram 400 Bad Request.
  • 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 with Unknown 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.
  • 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

  • Closes #7
  • Closes #8

Русский

Исправления и улучшения

  • Регистрация динамических навыков в автодополнении 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) и предотвращает превышение общего лимита Telegram setMyCommands (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]

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 23 Oct 09:43

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.cwd configuration 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.
  • Automatic DSH Workspace Registration (lib/workspace.js, lib/gateway.js, #159, #160, Refs GH #6):
    • Implemented registerSessionInWorkspace using Cordis ctx.workspaceRegistry with 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.
  • Chat Command /cwd (lib/commands.js, lib/gateway-commands.js, #159, #160, Refs GH #6):
    • Added /cwd command to view current chat session working directory and configuration source.
    • Unified /files and /get commands to resolve paths via resolveEffectiveCwd.
  • 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()).
    • Добавлена валидация пути с предупреждающим бейджем при указании несуществующего пути.
    • Полная поддержка локализации интерфейса на английском и китайском языках.
  • Автоматическая регистрация сессий в 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.