1.0.17
🎉 1.0.17
中文
✨ 新功能
-
侧边栏会话按项目分组:侧边栏会话现在按工作目录自动分组,支持一键折叠/展开项目组,活动会话自动展开并滚动定位。超过 5 条的会话组默认折叠,点击展开更多时每次加载 5 条,避免长列表卡顿。
-
消息导航条(MessageNavRail):新增垂直导航条,悬停消息气泡时显示对话轮次预览文本,点击可快速跳转到任意轮次。解决了长对话中来回翻找的痛点,预览卡片限制 5 行,防止遮挡内容。
-
聊天中预览本地视频:聊天消息里的本地视频文件现在可以直接在对话中播放预览,支持 .mp4 / .mov / .webm 等常见格式,无需离开聊天界面。
-
过程摘要紧凑行视图:工具执行的过程摘要(ProcessSummary)从列表样式改为紧凑的可展开行,单行显示工具名 + 状态,点击展开查看详情。设定了最大高度滚动容器,展开大量工具时不会撑爆页面。
-
压缩上下文反馈:当 AI 自动压缩对话历史时,聊天界面现在会显示清晰的视觉反馈,告知用户压缩已发生及概要信息。
-
冷启动上下文恢复:SessionManager 从纯内存存储升级为基于 JSONL 的文件持久化。应用重启后,历史对话的完整结构化上下文(含工具调用、图片、压缩摘要)可无损恢复,不再依赖文本注入的回退方案。旧会话无缝兼容。
-
浏览器面板智能分屏:打开内置浏览器时,侧边栏自动折叠,浏览器面板默认占 50% 可用宽度。手动拖动分隔条退出自动模式,双击可重置为 50%。窗口缩放时自动保持 50% 比例。
-
粘贴图片自动压缩:粘贴截图到输入框时,自动将图片缩放至最长边 1568px 并转为 JPEG(质量 0.85),超过 3.75MB 则迭代降低质量/尺寸,有效减少 token 消耗。GIF 和 SVG 原样透传。
-
全局字重升级:整体字体粗细从 400 提升至 500,正文阅读更饱满清晰。
🐛 修复
-
应用图标灰度修正:修复了应用图标在小尺寸 Dock 中偏紫的问题,图标核心改为 100% 灰度着色,保留 Alpha 通道以确保圆角透明效果正常。
-
macOS 首次退出响应:修复了 macOS 上首次点击退出时应用无反应的问题,现在一次即可正常退出。
-
滚动可靠性修复:将
scrollIntoView替换为scrollTo,解决了平滑滚动动画期间自动跟随状态被意外关闭的竞态问题,以及 ResizeObserver 纠正被阻导致的"卡在半路"现象。 -
工具块文本截断修复:移除了 BashToolBlock、FileToolBlock 和 ToolResultBlock 中的 JS 级别文本截断逻辑,全部交给 CSS 的
text-overflow: ellipsis处理,避免截断时丢失关键信息。 -
过程摘要布局修复:修复了展开视图因缺少
scrollbar-gutter导致的布局抖动,并恢复了缩进间距。 -
浏览器层级修复:确保内置浏览器面板始终渲染在模态对话框下方,避免遮挡登录、权限确认等弹窗。
-
闲置会话固定底部:修复了非活跃会话的聊天区域不再因内容增减而跳动,保持在底部。
-
导航条闪烁修复:将鼠标事件监听从附属 div 移动到导航条的祖先容器,彻底消除了 MessageNavRail 的闪烁问题。
-
侧边栏修复与打磨:修复了运行中会话的状态指示器在缓冲期不进位的问题;移除了 5 分钟自动过期逻辑,✓ 标记保留到用户手动消除;修复了 ✓ 被时间戳遮盖无法点击的布局问题;改进搜索高亮的可见度。
-
侧边栏视觉分隔:用
box-shadow为侧边栏右侧添加内阴影分隔线,替换了原本在不同主题下表现不一致的背景色方案。
🎨 样式
-
图标焕新:整体图标风格刷新,标题栏和侧边栏视觉整理更整齐统一。
-
工具执行状态图标弱化:将工具执行块的运行/成功/错误状态图标从语义色(绿/蓝/红)统一改为
text-muted,降低视觉噪音。 -
元信息精简:移除了 WebFetch、vision_describe、office_read 工具结果中多余的元数据摘要,以及 FileToolBlock 折叠态的文件行数和大小信息,减少信息冗余。
-
斜杠菜单技能徽章美化:优化了技能选择器的标签样式。
-
侧边栏按钮弱化:减少了溢出按钮的视觉强调,移除了新建对话按钮组的背景色和设置按钮的箭头图标。
♻️ 重构
-
应用图标去紫化:图标和 Logo 的主题色从紫色全面替换为锌灰色(#71717A / #D4D4D8),将产品从 AI 紫色美学转向更中性的工具定位。
-
产物卡片扁平化:将组合式产物卡片拆分为每个文件一张独立卡片,采用简化的两级排版(16px + 12px),移除组标签、底部操作栏和悬停按钮,增加视频帧缩略图。
-
侧边栏统一化:合并「当前任务」和「全部会话」为单一扁平列表,去掉虚线分隔和项目组的展开/折叠按钮,改为内联状态指示器(● 运行中 / ✓ 已完成)。代码净减少 274 行。
-
状态栏动画重构:将状态栏的旋转图标替换为渐变色文字动画,视觉更流畅轻量。
-
图片灯箱全局化:将 ImageLightbox 的状态从多个组件的本地 useState 提升到 zustand 全局 store,统一渲染单实例,消除重复渲染,并适配多主题暗色模式。
English
✨ New Features
-
Sidebar sessions grouped by project: Sessions in the sidebar are now automatically grouped by working directory. Groups can be collapsed/expanded with one click, and the active session auto-expands and scrolls into view. Groups with more than 5 sessions are collapsed by default; expanding reveals 5 at a time to avoid lag.
-
Message Navigation Rail: A new vertical navigation strip appears when hovering over message bubbles, showing a turn preview and allowing quick jumps to any conversation turn. Preview cards are capped at 5 lines to avoid obscuring chat content. A major quality-of-life improvement for navigating long conversations.
-
Local video previews in chat: Local video files shared in chat can now be played inline with a video player supporting .mp4, .mov, .webm, and other common formats — no need to leave the conversation.
-
Compact ProcessSummary rows: Tool execution summaries now use compact expandable rows instead of a flat list, showing tool name + status on a single line with expand-to-detail. A max-height scroll container prevents the view from blowing up when many tools are expanded.
-
Compaction lifecycle feedback: The chat interface now shows a clear visual indicator when the AI automatically compacts conversation history, informing you that compaction occurred along with a summary.
-
Cold-start context recovery: SessionManager upgraded from in-memory storage to file-persisted JSONL. On app restart, full structured conversation context — including tool calls, images, and compaction summaries — is restored losslessly from disk, eliminating the degraded text-injection fallback. Legacy sessions remain fully compatible.
-
Smart browser panel split: Opening the built-in browser now auto-collapses the sidebar and splits the browser panel to 50% of available width. Manually dragging the divider exits auto mode; double-clicking the handle resets to 50%. The ratio is preserved on window resize while in auto mode.
-
Pasted image compression: Images pasted into the chat input are automatically scaled to a max longest edge of 1568px and converted to JPEG (quality 0.85). If the result still exceeds 3.75MB, iterative quality/scale reduction kicks in. GIF and SVG pass through unchanged. Reduces token costs significantly for screenshot-heavy workflows.
-
Heavier typography: Global font weight upgraded from 400 to 500 for bolder, more legible body text.
🐛 Bug Fixes
-
App icon grayscale correction: Fixed the app icon appearing purple-tinted at small Dock sizes. Icon core is now 100% grayscale with preserved alpha for proper rounded corner transparency.
-
macOS first quit fix: Fixed an issue where the app ignored the first quit request on macOS. Now exits reliably on the first attempt.
-
Scroll reliability: Replaced
scrollIntoViewwithscrollTo, eliminating a race condition where smooth scroll animation would flip the auto-follow state, plus a ResizeObserver correction block that caused the chat to get stuck mid-scroll. -
Tool block text truncation: Removed all JS-level text truncation from BashToolBlock, FileToolBlock, and ToolResultBlock headers, delegating entirely to CSS
text-overflow: ellipsisto avoid critical information loss at truncation boundaries. -
ProcessSummary layout: Fixed layout jitter in the expanded view caused by missing
scrollbar-gutter, and restored proper indentation spacing. -
Browser z-index fix: Ensured the built-in browser panel always renders behind modal dialogs (login, permissions, confirmations), preventing overlay conflicts.
-
Idle conversation pinning: Fixed idle conversations drifting on content changes. They now stay pinned to the bottom.
-
Nav rail flickering fix: Moved mouse event listeners from a sibling div to the nav rail's ancestor container, eliminating the MessageNavRail flickering entirely.
-
Sidebar polish: Fixed the running status indicator not entering the buffer state; removed the 5-minute auto-expiry — the ✓ now persists until dismissed by the user; fixed ✓ being unclickable due to timestamp overlay; improved search highlight visibility.
-
Sidebar visual separation: Added an inset
box-shadowon the sidebar's right edge, replacing a background color scheme that rendered inconsistently across themes.
🎨 Style
-
Icon refresh: Overall icon style updated; title bar and sidebar visually tidied for a more cohesive look.
-
Muted tool status icons: Replaced semantic colors (green/blue/red) on tool execution status icons with
text-mutedacross ToolUseBlock, ToolResultBlock, BashToolBlock, and FileToolBlock, reducing visual noise. -
Metadata cleanup: Removed redundant metadata summaries from WebFetch, vision_describe, and office_read tool results, plus line count and file size from collapsed FileToolBlock headers, cutting information clutter.
-
Slash menu skill badges: Refined the visual styling of skill selector badges.
-
Sidebar button de-emphasis: Reduced the visual weight of the overflow button, removed the background color from the new-chat button group, and removed the chevron icon from the settings button.
♻️ Refactoring
-
Icon de-purpling: Icon and logo accent color changed from purple to zinc gray (#71717A / #D4D8D4), shifting the product identity from AI-purple aesthetic to a more neutral tool persona.
-
Flattened artifact cards: Replaced the grouped artifact card with one card per file, using a clean two-tier typography (16px + 12px). Removed group labels, bottom action bars, and hover-only buttons. Added video frame thumbnails.
-
Unified sidebar: Merged "Current Tasks" and "All Sessions" into a single flat list, removing dotted dividers and per-project expand/collapse buttons in favor of inline status indicators (● running / ✓ completed). Net reduction: 274 lines.
-
Status bar gradient animation: Replaced spinner icons in the status bar with a gradient text animation for a smoother, lighter visual presence.
-
Global ImageLightbox: Lifted lightbox state from per-component
useStateto a zustand global store. Renders a single instance at the App level, eliminating duplicate renderings and adapting to multi-theme dark mode.