)
* feat: add landing page for beta onboarding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: update GitHub links to genni613/CodePlanGUI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(execution): stream assistant response after execution cards with correct ordering
* fix: cancel flushTimer on dispose and synchronize flushPendingBuffer to prevent race condition and resource leak
* docs: add unified event system and message grouping design spec
Covers two-phase migration: Phase 1 unifies 13 bridge callbacks into
a single onEvent channel with eventReducer; Phase 2 introduces
MessageGroup-based rendering to eliminate backend ordering hacks
(notifyRemoveMessage, bridgeNotifiedStart, lazy bubble creation).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: fix spec review issues in unified events & grouping design
- Correct dispatch strategies for notifyContextFile/notifyTheme (pushJS, not flushAndPush)
- Fix flushAndPush signature (String param, not lambda)
- Use kotlinx.serialization instead of non-existent JSONObject.quote
- Preserve useBridge bridge_ready lifecycle, don't overwrite window.__bridge
- Add action field to structured_error event payload
- Complete error/structured_error cases in groupReducer
- Replace pseudocode token index tracking with concrete logic
- Add msgId invariant note across API rounds
- Handle double-encoding in restore_messages payload
- Preserve debug log side effects in event handler
- Add notifyStart timing consideration note for Phase 2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: fix buildEventJS contract and notifyRoundEnd safety
- Change buildEventJS payload param from String to Map<String, Any?>
to prevent double-encoding when callers pass pre-encoded JSON
- Use mapOf() for notifyRoundEnd payload instead of string
interpolation to avoid JSON injection from special characters
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: translate unified events & message grouping spec to Chinese
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: split unified events & grouping spec into two separate docs
- Phase 1: unified-event-channel-design.md — single onEvent channel,
eventReducer, BridgeHandler buildEventJS refactor
- Phase 2: message-grouping-design.md — MessageGroup rendering,
groupReducer, ChatService hack removal
Each doc is self-contained for independent PR review.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: unify 15 bridge callbacks into single onEvent channel
* refactor: unify 15 bridge callbacks into single onEvent channel
---------
Co-authored-by: yuang.peng <yuang.peng@yaduo.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
User description
Summary
Changes
Test plan
PR Type
Enhancement
Description
Unify 15 bridge callbacks into single
onEventchannel for Phase 2 messagingAdd tool execution engine with 6 built-in tools (bash, read_file, write_file, edit_file, list_files, grep_files)
Implement 4-layer architecture: ToolRegistry → ToolCallDispatcher → ToolExecutor → ToolHook
Replace MessageBubble with AssistantGroup + message grouping for proper response ordering
Diagram Walkthrough
File Walkthrough
22 files
Central tool dispatcher with full pipelineDefine 6 built-in tool specificationsCentral tool registry with lifecycleInterface for all tool executorsUnified result type for toolsExecution context for toolsTool registration metadataThree-level permission enumBash/powershell command executorFile reader with paginationWhole-file write with reviewPrecise text replacement executorDirectory listing executorPattern search executorFile change review dialogsConcurrent file write lockingHook interface for toolsLogging hook implementationIntegrate unified tool dispatcherUnify callbacks into onEvent channelMigrate to groupReducer stateUnified event handler reducer1 files
Add toToolResult conversion1 files
Add unified tools settings1 files
Update Bridge type for onEvent20 files