feat: 移除 Tab 栏,优化顶部布局#3439
Conversation
|
有更改之后的效果图吗? |
|
tab 标签栏反馈下来是降低使用切换不同会话挑战难度的。直接移除有些跨越 |
|
2026-06-07.19.00.28.mov新增一个折叠按钮。 |
这个按钮很不错。关于上面那个 tab 栏能否也加一个开关设置或者按钮,让用户去选择是否展示 tab。这样的话应该就可以照顾到不同人的体验 |
- 删除 TabBar 组件及其所有相关 state/handlers(tabOrderIds、tabRevealSignal、 visibleTabs、handleTabChange/Close/Reorder/NewTab 等) - 删除 workspace-tabs-bar 容器及 .workspace-tabs-bar CSS - 将右侧面板切换按钮移入 topicbar__actions 末尾,使用与 Copy/Export 一致的 topicbar__action-btn topicbar__action-btn--icon 样式 - 删除之前误加的 chat-pane__topbar 独立条及其 CSS - 还原被构建过程误删的 dist/.gitkeep
- 非编辑模式:h1 直接显示 tab.topicTitle,不再包含 workspace 前缀 - 编辑模式:去掉 topicbarProjectPrefix / 前缀 - 删除不再需要的 topicbarProjectPrefix 变量
移除 .project-tree__topic 的 margin-right: var(--project-tree-action-column), 该 36px 右间距是为一级菜单的 '+' 按钮预留的,二级菜单没有操作按钮, 却保留了该间距导致右侧出现多余空白,无法撑满全宽。
删除项目行左侧无实际意义的 Folder 图标,只保留展开箭头和颜色标识圆点。 这样一二级菜单的视觉更简洁统一。
- 将 .project-tree__topic 的 margin-left 从 22px 改为 11px - 文字起始位置 = 11px (margin) + 30px (padding: 14+16) = 41px - 与一级菜单文字起始位置 8+12+7+7+7=41px 完全对齐
给 .sidebar__new、.project-tree__search、.project-tree__header 添加 flex-shrink: 0,防止当项目列表内容过多时被 flex 容器压缩高度。
在新增项目按钮左侧增加一个双向箭头按钮,点击切换全部折叠/展开。 - 递归收集所有可展开节点 key 判断当前状态 - 动态 Tooltip:全部已展开→'Collapse all',否则→'Expand all' - 样式与旁边的 '+' 按钮一致
- 双击二级菜单直接进入重命名模式 - 选中状态改为圆角,移除左侧彩色条纹 - 右侧显示相对时间(3 分钟、1 天等),去掉'前'字 - 折叠/展开按钮图标区分状态:展开时 ⥮,折叠时 ⇅
The unread indicator dot in the left sidebar topic list used `var(--fg-muted)` which was never defined anywhere in the project, making the dot transparent and invisible. Replaced with `var(--fg-dim)`, a defined gray variable available in both dark and light themes.
…betically Introduce sortTopicIDsByActivity() that accepts a callback to get each topic's activity timestamp, and returns IDs sorted most-recent-first. Updates both global and project topic list sections in ListProjectTree to pass the activity from on-disk sessions or open tabs. The old orderedTopicIDs() remains (unused) and will be removed in a follow-up commit.
…workspace cleanup - Add Memory dock panel (右侧面板「记忆」标签页) - Add Default YOLO mode setting (新对话默认启用 YOLO) - Status bar: compact% on ctx hover, avg% on cache hover, turn tokens only during generation - WorkspacePanel: cleanup duplicate switchBranch, effectiveMode with comment - Transcript: scrollend Safari 15+ fallback via setTimeout - tabs.go: expose LastActivityAt in TabMeta - types.ts: deduplicate gitBranch, add memory DockTabType - zh.ts: remove orphaned agentRuntime keys - styles.css: mem-fact type dots, z-index var, workspace-files height, sidebar 47px
- Add turnStartAt prop to StatusBar, passed from controller state - Display as ↓ 2.3k tokens · 1.0s (or 1m 23s for long generations) - Only visible during generation, hidden when stopped
…ction, add type-dot indicators - Rewrite MemoryDockPanel to use mem-fact/mem-filter/mem-section__title CSS classes - Remove inlined styles, align with workspace panel conventions - Remove Docs section (REASONIX.md files) from memory panel - Add .mem-fact__dot color indicators for memory types - Add .workbench-dock__body > .workspace-files height constraint - Fix unused ref and i18n for empty state - dock-tabbar height 48px→47px
…memory types - Add previewDismissed state backed by localStorage to keep git history preview panel closed across dock tab switches - Show X button in preview header when no file is selected (changes view) to close the right preview panel without closing the dock tab - Clicking a commit or file reopens the dismissed preview - Add memory.typeLabel.* and memory.globalMemories i18n keys for MemoryDockPanel type filter and global memory section
…adding; composer mode chip and Cmd+K palette - Remove border from .process-card and .tool, use var(--card-bg) background with separate formulas for dark (38% bg-elev) and light (16% bg-soft) themes - Compact internal padding to 8px uniform, min-height reduced - Restore tool card margin to 6px for spacing - Remove file path subject from tool card headers (tool__subject) - Remove composer modebar brightness filter that was dimming white text - Add global Cmd+K keydown listener to open command palette
…aunch tab tree - Add GlobalStore to memory.Set for cross-project facts stored globally - Add GlobalFacts field to MemoryView for memory dock panel display - Add StoreForGlobal() resolving to ~/.config/reasonix/memory/global - Inject global memories into system prompt prefix via Block() - fix(app): create default global tab with real topicID so project tree is immediately visible on first launch - fix(ProjectTree): retry ListProjectTree with exponential backoff when Wails bindings are not yet ready on first render - fix(TodoPanel): default to collapsed state (open=false) - Update mock and TypeScript types for globalFacts
- Add 'commit' DockTabType with GitCommit icon - Create GitPanel component with branch switcher, commit history, commit detail - Changes tab (WorkspacePanel): remove branch indicator and git history, now only shows changed file list + file content preview - Commit tab (GitPanel): branch switching, commit history, commit detail in a full-height panel - Clean up unused git history states from WorkspacePanel (loadGitHistory, toggleCommit, formatCommitDate, gitHistory, etc.)
- commit 历史圆点与标题水平对齐,展开不位移 - changes badge 移到最右,discard 按钮放 badge 左侧 - 标题/文件名取消加粗 - 文件列表路径去除末尾文件名 - GitPanel / MemoryDockPanel 接收 refreshKey,切换项目时刷新
- WorkspacePanel: 移除分支切换按钮/菜单/状态及相关回调,替换为简洁的文件统计摘要 - bridge.ts: 新增 GitDiscardFile 方法签名与 mock 实现 - workspace_changes.go: 新增 GitDiscardFile(git checkout -- <file>)后端方法
Bringing in 27 upstream commits including: - ci: Dependabot + CodeQL, Linux .deb, macOS signing - cli: --resume flag, /sandbox status, empty-enter scroll - desktop: toast notifications, font fixes, portal crash fix, session restore, context menu flash fix, composer @ refresh - agent: rewind boundary, forget handling, evidence optimization - memory: store changes, ACP dispatch updates - boot: runtime bootstrap hardening - permission: approval scopes by rule
…remove unused logoWordmark
生成中显示的停止按钮新增 CSS 动画:0.25s 顺时针转90°、 0.75s 停顿,1s 周期循环。利用正方形转90°与0°视觉一致 的特性,一次旋转即完成视觉闭环。 - 动画装在 .composer-meta__action-btn--stop:not(:disabled) svg - ease-in-out 缓动,节奏不抢戏但能感知系统在运行
时间筛选面板: - 菜单改为左侧对齐,去边框描边 - 面板宽度收窄(min-width: 108px→84px) - 字体缩小至12px,字重400,不加粗 - 选中项颜色改为 accent 蓝色 - 筛选激活时图标旁显示短标签(10/1h/3h/24h) - 按钮间距统一6px,自适应宽度 ApprovalModal:工具审批弹窗新增 attention chime 提示音
Merge 上游时 auto-merge 用上游版本覆盖了 SettingsPanel.tsx, 导致通知音效设置(生成完成 + AI提问)丢失。手动恢复 import、 state 和 UI 代码。
Merge 上游时 SettingsPanel.tsx 被上游版本覆盖,丢失了 生成式背景音乐预设选择器。恢复 import、state 和 UI。
通知音效(生成完成、AI提问)下拉框统一改为 mem-select, 预览按钮统一改为 chip,与生成式背景音乐保持一致。
…pen support Each copy of the .app at a different path now gets its own Wails SingleInstanceLock ID (com.reasonix.desktop.<sha256[:8]>), allowing them to run side by side. The same binary still prevents double-launch.
…ative-PID kill) On Unix (macOS/Linux), KillTree only killed the direct child process (cmd.Process.Kill()), leaving orphan grandchildren alive — e.g. the codegraph launcher shell's bundled node runtime. Over time, 40+ orphan processes accumulated, causing severe system slowdown. Fix: Set Setpgid on the child before starting it, making it the leader of a new process group. KillTree (and the Cancel handler) now uses syscall.Kill with a negative PID to reap the entire process group. This matches the pattern already proven in bash_kill_other.go and shell_kill_other.go, and is symmetric with the Windows Job Object approach in kill_windows.go.
Sync with upstream esengine/DeepSeek-Reasonix main-v2 through commit 54531f3. Key upstream changes: - Split mode into collaborationMode + toolApprovalMode axes - Add goal mode (/goal) and /clear command - Add workspace-scoped session directories (session isolation) - Remove Browser* methods from desktop backend - Add bot gateway (Feishu/Weixin/QQ) with ChatDirect support - Add PDF attachment text extraction - Add TUI shortcuts (Ctrl+Home/End) Conflicts resolved with upstream version as base, preserving local custom features (browser panel, dock tabs, sidebar improvements, sound/music features, generative background music). Run 'cd desktop && wails generate module' to regenerate Wails bindings.
|
Closing this one: removing the tab bar reverses a settled decision 鈥?the tab-strip chrome was deliberately re-landed (#2925, after the #3011 revert) and it's the direction we're building on, so a PR that deletes it can't go in. The branch is also the fork's main-v2 carrying ~5.5k lines of unrelated changes, and 7 required checks are red. If you want an option to hide the tab bar, open an issue for that settings discussion first (same note as on #3458 鈥?it'd persist via desktop config, not localStorage). The topicbar polish bits could stand alone as small PRs from clean branches; see also the re-cut request on #3698. |






变更内容
移除 Tab 栏 — 删除 TabBar 组件及其所有相关 state/handlers:
tabOrderIds、tabRevealSignal、visibleTabs等 statehandleTabChange、handleTabClose、handleTabsReorder、handleNewTab等 handlerworkspace-tabs-bar容器及其 CSS右侧面板切换按钮移入 topicbar — 放在
topicbar__actions最右侧,使用与 Copy/Export 一致的topicbar__action-btn topicbar__action-btn--icon样式标题栏去掉重复的项目名前缀 — 不再显示 "项目名 / " 前缀
验证
tsc --noEmit零错误wails build构建成功