Commit Graph

742 Commits

Author SHA1 Message Date
xintaofei
59f2fd3bbf Merge branch 'cv-main' 2026-04-24 16:02:30 +08:00
xintaofei
8385837640 perf(workspace-state): compress delta history, cache gitignore lookups, tighten debounce 2026-04-24 16:02:06 +08:00
xintaofei
6a0425239f fix(web-server): release port reliably on stop by awaiting graceful shutdown 2026-04-24 15:23:12 +08:00
xintaofei
b79f06f7ae fix(experts): recognize Windows junction links to central store
On Windows the expert enable-status check compared `fs::read_link` output
against the central path, which silently failed for junctions: the link
state fell back to Broken/LinkedElsewhere, so enabled experts kept
reappearing as disabled and disappeared from the message-input expert
list. Switch the link verification to canonicalize both sides (which
transparently follows junctions and symlinks) and add a case-insensitive
path comparison on Windows. Also prefer `junction::get_target` for the
displayed target path.
2026-04-24 14:59:14 +08:00
xintaofei
51598f3b12 Merge branch 'cv-main' 2026-04-24 14:29:44 +08:00
xintaofei
bcfaba10c7 fix(acp): prevent memory blowup from streaming terminal tool output
Large raw_output snapshots from tool_call_update notifications caused
O(N²) traffic through the event pipeline, multi-GB transient allocations
and WKWebView crashes. The fix turns cumulative snapshots into bounded
incremental deltas and removes redundant payload copies.

- Add ToolCallOutputCache keyed by tool_call_id with a 8KB tail
  fingerprint and total length. Detects cumulative extensions by
  matching the cached tail at the expected offset in the incoming
  snapshot, so it works even when the full output grows into the MB
  range. Emits suffix deltas with raw_output_append=true; falls back
  to a truncated replacement when content diverges.
- Cap any single emitted raw_output chunk at 64KB (MAX_SINGLE_EMIT_BYTES)
  with a UTF-8 char-boundary-safe tail and ANSI-sequence-safe trimming.
  Apply the same cap to emit_terminal_output_update.
- Bound the cache at 256 entries with FIFO eviction, and clear entries
  when the tool call reaches completed / failed / cancelled / error.
- Seed the cache via a dedicated seed() method on SessionUpdate::ToolCall
  so the initial event never emits an accidental append.
- Share emit payloads as Arc<serde_json::Value> across broadcast
  receivers and skip the Tauri-side clone: serialize once and hand the
  same Arc to both the webview emit and the WebSocket broadcaster.
- Add 14 unit tests covering boundary cases: identity, prefix extension
  past the cached tail, divergence, oversized deltas, multibyte UTF-8
  truncation, final-status cleanup, FIFO eviction, seed semantics, and
  ANSI-safe trimming.
2026-04-24 14:28:41 +08:00
xintaofei
0e09711e56 feat(codex-skills): surface built-in .system skills as read-only
Scan ~/.codex/skills/.system so Codex CLI's bundled skills (imagegen,
skill-creator, etc.) appear in the $ autocomplete and Skills settings.
Mark them read_only on the API; the save/delete handlers refuse writes
to that path, and the UI shows a system badge with a tooltip and
disables edit/delete/save for those entries.
2026-04-24 14:18:36 +08:00
xintaofei
e9c3076197 fix(message-input): persist draft across restarts by keying on conversation id 2026-04-24 12:32:35 +08:00
xintaofei
f8d7c8966a feat(settings): place quick messages nav below agents 2026-04-24 11:10:31 +08:00
xintaofei
7caf730369 feat(message-input): turn plus button into menu with attach files and quick messages 2026-04-24 11:07:56 +08:00
xintaofei
61778f152b feat(settings): add quick messages management with drag-and-drop sorting
Adds a new "Quick Messages" settings page below Experts for managing reusable title/content snippets, backed by SQLite via SeaORM and exposed through both Tauri commands and the Axum web router. The list supports drag-to-reorder using the same motion/react Reorder pattern as the agent list, with translations provided across all 10 supported locales.
2026-04-24 10:46:33 +08:00
xintaofei
fbe272de4f Merge branch 'cv-main' 2026-04-24 10:05:36 +08:00
xintaofei
089cc7c34e feat(sidebar-conversation-list): show empty-state hint inside expanded folders with no visible conversations 2026-04-24 10:05:20 +08:00
xintaofei
49aee458d2 feat(sidebar): default new folders to neutral foreground color 2026-04-24 09:50:49 +08:00
xintaofei
46764ee53c # Release version 0.10.1
- feat(sidebar): add per-folder color swatch with color picker and neutral conversation rail.
- feat(conversation-context-bar): unify selectors and attachments into a horizontal scrolling row.
- fix(conversation-context-bar): hide selectors divider when no attachments are present.
- fix(conversation-manage-dialog): sort conversations by created_at and display creation time.
- fix(icons): regenerate multi-resolution Windows ICO for crisp desktop icon.
- chore(acp-registry): bump opencode to 1.14.21 and gemini-cli to 0.39.0.

-----------------------------
# 发布版本 0.10.1

- 新增(侧边栏):为每个文件夹添加颜色色块与颜色选择器,会话轨道采用中性色;
- 新增(会话上下文栏):将选择器与附件统一为横向滚动行;
- 修复(会话上下文栏):无附件时隐藏选择器分隔线;
- 修复(会话管理对话框):按 created_at 排序会话并显示创建时间;
- 修复(图标):重新生成多分辨率 Windows ICO 以获得清晰的桌面图标;
- 依赖(ACP 注册表):升级 opencode 至 1.14.21、gemini-cli 至 0.39.0。
2026-04-24 00:38:33 +08:00
xintaofei
211d589160 fix(conversation-context-bar): hide selectors divider when no attachments are present 2026-04-23 23:38:40 +08:00
xintaofei
1148319eba feat(conversation-context-bar): unify selectors and attachments into a horizontal scrolling row
- Pin folder/branch selectors to the left with a subtle divider so they stay visible while scrolling
- Redirect vertical wheel input to horizontal scroll within the bar
- Auto-scroll to the end when new attachments are appended
2026-04-23 23:36:24 +08:00
xintaofei
e80c9e69a9 chore(acp-registry): bump opencode to 1.14.21 and gemini-cli to 0.39.0 2026-04-23 23:12:52 +08:00
xintaofei
1eeb5041a8 feat(sidebar): add per-folder color swatch with picker and neutral conversation rail
- Add `color` column to folder table with migration backfill and hash-based assignment on folder creation
- Expose `update_folder_color` via Tauri command and `/update_folder_color` HTTP route
- Render a color swatch before each folder name in the sidebar header; offer a 10-color palette (9 hues plus a theme-aware foreground sentinel) through the folder context menu
- Show the folder header "new conversation" button only on hover
- Drop the expanded-state tint on folder name and count badge; use a fixed neutral rail color for conversation items
2026-04-23 23:02:58 +08:00
xintaofei
b7eeeb0be4 fix(conversation-manage-dialog): sort conversations by created_at and display creation time 2026-04-23 21:17:27 +08:00
xintaofei
1d3dd0dcd4 fix(icons): regenerate multi-resolution Windows ICO for crisp desktop icon 2026-04-23 21:04:11 +08:00
xintaofei
72e5694632 docs(images): update main light and dark screenshots 2026-04-23 16:28:50 +08:00
xintaofei
7e243412e1 # Release version 0.10.0
- feat(workspace): migrate from per-folder windows to a unified single-window workspace.
- feat(sidebar): overhaul sidebar with draggable folder reorder, per-folder new/import actions, conversation sort toggle, completed filter, and bulk-action management dialog.
- feat(acp-agent-settings): expand OpenCode provider.npm options with additional AI SDK providers.
- fix(transport): replace Tauri listen() to avoid unlisten race crashing on WKWebView.

-----------------------------
# 发布版本 0.10.0

- 新增(工作区):从每文件夹独立窗口迁移到统一的单窗口工作区;
- 新增(侧边栏):全面重构,支持拖拽排序文件夹组、按文件夹新建/导入会话、会话排序切换、已完成筛选,以及带批量操作的会话管理对话框;
- 新增(ACP 代理设置):扩展 OpenCode 的 provider.npm 选项,补全更多 AI SDK 提供商;
- 修复(传输层):替换 Tauri listen() 调用,避免 WKWebView 下 unlisten 竞态导致崩溃。
2026-04-23 16:05:46 +08:00
xintaofei
022172a9ea chore(lint): clean up frontend and Rust lint issues 2026-04-23 15:56:41 +08:00
xintaofei
1dd40d0baf feat(conversation-context-bar): show descriptive tooltips for folder and branch selectors 2026-04-23 15:21:18 +08:00
xintaofei
ba7f3c598b fix(branch-dropdown): show "No branch" label when folder is not a git repository 2026-04-23 15:12:46 +08:00
xintaofei
ec115e5a12 feat(acp-agent-settings): expand OpenCode provider.npm options with additional AI SDK providers 2026-04-23 15:00:59 +08:00
xintaofei
7aec93e922 feat(search-dialog): show active folder in search popup header 2026-04-23 14:11:54 +08:00
xintaofei
c7cd94a01b Merge branch 'cv-main' 2026-04-23 14:03:01 +08:00
xintaofei
50c5b12d53 refactor(branch-dropdown): drop worktree parent-branch merge shortcut
Remove the parent-branch button shown beside the branch selector along
with its supporting API, command, service, model, and i18n strings.
Add migration m20260423 to drop the now-unused folder.parent_branch
column.
2026-04-23 14:02:46 +08:00
xintaofei
c67e145837 feat(sidebar): add workspace actions to conversation list context menu 2026-04-23 13:49:45 +08:00
xintaofei
377ae6d8e6 fix(command-dropdown): preserve running command status across folder switches 2026-04-23 11:45:25 +08:00
xintaofei
e489925567 Merge branch 'cv-main' 2026-04-23 11:37:18 +08:00
xintaofei
bcd457c823 refactor(conversation-status): share sidebar status glyphs across menus, search, and manage dialog 2026-04-23 11:35:38 +08:00
xintaofei
5f4c26c480 fix(message-input): scale selector collapse breakpoint with appearance zoom 2026-04-23 11:30:49 +08:00
xintaofei
f9dfc64009 Merge branch 'cv-main' 2026-04-23 11:26:02 +08:00
xintaofei
cd15813f34 refactor(tooltip): use native title for folder picker and sidebar more-options 2026-04-23 11:25:16 +08:00
xintaofei
1323d3e883 fix(mode-tabs): use rem heights so workspace mode tabs scale with zoom 2026-04-23 11:24:24 +08:00
xintaofei
d7113f6ed0 fix(resizable): clip panel group overflow to block programmatic scroll shift 2026-04-23 11:15:05 +08:00
xintaofei
02434b6e1d refactor(sidebar): align folder and conversation rail on a shared axis 2026-04-23 10:33:42 +08:00
xintaofei
6665b1902b fix(sidebar): prevent sibling folder overlap and nudge conversation rail 2026-04-23 09:59:46 +08:00
xintaofei
35265c766a fix(shadcn-launcher): point preview iframe to radix/preview-02 2026-04-23 01:02:37 +08:00
xintaofei
5ea812405f fix(theme): use neutral sidebar primary for grayscale dark themes 2026-04-23 00:55:18 +08:00
xintaofei
f1ce7179ea feat(sidebar): reorder folder groups by drag and persist sort order 2026-04-23 00:42:58 +08:00
xintaofei
2dbdaa9c74 feat(branch-dropdown): add switch-to-branch entry for local and remote branches 2026-04-22 23:29:36 +08:00
xintaofei
3030bb7981 feat(conversation-detail): auto-scroll active tile into view and theme its highlight 2026-04-22 23:18:34 +08:00
xintaofei
7a03cfff36 fix(branch-picker): strip remote prefix when checking out remote branches 2026-04-22 22:56:36 +08:00
xintaofei
5ac9cee2ff feat(sidebar): add conversation sort mode toggle with created-time default 2026-04-22 22:34:23 +08:00
xintaofei
8ef29680d2 refactor(sidebar): shrink conversation status badges to match folder count pill 2026-04-22 22:10:52 +08:00
xintaofei
b74f698c0d fix(scroll-area): raise overlay scrollbar z-index to prevent occlusion 2026-04-22 22:05:53 +08:00