Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## v1.0.4-beta.8 (2026-05-12)
- Added a redesigned settings control center with overview cards, grouped navigation, settings activity, and refined MCP, provider, and data panels
- Added an isolated Feishu plugin settings surface with credential management, MCP presets, and plugin-owned MCP servers hidden from global MCP settings
- ACP client runtime now has clearer connection and session routing, debug logging, path guarding, and persisted turn metadata for steadier ACP sessions
- Weixin remote control now delivers generated images and avoids leaving silent pending interactions behind
- Feishu remote replies now send post payloads with the expected message shape
- Agent failed-message context is preserved more consistently after compaction and context-pressure errors
- Updated AI SDK patch versions and refreshed bundled provider and ACP registry data for fresher runtime compatibility
- 设置页升级为控制中心,新增概览卡片、分组导航、设置活动记录,并优化 MCP、Provider 与数据设置面板
- 新增隔离的飞书插件设置页,支持凭证管理、MCP 预设,并从全局 MCP 设置中隐藏插件自有 MCP server
- ACP client runtime 现在具备更清晰的连接与会话路由、调试日志、路径保护和 turn 元数据持久化,让 ACP 会话更稳定
- 微信远程控制现在可以发送生成图片,并避免留下静默的 pending 交互
- 飞书远程回复现在会按预期消息结构发送 post payload
- Agent 在上下文压缩和上下文压力错误后,会更稳定地保留失败消息上下文
- 更新 AI SDK patch 版本,并刷新内置 Provider 与 ACP registry 数据,提升运行时兼容性新鲜度

## v1.0.4-beta.7 (2026-05-11)
- Added Mistral as a built-in provider, including model icons, provider catalog support, and deeplink handling
- Agent runs now budget tool schemas and tool output more defensively, reducing oversized context failures and follow-up stalls
Expand Down
32 changes: 32 additions & 0 deletions docs/architecture/acp-client-runtime/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# ACP Client Runtime Plan

## Runtime Boundary

Add `src/main/presenter/acpClientPresenter/` as the internal ACP runtime boundary. The first implementation keeps the current provider-facing API stable by making `AcpProvider` a compatibility adapter over the runtime.

The runtime owns:

- connection/process lifecycle and debug backlog;
- session lifecycle and MCP forwarding;
- prompt concurrency;
- client-side handlers for permissions, filesystem, terminal, and auth;
- event mapping from ACP updates to DeepChat stream/workspace events.

## Implementation Sequence

1. Create SDD docs and conformance checklist.
2. Add the ACP runtime facade and prompt controller.
3. Move provider construction to the runtime facade while keeping public behavior compatible.
4. Remove warmup `session/new` probing and let real session responses drive config/mode/model state.
5. Register persisted load-session handlers before `session/load` so replayed updates are not dropped.
6. Route debug actions through the initialized connection state and real MCP selections.
7. Harden fs and terminal workdir guards.
8. Refresh settings on ACP agent change events and release running processes before repair.
9. Add focused regression tests, then run formatting, i18n, and lint checks.

## Compatibility

- Existing ACP registry/manual agent configuration remains valid.
- Existing ACP conversation/session records remain valid.
- Provider id `acp` and model ids remain unchanged.
- No renderer IPC contract changes are required for this slice.
47 changes: 47 additions & 0 deletions docs/architecture/acp-client-runtime/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# ACP Client Runtime

## Problem

DeepChat's ACP integration currently behaves like a provider helper instead of a full ACP client runtime. This causes protocol drift and product bugs:

- warmup can create a temporary `session/new` with empty MCP servers, so agent configuration is probed with a different context than real turns;
- debug `initialize` can be invoked on a connection that was already initialized;
- settings updates for install/repair/enable are not always reflected automatically;
- ACP sessions, file-system access, terminal access, permissions, and session updates do not have a single runtime boundary.

## Goals

- Introduce an internal ACP client runtime boundary that owns connection, session, handler, mapping, workspace, registry, and debug concerns.
- Align DeepChat with ACP's client responsibilities: spawn stdio agents, initialize once, create/load sessions with the current cwd and MCP servers, forward prompts, handle client-side fs/terminal/permission calls, and map `session/update`.
- Preserve DeepChat's existing public model selector, Workspace, MCP, Skills, Remote Control, IPC, and renderer route surfaces.
- Match Zed's configuration boundary: DeepChat forwards cwd/env/MCP/model/mode/config options; ACP agents read their own native configuration directly.

## Non-Goals

- Do not add a Claude-specific or Codex-specific local configuration resolver.
- Do not reset or migrate already persisted ACP summary/session state beyond compatible schema additions.
- Do not redesign the model selector UI in this change.

## Protocol Matrix

| ACP area | DeepChat behavior |
| --- | --- |
| `initialize` | Sent once per process connection after stdio spawn. Capabilities and auth methods are cached on the connection handle. |
| `authenticate` | Routed through the ACP auth/terminal handler when required by the agent. |
| `session/new` | Uses the resolved conversation workdir and DeepChat MCP selections filtered by agent transport capabilities. |
| `session/load` | Used only when the agent declares load support and DeepChat has a persisted ACP session id. |
| `session/prompt` | One active prompt per ACP session; response `stopReason` is persisted as turn completion state. |
| `session/update` | Mapped to DeepChat message/content/tool/plan/diff/terminal/permission events. |
| `session/request_permission` | Routed through DeepChat permission UI/policy and remote-control-safe resolution. |
| `fs/read_text_file` and `fs/write_text_file` | Guarded by realpath validation against registered workdirs. |
| Terminal lifecycle | Bound to the session workdir and routed through DeepChat terminal management. |
| Debug | Shows lifecycle, request, response, notification, permission, stderr, and error entries without re-initializing an existing connection. |

## Acceptance Criteria

- Warmup never creates a throwaway session solely to fetch config state.
- Debug initialize starts or reports the initialized connection and does not send a second ACP initialize request.
- Real sessions are the source of models/modes/config options.
- Settings refresh after enable/install/repair/uninstall without requiring a manual reopen.
- ACP fs and terminal operations are scoped to the registered workdir.
- Non-ACP providers keep their existing context-budget behavior.
16 changes: 16 additions & 0 deletions docs/architecture/acp-client-runtime/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# ACP Client Runtime Tasks

- [x] Add SDD spec, plan, and tasks documents.
- [x] Add internal ACP runtime facade and prompt controller.
- [x] Stop warmup from creating temporary sessions with empty MCP servers.
- [x] Use real MCP selections for debug `session/new` and `session/load`.
- [x] Make debug `initialize` report initialized connection state instead of sending a second initialize request.
- [x] Register load-session handlers before `session/load` replay can emit updates.
- [x] Enforce realpath workspace guards for ACP fs reads/writes.
- [x] Bind terminal cwd to the registered ACP session workdir.
- [x] Refresh ACP settings on agent-change events.
- [x] Release running ACP processes before repair.
- [x] Add targeted ACP regression coverage.
- [x] Run `pnpm run format`.
- [x] Run `pnpm run i18n`.
- [x] Run `pnpm run lint`.
10 changes: 10 additions & 0 deletions docs/features/context-engineering-label/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Implementation Plan

## Change

- Update `settings.controlCenter.groups.knowledge` in Chinese locale files.
- Keep `settings.controlCenter.overview.knowledge` unchanged.

## Validation

- Run format, i18n, lint, and web typecheck.
15 changes: 15 additions & 0 deletions docs/features/context-engineering-label/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Context Engineering Label

## User Story

As a Chinese-language settings user, I want the sidebar group that contains Skills, Prompt, and Knowledge Base to be named "上下文工程", so the section better describes its purpose.

## Acceptance Criteria

- The settings sidebar group currently labeled "知识" displays "上下文工程" in Chinese locales.
- Existing individual item labels such as Skills, Prompt, and Knowledge Base remain unchanged.

## Non-goals

- No route or navigation structure changes.
- No changes to overview metric labels.
5 changes: 5 additions & 0 deletions docs/features/context-engineering-label/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Update Chinese sidebar group label.
- [x] Run validation commands.
12 changes: 12 additions & 0 deletions docs/features/data-sync-card-header/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Implementation Plan

## Change

- Remove the redundant Backup & Sync section header from the data settings sync card.
- Keep the sync controls, backup actions, and import dialog unchanged.
- Remove the redundant Data Operations section header from the maintenance card.
- Keep the maintenance and reset actions unchanged.

## Validation

- Run format, i18n, and lint.
16 changes: 16 additions & 0 deletions docs/features/data-sync-card-header/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Data Sync Card Header

## User Story

As a settings user, I want data settings cards to avoid repeating their titles, so the cards read cleaner and the row labels carry the structure.

## Acceptance Criteria

- The Backup & Sync header inside the data sync card is removed.
- Enable data sync, sync folder, last sync time, backup, and import controls remain unchanged.
- The Data Operations header inside the maintenance card is removed.
- Database repair, model config update, danger zone, and YoBrowser controls remain unchanged.

## Non-goals

- No changes to data sync, backup, import, or repair behavior.
6 changes: 6 additions & 0 deletions docs/features/data-sync-card-header/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Remove the redundant data sync card header.
- [x] Remove the redundant data operations card header.
- [x] Run validation commands.
12 changes: 12 additions & 0 deletions docs/features/mcp-footer-alignment/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Implementation Plan

## Change

- Adjust the MCP server footer wrapper spacing to match the page header inset.
- Expose the MCP Add server dialog trigger so the settings header can host the Add action.
- Hide the footer Add action from the settings page usage.
- Keep the MCP page wrapper from becoming the scroll container so the server grid scrolls independently between the static header and footer.

## Validation

- Run format, i18n, lint, and focused MCP server tests.
19 changes: 19 additions & 0 deletions docs/features/mcp-footer-alignment/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# MCP Footer Alignment

## User Story

As a settings user, I want the MCP footer status bar to align with the page title area, so the bottom controls feel like part of the same layout.

## Acceptance Criteria

- The MCP footer status bar remains pinned to the bottom of the MCP server list.
- The MCP footer status bar remains visible while the server grid scrolls, matching the static page-frame behavior of the MCP Center title area.
- Footer content uses the same horizontal inset as the MCP page title area.
- The Add server action appears in the MCP page title action area.
- The footer no longer shows the Add server action when used on the settings page.
- The NPM registry action uses the shorter NPM Source label.
- Existing footer status values and actions remain unchanged.

## Non-goals

- No changes to MCP server filtering, status calculation, or registry behavior.
7 changes: 7 additions & 0 deletions docs/features/mcp-footer-alignment/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Align MCP footer spacing with the title area.
- [x] Move the Add server action to the MCP title area.
- [x] Keep the MCP footer visible while the server grid scrolls.
- [x] Run validation commands.
13 changes: 13 additions & 0 deletions docs/features/mcp-settings-status-bar/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Implementation Plan

## UI

- Remove the top card grid from `McpSettings`.
- Add a `status-bar` slot to `McpServers` so the page shell can inject compact MCP stats and NPM mirror controls into the existing footer.
- Remove the duplicate MCP market action from the server-list footer because the header already owns that entry.
- Restrict `McpServers` filter options to `all`, `running`, and `stopped`.

## Validation

- Update focused renderer tests that assert footer actions.
- Run focused tests plus required format, i18n, lint, and web typecheck.
18 changes: 18 additions & 0 deletions docs/features/mcp-settings-status-bar/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# MCP Settings Status Bar

## User Story

As a user managing MCP servers, I want the MCP settings page to spend less space on summary cards and filters, so the server list remains the main focus.

## Acceptance Criteria

- The top MCP summary cards are removed.
- Running, built-in, custom, and total server counts are displayed in a compact bottom status bar.
- The NPM mirror/source can be viewed and edited from the far side of the bottom status bar.
- Server filters are limited to All, Running, and Stopped.
- The top MCP market entry and global MCP toggle remain available.

## Non-goals

- No changes to MCP server lifecycle behavior.
- No changes to NPM mirror persistence or validation behavior.
7 changes: 7 additions & 0 deletions docs/features/mcp-settings-status-bar/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Move MCP summary and NPM mirror into a compact bottom status bar.
- [x] Reduce MCP filters to All, Running, and Stopped.
- [x] Update tests.
- [x] Run validation commands.
18 changes: 18 additions & 0 deletions docs/features/provider-detail-simplification/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Implementation Plan

## UI

- Remove status badges from the provider navigation rows and provider detail header.
- Keep the enabled model count badge in the provider detail header.
- Remove the outer rounded/shadow treatment from `ProviderModelManager`.
- Replace the four-tab provider detail layout with three tabs.
- Render `ProviderRateLimitConfig` inside Advanced above provider-specific settings.

## Compatibility

The change is presentation-only. Existing provider, model, and rate limit data flows remain unchanged.

## Validation

- Run repository-required `pnpm run format`, `pnpm run i18n`, and `pnpm run lint`.
- Run `pnpm run typecheck:web` for Vue template safety.
18 changes: 18 additions & 0 deletions docs/features/provider-detail-simplification/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Provider Detail Simplification

## User Story

As a user configuring providers, I want the provider detail page to avoid repeated status tags and heavy model-list card styling, so the page is easier to scan.

## Acceptance Criteria

- The repeated Connected status tag is removed from the provider list and provider detail header.
- The provider detail header still shows the enabled model count.
- The Models tab content no longer uses a card-like border or shadow container.
- Limits is merged into Advanced, leaving the visible tabs as Connect, Models, and Advanced.
- Advanced contains rate limit controls first, followed by provider-specific advanced controls when available.

## Non-goals

- No changes to provider connection, model enablement, or rate limit persistence behavior.
- No changes to Ollama or Bedrock provider architecture beyond the shared model manager styling.
7 changes: 7 additions & 0 deletions docs/features/provider-detail-simplification/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Remove Connected/status badges from provider navigation and detail header.
- [x] Simplify Models tab container styling.
- [x] Merge Limits into Advanced.
- [x] Run format, i18n, lint, and web typecheck.
9 changes: 9 additions & 0 deletions docs/features/remote-system-group/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Implementation Plan

## Change

- Update the `settings-remote` navigation item group from `tools` to `system`.

## Validation

- Run format, i18n, lint, and web typecheck.
15 changes: 15 additions & 0 deletions docs/features/remote-system-group/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Remote System Group

## User Story

As a settings user, I want Remote settings to appear under the System group, so app-level remote control configuration is grouped with other system controls.

## Acceptance Criteria

- Remote settings appears in the System sidebar group.
- The Remote route, label, and page behavior remain unchanged.

## Non-goals

- No changes to remote integrations or runtime behavior.
- No changes to route paths or i18n keys.
5 changes: 5 additions & 0 deletions docs/features/remote-system-group/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Move Remote settings to the System group.
- [x] Run validation commands.
11 changes: 11 additions & 0 deletions docs/features/settings-agent-capability-groups/plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Implementation Plan

## Change

- Update shared settings navigation group assignments for Directory Environment, DeepChat Agent, and ACP Agent.
- Rename the models and tools group labels in locale files.
- Align affected page eyebrow labels with their sidebar group where applicable.

## Validation

- Run format, i18n, lint, and web typecheck.
18 changes: 18 additions & 0 deletions docs/features/settings-agent-capability-groups/spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Settings Agent Capability Groups

## User Story

As a settings user, I want model, agent, and directory environment settings grouped together as Agent settings, so related configuration lives in one place.

## Acceptance Criteria

- The sidebar group previously named Models is labeled Agent Settings.
- Provider settings, DeepChat Agent, ACP Agent, and Directory Environment appear in the Agent Settings group.
- The sidebar group previously named Tools & Agents is labeled Capability Extensions.
- MCP Settings, Hooks, and Plugins remain in the Capability Extensions group.
- Existing route paths and page behavior remain unchanged.

## Non-goals

- No changes to provider, agent, MCP, hooks, plugin, or environment runtime behavior.
- No changes to route names or persisted settings.
7 changes: 7 additions & 0 deletions docs/features/settings-agent-capability-groups/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tasks

- [x] Add SDD artifacts.
- [x] Move Directory Environment and Agent pages into the Agent Settings group.
- [x] Rename Models and Tools & Agents group labels.
- [x] Align affected page eyebrow labels.
- [x] Run validation commands.
Loading
Loading