Skip to content

release: v0.1.1-beta.1#1339

Merged
zerob13 merged 24 commits intomainfrom
dev
Mar 10, 2026
Merged

release: v0.1.1-beta.1#1339
zerob13 merged 24 commits intomainfrom
dev

Conversation

@zerob13
Copy link
Copy Markdown
Collaborator

@zerob13 zerob13 commented Mar 10, 2026

  • 全新 Agent 架构:重构 Agent UI 与 Agent Loop,模块化流处理,统一代码路径
  • 移除 Chat 模式:简化模式选择,仅保留 Agent 和 ACP Agent 两种模式
  • 默认模型配置系统:新增默认模型与默认视觉模型全局设置
  • 内置 DimCode Agent:预置 ACP Agent,开箱即用的代码助手

  • New Agent Architecture: Rebuilt the Agent UI and Agent Loop with modular stream processing and a unified code path.
  • Removed Chat Mode: Simplified mode selection by keeping only two modes—Agent and ACP Agent.
  • Default Model Configuration System: Added global settings for the default model and default vision model.
  • Built-in DimCode Agent: Preconfigured ACP Agent providing an out-of-the-box coding assistant.

zerob13 and others added 24 commits February 11, 2026 15:34
* docs(agent): add tooling v2 spec plan

* feat(agent): canonicalize fs runtime tools

* fix(agent): guard exec when bg sessions running

* docs(agent): update prompt pipeline spec plan tasks

* refactor(agent): stabilize system prompt

* fix(skill): normalize skills dir path

* fix(agent): refine env prompt and skills dir

* chore(docs): sync docs and env prompt
* docs: remove chat mode plan

* feat(core): remove chat mode and web search

- Remove 'chat' mode, keep only 'agent' and 'acp agent' modes
- Migrate legacy 'chat' mode conversations to 'agent' mode silently
- Remove web search feature (searchPresenter, search components, stores)
- Remove search-related config (enableSearch, forcedSearch, searchStrategy)
- Remove ContentEnricher and web content length limit
- Update all ChatMode type definitions
- Clean up i18n files for all 12 languages
- Update toolPresenter to always load agent tools

BREAKING CHANGE: 'chat' mode is no longer available

* feat(core): remove chat mode and web search

- Remove 'chat' mode, keep only 'agent' and 'acp agent' modes
- Migrate legacy 'chat' mode conversations to 'agent' mode silently
- Remove web search feature (searchPresenter, search components, stores)
- Remove search-related config (enableSearch, forcedSearch, searchStrategy)
- Remove ContentEnricher and web content length limit
- Update all ChatMode type definitions
- Clean up i18n files for all 12 languages
- Update toolPresenter to always load agent tools

BREAKING CHANGE: 'chat' mode is no longer available

* feat(core): remove chat mode and web search

- Remove 'chat' mode, keep only 'agent' and 'acp agent' modes
- Migrate legacy 'chat' mode conversations to 'agent' mode silently
- Remove web search feature (searchPresenter, search components, stores)
- Remove search-related config (enableSearch, forcedSearch, searchStrategy)
- Remove ContentEnricher and web content length limit
- Update all ChatMode type definitions
- Clean up i18n files for all 12 languages
- Update toolPresenter to always load agent tools

BREAKING CHANGE: 'chat' mode is no longer available

* fix(i18n): add missing settings unit keys

* "fix(agent):lazy_migration"

* fix(agent): honor fallback chat mode

* chore: remove agentmode flag

* fix: close process when close session

* fix(chat-input): restore mcp tools and prompts in at-mention

- Add tools and prompts watchers back to useMentionData
- Improve workspace search with registration state tracking
- Add fallback handling when ripgrep is unavailable

* chore: remove temp file

* fix(agent): fix dashscope override and chatMode
* fix: align responses ids and text handling

* chore: update providers.json
* docs: add spec for default model setting

* feat: #1174 support default models setting

* fix(settings): sync model selections with ACP mode and improve error handling

- Add ACP mode check when applying default model in NewThread.vue
- Add error handling in DefaultModelSettingsSection.vue syncModelSelections
- Update imageModel i18n keys to remove 'select' verb for display-only fields
* fix(settings): disable auto-fallback in default model selection

Remove automatic model fallback in DefaultModelSettingsSection to prevent
unintended model changes when providers load late. Models now only change
on explicit user selection.

* fix: format
Switches from HTTP-Referer/X-Title to a standard User-Agent: DeepChat/{version}
header for Anthropic API identification.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
chore: upgrade markstream-vue
chore: update markstream-vue compress bundle size
* feat: implement WindowSideBar two-column mock layout

Add agent icon sidebar with liquid drop styling and session list
with date-grouped mock data. Main content area gets rounded corner
and shadow separation. Sidebar/appbar use semi-transparent background.

* feat: move action buttons to sidebar and remove history view

Move browser and settings buttons from AppBar to WindowSideBar bottom
icon column. Remove history button, ThreadView overlay, and all
associated toggle/event handling code.

* feat: add new thread mock page

Add a pure visual mock for the redesigned new thread page using shadcn
primitives. Includes centered logo/heading, textarea input with attach/mic/send
toolbar, and a status bar with model, effort, and permissions selectors.

* feat: add mock chat page, refactor mock components, and add project grouping toggle

Refactor NewThreadMock into reusable mock components (MockInputBox,
MockInputToolbar, MockStatusBar). Add MockChatPage with sticky top bar
and input area, MockMessageList with sample conversation, and shared
mock view state composable. Wire sidebar session clicks to switch
between new thread and chat views. Add project grouping toggle to
sidebar header.

* feat: add project selector to new thread page and project title to chat top bar

Add a dropdown project/workdir selector to NewThreadMock with recent
projects and an open folder option. Thread project directory through
mock view state so MockTopBar displays a folder breadcrumb prefix
alongside the session title.

* feat: add welcome page mock, default DeepChat agent, and sidebar collapse

- Add MockWelcomePage with provider grid and ACP agent setup option
- Add DeepChat as default first agent in sidebar
- Add empty state for session list
- Add sidebar collapse/expand with macOS traffic light accommodation
- Add debug toggle button for welcome page

* fix(preload): add URL protocol filter for openExternal (#1314)

* feat: support default model setting (#1315)

* docs: add spec for default model setting

* feat: #1174 support default models setting

* fix(settings): sync model selections with ACP mode and improve error handling

- Add ACP mode check when applying default model in NewThread.vue
- Add error handling in DefaultModelSettingsSection.vue syncModelSelections
- Update imageModel i18n keys to remove 'select' verb for display-only fields

* fix(settings): disable auto-fallback in default model selection (#1316)

* fix(settings): disable auto-fallback in default model selection

Remove automatic model fallback in DefaultModelSettingsSection to prevent
unintended model changes when providers load late. Models now only change
on explicit user selection.

* fix: format

* refactor: simplify window/session/presenter architecture and remove SideBar

Remove multi-tab/multi-window complexity from presenters, simplify shell
UI by removing SideBar component and streamlining AppBar, and clean up
unused event handlers and shortcut bindings.

* refactor: remove macOS-specific UI handling and improve icon inversion logic

* feat: implement new UI store layer, page components, chat components, and sidebar integration

Implement Phases 1-4 of the new UI architecture:

- Phase 1: Add 4 Pinia stores (pageRouter, session, agent, project) with
  IPC mapping to presenters, event listeners, and error handling
- Phase 2: Create 3 page components (WelcomePage, NewThreadPage, ChatPage)
  and refactor ChatTabView to route via pageRouter store
- Phase 3: Create 5 chat components (ChatTopBar, MessageList, ChatInputBox,
  ChatInputToolbar, ChatStatusBar) matching mock designs exactly
- Phase 4: Refactor WindowSideBar to use store data instead of mock data
- Add specs and implementation plan documentation

* fix: JSON-encode message content for agentPresenter.sendMessage

The agentPresenter.sendMessage expects content as JSON-encoded
UserMessageContent ({text, files, links, search, think}), not raw
text. Raw text caused JSON.parse failures in MessageManager and
TypeError when setting properties on non-object content.

* fix: wire ChatPage to existing chat store for message display

ChatPage now uses useChatStore().variantAwareMessages for the message
list and chatStore.sendMessage() for sending. MessageList component
updated to handle real Message types (UserMessageContent for user
messages, AssistantMessageBlock[] for assistant messages) instead of
plain text placeholders.

* feat: agent-aware sessions, working status bar, markdown rendering (Phase 6)

- NewThreadPage passes agentStore.selectedAgentId to session creation,
  with providerId/modelId set for ACP agents
- Session creation uses forceNewAndActivate to prevent backend from
  reusing empty conversations with different agent settings
- ChatStatusBar wired to chatStore.chatConfig and modelStore for real
  model/effort selection; shows selected agent context on NewThreadPage
- Effort selector hidden for ACP agents (not applicable)
- MessageList rewritten to use existing MessageItemAssistant and
  MessageItemUser components for full markdown/code/tool rendering
- modelStore.initialize() added to ChatTabView onMounted
- Phase 6 specs and todo tracking added

* feat: implement new agent architecture v0 with full processing pipeline

Implement agent-centric architecture replacing old sessionPresenter pattern:

- Shared types: IAgentImplementation, Agent, Session, ChatMessageRecord, etc.
- DB tables: new_sessions, new_projects, deepchat_sessions, deepchat_messages
- DeepChatAgentPresenter: message persistence, LLM coreStream consumption,
  batched stream flushing (120ms renderer, 600ms DB), crash recovery
- NewAgentPresenter: agent registry, session manager, message routing
- ProjectPresenter: project CRUD with directory picker
- Renderer stores: session, message, agent, project, draft (all new arch)
- ChatPage wired to new message store with streaming block display
- NewThreadPage resolves model via defaultModel/preferredModel/first enabled
- 94 unit + integration tests across 9 test files
- Debug logging throughout processing pipeline

* feat: add multi-turn context assembly and auto-scroll for new agent (v1)

- Add contextBuilder with system prompt injection, conversation history
  assembly, and token-based truncation using approximateTokenSize
- Wire buildContext into processMessage, building context before DB
  persist to avoid duplicate user messages in LLM calls
- Add optimistic user message in renderer message store so user messages
  appear immediately without waiting for stream completion
- Add auto-scroll to ChatPage: scroll to bottom on load, on new messages,
  and during streaming; respect user scroll-up to stop auto-following
- Update v0 tests and add new tests for context builder and multi-turn
  integration (110 tests passing across 10 files)

* feat: add MCP tool calling with agent loop for new agent (v2)

Add tool calling support to the DeepChat agent via an agent loop that
passes tool definitions to coreStream, accumulates tool calls from the
stream, executes them via ToolPresenter.callTool(), and re-calls the LLM
until it stops requesting tools. Includes block accumulation across loop
iterations, server info enrichment, grouped truncation of tool messages
in context builder, and proper abort/error path delegation between
streamHandler and agentLoop.

* fix: include reasoning_content in agent loop for DeepSeek Reasoner

DeepSeek Reasoner (and similar models like kimi-k2-thinking, glm-4.7)
requires a reasoning_content field on assistant messages that contain
tool_calls. Without it, the API returns a 400 error. Extract reasoning
blocks separately in both the agent loop and context builder, and
include them on the assistant message when the model requires it.

* fix: scope reasoning_content to current agent loop exchange

For interleaved thinking models (DeepSeek Reasoner, kimi-k2-thinking),
reasoning_content is only required on assistant messages in the current
agent loop exchange (after the last user message), not on historical
messages from the DB. Also fix content field to always be a string
(not undefined) on assistant messages with tool_calls, matching the
existing agentLoopHandler behavior.

* refactor: split stream processing into 5 focused modules (v3)

Replace tangled streamHandler.ts and agentLoop.ts with a clean 5-module
architecture: types.ts (shared state), accumulator.ts (pure event→block
mutations), echo.ts (batched renderer/DB flushing), dispatch.ts (tool
execution and finalization), and process.ts (unified loop). Eliminates
tools-vs-no-tools branching in index.ts — single processStream() call
handles both simple completions and multi-turn tool calling. Extracts
reusable trailing-edge throttle utility to shared/utils/throttle.ts.
Pure refactor with no behavior changes.

* fix: stop passing sessionId as conversationId to tool definitions

New agent sessions live in deepchat_sessions, not the legacy
conversations table. Passing the session ID as conversationId caused
SkillPresenter.getActiveSkills to throw "Conversation not found".
Drop the conversationId param since the new agent doesn't use skills.

* docs: update specs and tasks for completed v2/v3 milestones

Mark v2 spec as complete and superseded by v3 module structure.
Update v3 spec to match final implementation. Clean up tasks to
remove references to deleted files and add v2/v3 task sections
with all items checked off.

* docs: mark all verification tasks as complete

* docs: add mvp for agentpresenter doc

* docs: add implementation plan and spec (#1322)

* docs: complete architecture gap analysis and implementation plan

- Add comprehensive gap-analysis.md documenting all functional differences
- Update spec.md with implementation notes for each acceptance criterion
- Update plan.md with current status and critical path identification
- Update tasks.md with detailed implementation tasks and priorities

Key findings:
- Streaming and message persistence: COMPLETE ✅
- Permission flow: NOT STARTED 🔴 CRITICAL
- Message operations (edit/retry/fork): NOT STARTED 🟡
- Session configuration: PARTIAL (missing advanced options) 🟢

Critical gaps identified:
1. executeTools() in dispatch.ts has NO permission checks
2. ChatStatusBar shows read-only 'Default permissions' button
3. No PermissionChecker class or whitelist storage
4. No IPC methods for handlePermissionResponse()
5. new_sessions table missing permission_mode column

See gap-analysis.md for complete details and implementation plan.

* docs: add executive summary for gap analysis

* docs: complete P0 implementation spec-driven documentation

- Add comprehensive specs for all 7 P0 features
- Include implementation plans with phased approach
- Define granular tasks with code examples
- Update P0_DESIGN_DECISIONS.md with finalized decisions
- Add P0_IMPLEMENTATION_SUMMARY.md with roadmap

Features documented:
1. Generating Session IDs Tracking
2. Input Box Disable + Stop Button
3. CancelGenerating Implementation
4. Permission Approval Flow
5. Session List Auto-Refresh
6. Optimistic User Messages
7. Message Cache Version Bumping

Total: 25 new documentation files (~3,500+ lines)
Ready for implementation phase.

* docs(specs): refine p0 implementation plan

* fix(chat): use selected model for new session

* fix(chat): align stream updates by message id

* fix(chat): pass session workdir to tools

* feat(chat): async generate session title

* fix(agent): handle new session id lookups

* feat: request permisson and question on edit area

* feat: question request block display only

* fix(chat): apply new-thread permission mode

* fix(input): guard enter during IME composition

* feat(chat): add stop button during message generation

Co-Authored-By: DimCode <noreply@dimcode.dev>

* feat(chat): add @ and / tiptap mentions

* feat: add support for acp agents

* feat(acp): bootstrap draft session init

* fix(acp): stabilize switch lifecycle

* feat(agent): restore input advanced settings

* fix(renderer): polish status bar and ACP draft

* fix(chat): refine model switching and modal behavior

* fix(i18n): add advanced settings translations

* docs: add toolbar spec and plan

* feat: add support for message tool bar

* fix: copy image with user

* feat(trace): persist message request traces

* feat(chat): add topbar share/more menus

* fix(new-agent): complete migration and stream sync

* feat(chat): add assistant right-click menus

* chore(i18n): add missing chat topbar translations

* feat(db): add agent db legacy import

* feat: add safeCall support for usePresenter (#1328)

* docs(spec): sync p0 implementation status

* fix(agent-db): migrate legacy call paths

* fix(session): guard legacy thread broadcast

* fix(renderer): ignore legacy-import stream events

* test: add sqlite test

* refactor(chat): migrate main flow stores

* fix(import): release chat.db handle early

* fix(import): cleanup empty legacy db sidecars

* refactor(core): migrate chat store + backup import

* feat(chat): migrate attachments and read routing

* fix(skills): persist pending skills on first send

* fix(deepchat): cache stable system prompt

---------

Co-authored-by: deepinsect <deepinsect@github.com>
Co-authored-by: duskzhen <zerob13@gmail.com>
Co-authored-by: DimCode <noreply@dimcode.dev>
Co-authored-by: FangQiJun 房启俊 <zfangqj@gmail.com>
)

* refactor(mcp): simplify config and drop powerpack

* refactor(mcp): merge market into settings

* chore: remove sponsor info

* fix(mcp): align server toggle state
- Add shared modelConfigDefaults with standardized settings
- Update configPresenter to use provider-driven model config
- Refactor LLM providers to use new model config API
- Update modelStore and ollamaStore for defaults support
- Add/update tests for new model config behavior
- Update ModelConfigDialog UI component

Co-authored-by: DimCode <noreply@dimcode.dev>
* refactor(deepchat): add summary cursor compaction

* fix(chat): refine compaction message flow

* fix(compaction): harden summary flow
* fix(agent): guard large tool outputs

* fix(agent): harden tool output guard
* feat(chat): unify right sidepanel

* fix(browser): harden embedded sidepanel

* fix(sidepanel): polish viewer i18n
* fix: session hooks and notifactions

* fix: chatstatusbar width

* fix: review issue
* fix(think): persist reasoning duration

* feat(acp): add dimcode-acp builtin agent

* fix(session): sync model settings on switch

* fix: test case
* fix(i18n): align agent ui copy and keys

* fix(i18n): translate new agent ui locale keys
* refactor(hooks): migrate hooksNotifications to new agent system

- Update HooksNotificationsDeps type to use new agent methods
- Replace getConversation with getSession, remove resolveWorkspaceContext
- Update buildPayload to extract workdir from session.projectDir directly
- Refactor extractPromptPreview to handle JSON serialized content
- Adjust presenter initialization order for dependency injection

* fix: i18n input @

* docs: update docs for new arch

* chore: bump version

* fix: browser window open bug

* fix(browser): guard embedded navigation
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 10, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9789cde2-2e37-40fa-a95f-7225ac0989e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zerob13 zerob13 marked this pull request as ready for review March 10, 2026 05:11
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@zerob13 zerob13 merged commit 81c482d into main Mar 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants