feat: 移除 Tab 栏,优化顶部布局#3439
Open
ttmouse wants to merge 64 commits into
Open
Conversation
Collaborator
|
有更改之后的效果图吗? |
Contributor
Author
Collaborator
|
tab 标签栏反馈下来是降低使用切换不同会话挑战难度的。直接移除有些跨越 |
Contributor
Author
|
Contributor
Author
2026-06-07.19.00.28.mov新增一个折叠按钮。 |
Collaborator
这个按钮很不错。关于上面那个 tab 栏能否也加一个开关设置或者按钮,让用户去选择是否展示 tab。这样的话应该就可以照顾到不同人的体验 |
Contributor
Author
Contributor
Author
Contributor
Contributor
Author
- 删除 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.
Replaced by sortTopicIDsByActivity() in the previous commit.
All 5 remaining uses of the undefined var(--fg-muted) are now replaced with defined variables: - workspace-branch-indicator → var(--fg-faint) - settings-model-current__meta span → var(--fg-dim) - provider-readonly-field--stacked span → var(--fg-faint) - provider-model-fetch-row span → var(--fg-faint) - right-panel__tab → var(--fg-dim) This was the same root cause as the invisible unread dot: --fg-muted was never defined in the project.
…hevron to right - Replace .project-tree__folder-color (7px dot) with a <Folder> icon - Folder icon color follows --project-accent per-folder color setting - Move expand/collapse chevron to the right of folder label - Only render chevron when folder has children (no empty spacer)
…ide BrainCircuit - Remove name prop from ProcessCard in AssistantMessage (hide Thinking label) - Replace hand-drawn SVG ProcessBrainIcon with lucide-react BrainCircuit icon - Update ProcessToolIcon SVG path
…nstead
- Remove /__browser_proxy endpoint and cspResponseWriter from app.go
- Add simple OpenURL binding that uses exec.Command('open', url)
- Simplify BrowserPanel: remove iframe, back/forward/reload buttons
- Keep URL input + 'Open in browser' button only
- Add translations for browserOpen (en/zh)
jump-bar 之前是 .transcript 的子元素,无论 position: absolute 还是 position: sticky,在 overflow-y: auto 容器内都会随内容滚动。 解决方案:新增 .transcript-wrap 包裹器(position: relative), 将 QuestionJumpBar 作为 .transcript 的兄弟元素放在包裹器中, 用 position: absolute 相对于包裹器定位,不受滚动影响。
- Remove the caret span (<span class="composer__caret">›</span>) from Composer.tsx - Delete .composer__caret CSS rules - Adjust .composer padding: 10px 10px 9px 13px → 10px (uniform) - Reduce gap from 8px to 6px (no caret to space around)
- Add desktop/internal/browser/ headless Chrome CDP service (Go) - Wire browser.Service lifecycle into App startup/shutdown - Add bridge methods for browser: OpenURL, Navigate, GetPageTitle, Resize - Build BrowserPanel.tsx with URL bar, back/forward/refresh, loading state - Add i18n keys for browser panel (zh/en) - Include setup-dev-aliases.sh helper script
- Remove ArrowUp send button from composer input row (textarea row) - Replace single cancel button with multi-state action button in .composer-meta__stop-wrap: sends (!running) or cancels (running) - Both states use icon-only design (ArrowUp / Square) with shared .composer-meta__action-btn style - New unified CSS: blue bg rgb(2,83,229), 32x32px, 8px radius - Remove unused .composer-runstatus__stop and override CSS
- BrowserTypeText: CDP Input.insertText for typing into focused elements - BrowserSetViewportSize: sync viewport to sidebar iframe dimensions - BrowserInspectElement: DOM element inspection at viewport coordinates - Frontend: CDP readiness badge, sync iframe nav to CDP backend - go-rod promoted from indirect to direct dependency - New tab default title changed from '新标签页' to '浏览器'
- workspace_changes.go: remove duplicate workspaceGitBranch/GitBranches/GitCheckout - WorkspacePanel.tsx: fix broken JSX nesting (extra closing tags from merge) - types.ts: remove extra closing brace - locales/zh.ts: fix straight quotes in plannerMaxStepsDisabledHint
- WorkspacePanel: revert to upstream version, adapt DockContent to use initialViewMode prop - bridge.ts: add missing BrowserInspectElement/BrowserSetViewportSize mock methods - locales/zh.ts: fix straight quote causing parse error
- Add gitBranch state, branchMenuOpen/branchList/switchingBranch state - Add openBranchMenu/switchBranch/fetchGitBranch functions - Add branch indicator with dropdown switcher in workspace-files section - Works when viewMode === 'changed'
- Add isDeletedChange/changeDetail helper functions - Add loadChanges with request dedup, changedRows memo - Add renderChangedRows showing file name + path + detail + badges - Add refresh button next to branch switcher - Changed view shows git diff file list instead of file tree
- Floating action button appears when user scrolls up from bottom - Smooth-scrolls to latest message on click - Keyboard shortcut Cmd+↓ (Mac) / Ctrl+↓ (Win/Linux) - Button auto-hides when at bottom or new messages arrive - Centered relative to chat content area, 8px from bottom
- Add input/textarea/contenteditable guard to Cmd+↓ handler so it doesn't steal standard text-editing shortcuts (matches existing codebase pattern in AskCard/ApprovalModal) - Add scrollingRef to suppress onScroll updates during smooth-scroll animation (prevents FAB flicker and stick.current overwrite) - Use scrollend event to clear scrollingRef when animation completes
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.






变更内容
移除 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构建成功