Skip to content

refactor(tui): 命令菜单/Activity/filepicker/progress 组件化并合并重复入口 - #2

Merged
creatang merged 184 commits into
mainfrom
codex/issue-99-tui-activity-scroll
Apr 6, 2026
Merged

creatang merged 184 commits into
mainfrom
codex/issue-99-tui-activity-scroll

Conversation

@creatang

@creatang creatang commented Apr 4, 2026

Copy link
Copy Markdown
Owner

背景

本次对 TUI 做了组件化重构,并按“功能不变、合并重复实现”的原则,集中清理了重复入口和薄包装函数。
不再保留旧行为兼容过渡代码,直接切到新交互实现。

主要改动

1) Command Menu 组件化(C1)

  • 基于 list.Model 重做命令建议菜单,新增独立实现文件:
    • internal/tui/command_menu.go
  • 统一 /、@、& 的建议构建与渲染路径。
  • 支持键盘上下/翻页选择、Tab 应用建议、并可从 @ 空查询进入文件浏览。

2) Activity 组件化(C2)

  • Activity 改为 viewport 可滚动面板,不再是固定条目截断渲染。
  • Activity 纳入焦点循环(Sessions -> Transcript -> Activity -> Composer)。
  • 增加 Activity 区域鼠标滚轮滚动与命中判断逻辑。

3) @file 浏览模式(C3)

  • 新增 pickerFile 模式并接入 filepicker。
  • 支持目录跳转、文件过滤、选中文件后回填输入框。
  • 回填时做路径规范化(相对当前 workdir 优先,失败回退绝对路径)。

4) 进度反馈增强(C4)

  • 运行中优先展示 progress(带阶段文案),无可量化进度时自动回退 spinner。
  • 在 runtime 事件中补充阶段推进与清理逻辑(开始/工具规划/执行/结果整合/结束/异常)。

5) 重复函数与入口合并(重点)

  • 布局入口统一:
    • 删除 resizeComponents / resizeComposerLayout 薄包装,统一到 applyComponentLayout(...)。
  • 消息渲染入口统一:
    • 删除 renderMessageBlock 和 renderMessageContent 包装,统一使用 ...WithCopy 主实现。
  • picker 逻辑去重:
    • providerItem / modelItem 合并为 selectionItem。
    • provider/model 的 replace/select/open 切到共享通用函数。
  • 文件建议去重:
    • 删除 matchingFileReferences 包装,统一走 resolveFileReferenceSuggestions。
  • 数值工具去重:
    • 删除自定义 max,统一使用内建实现,保留 clamp。

依赖变化

  • go.mod / go.sum 增加:
    • github.com/charmbracelet/harmonica
    • github.com/dustin/go-humanize

测试与验证

已执行并通过:

  • go test ./internal/tui
  • go test ./internal/app ./internal/tui
  • go test ./...

风险与关注点

  • 输入焦点切换、Tab 行为、picker 打开/关闭路径涉及交互链路较多,需重点回归:
    • / 建议、@ 建议、& 命令提示
    • Activity 焦点与滚动
    • filepicker 选中文件回填
    • 运行中 progress/spinner 切换

phantom5099 and others added 30 commits March 25, 2026 22:15
# Conflicts:
#	internal/config/model.go
refactor(provider): 收敛 provider 架构并清理旧兼容残留
fix:修复 goroutine 泄漏、简化装配层依赖、补全工具调用流式事件
feat: 全自动软件分发矩阵与一键安装脚本
Yumiue and others added 26 commits April 3, 2026 21:33
pref:增加事件流字段,修复事件流信息缺口并清理废弃代码
feat(context/runtime): 落地 manual compact(拆分自 1024XEngineer#127)并补齐配置、TUI、事件与测试
feat: P0-4 工具执行期引入 WorkspacePlan 以收敛 TOCTOU 风险
…activity-scroll

# Conflicts:
#	internal/tui/update.go
feat(context): 支持 reactive compact 模式
pref(provider): Config/Provider 代码质量修复 — 冗余清理与结构重构
…activity-scroll

# Conflicts:
#	internal/tui/commands.go
#	internal/tui/update_test.go
@creatang
creatang merged commit e6054aa into main Apr 6, 2026
1 check passed
@creatang
creatang deleted the codex/issue-99-tui-activity-scroll branch April 10, 2026 05:40
creatang pushed a commit that referenced this pull request Apr 14, 2026
fix: rebind session workdir to startup workspace
creatang pushed a commit that referenced this pull request Apr 14, 2026
fix(runtime): drain streaming events after cancellation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants