Skip to content

feat: native_tui M7 里程碑全链 + 会话 transcript JSONL 迁移 - #436

Merged
liuqihonggit merged 43 commits into
mainfrom
w1
Oct 20, 2026
Merged

liuqihonggit merged 43 commits into
mainfrom
w1

Conversation

@liuqihonggit

Copy link
Copy Markdown
Owner

Summary

  • M7-5 代码高亮:TextMateSharp 卫星项目(AOT 实测通过)+ Core ICodeHighlighter 插件接口 + Demo 接入(Monokai 配色)
  • M7-6 模型选择器:全自研(ModelPickerCoordinator 状态机 + /model 拦截 + ApplyModel 三步切换链),Host 从引擎 IModelCatalog 取清单
  • M7-7 多子代理分组:SubagentGroupCoordinator(按 turn 分组 + 可见窗口 min(10,n) + and N more 溢出)+ 组头 ● 600ms 方波闪烁(IAnimatable 时钟广播)+ resize 事件化(ITerminalSizeSource 注入)
  • TASK056 斜杠补全/参数补全/幽灵文本/Ctrl+R 历史反向搜索 + Host 命令清单与历史种子注入
  • Transcript 迁移:TranscriptFileWriter 改 JSONL 纯追加 + 流式读 + 双源迁移(ADR 0144 accepted)

测试

  • NativeTui.Tests 734/734 绿(HEAD 实测)
  • Highlighting.Tests 16/16 绿 + Demo/Host selftest 双绿
  • 用户手动 Demo 验收通过(TASK056 验收表记录)

…butes钉死approved快照eol=lf双保险,根因=autocrlf=true物化改写approved.txt为CRLF而裸Ordinal比较被行尾差异击穿(blob LF是真值),先红测试复现再修复
…令Error诱导含四命令用途);perm时间线1.2s发PermissionRequest挂起期无token流式8s延迟完成;PermissionRequest分派走Driver可选权限钩子注入ReplShell.BeginPermissionRequest(权限模态是shell层状态Driver只路由),真实宿主路径仍走TuiPermissionBridge同步回调不经此事件;验证558/558+18/18+selftest双绿
…WriteTool/UI.tsx L138-141,折叠上限采Write MAX_LINES_TO_RENDER=10防刷屏);SimulatedPatch行序removed/added前置并公开供渲染可见性回归测试(对齐DemoMarkdown先例);根因=渲染链路无缺陷而是预览折叠语义偏离基准,4行hunk被header+context吃光预览额度红绿全被折叠;验证559/559+selftest绿+Demo.exe重编
…见预期;反馈①输入历史与②/命令补全按用户指示移交他人本线不实现
…syntect同源(TextMate引擎+Monokai Extended主题,TS移植版highlight.js只是vendor缺失替代品),卫星项目隔离Onigwrap原生依赖待AOT实测;关键语义发现=diff删除行有意跳过语法高亮+24键scope表三级回退+五层降级链
…A方案TextMateSharp=基准Rust原版syntect同源;卫星项目NativeTui.Highlighting隔离(ADR 0140先例)挂slnx;AotProbe保留为AOT回归工具;实测三关全过=PublishAot编译零错+libonigwrap.dll正确携带+AOT产物输出与Debug一致(Monokai标准色keyword249,38,114 string230,219,116);API坑=2.0版README过时,GetScopeByLanguageId非GetScopeNameFromLanguageId,foreground是int型colorId(-1=无色)
…ICodeHighlighter接口+HighlightSpan DTO(万物皆插件,未来可换实现);TextMateSharp隔离在卫星项目;整块高亮API(每次调用独立会话ruleStack跨行状态,布局缓存重算幂等);语言解析三级=手动别名表(bash/sh→shellscript等14项)→id精确→Grammar包Aliases遍历;dark=Monokai light=LightPlus;负结果缓存(语言null/语法null);验证16/16绿含Monokai色值断言(string230,219,116 comment136,132,111)+跨行块注释状态+幂等性
…script同项目最近会话聚合(排除当前会话防双份),加载失败静默降级
…局行收集器同步收集高亮上下文,渲染期按HighlightSpan覆写cell前景StyleId(含前缀偏移平移),highlighter全程可选注入null=纯文本零行为变化,MarkdownMessageItem布局缓存键失效重算幂等;测试8个stub高亮器纯Core断言不含卫星依赖,全量642/642绿
…tMateCodeHighlighter(dark固定true对齐Demo暗色主题),md命令csharp代码块启动即见Monokai配色;验证selftest绿+Onigwrap原生DLL齐备+capture基准帧911字节不变(像素回归双依据跳过)
…trim后剥/前缀,/md等价md,未知命令诱导提示可输入/弹补全
…当前模型+clamp不环绕+滚动窗口min(10,n)跟随,对齐基准Select交互),渲染对齐基准ModelPicker(permission边框+Select model标题+❯焦点suggestion+✓当前success+and N more折叠+Enter confirm·Esc exit快捷键行);ModelPickerEngine装饰器拦截/model打开选择器(Attach延迟绑定避免构造环),选中回调自持清单闭包(coordinator已清空时取displayName);优先级权限>模型(引擎请求优先);PostInfo通用反馈面;全量672/672绿含27新测试
…ext紧凑行序列化(WriteIndented=false),存量.json数组回退读取,坏行行级容错,ADR 0144
…移 | 决策: ListTranscripts按jsonl行数+尾行解析,TranscriptExists双扩展名检查,迁移含扁平json与子目录数组两源且不删旧文件
…lyModel 复刻切换链(SetPrimaryModel+settings持久化+fast mode自关);Demo 用模拟清单演示同一路径;均经 ModelPickerEngine 装饰器延迟绑定装配
…r状态机(事件驱动+FinalizePending回合定格+窗口活动跟随滚动,区别于模型选择器焦点跟随)组头●三态色(错误红/完成绿/运行中Suggestion)+Running N agents文案全同型带类型名;SubagentGroupItem两行式树形├─└─+八色板FNV-1a稳定取色(Theme.SubagentColor首个消费者)+and N more溢出复用;组内窗口方案A(用户确认,基准靠React虚拟化本项目窗口为对等机制);BridgeEvent加3事件(TokenGain避开嵌套类型撞名)+Driver惰性建组路由+回合定格脱离;全量694/694绿含22新测试
…合列表(区别于主回合三段状态机,交错时间线i*25ms演示窗口活动跟随),agents默认12/可带数量1..999,每第7个失败演示组头红态;Demo补全清单与种子提示加agents条目;全量698/698绿含4新engine测试+Demo selftest绿
….json断言,与0160ed828重放的.jsonl路径切换不一致,修正为transcript.jsonl;88/88绿
…s元数据,SlashSuggester双模式分派(命令名二级排序/参数前缀过滤),生成器补ArgumentHint提取,Host静态参数清单与GUI CommandArgumentProvider同值(theme/effort/config),接受链命令模式补尾空格进参数态/参数模式补全参数值
…w光标末尾接受,Esc与下拉共用Dismiss抑制,渲染dim色文本后+光标覆盖ghost首字符(基准对齐)
…useBlink共享时钟全实例同步闪烁,spinner与组头同源)+运行中色修正dim默认前景(基准ToolUseLoader isUnresolved色优先于isError,Suggestion系误用)+错误完成恒亮不闪;714/714绿含5新测试+Demo selftest绿
…模态拦截优先级权限>模型选择器>搜索>补全,查询编辑设程序化标记抑制补全,ghost渲染当前匹配,Enter接受提交/Esc恢复草稿/再按Ctrl+R循环
…eTerminalSize/Node stdout resize等价契约,Unix未来SIGWINCH同契约替换)+ReplShell三处Console.Window*消费点统一走注入源+EnsureScreens/RenderAndFlush internal化暴露resize测试驱动面+inline语义钉死(屏宽=cols敏感维度,屏高=内容高与终端rows无关);734/734绿含5新resize测试+Demo selftest绿
@liuqihonggit
liuqihonggit enabled auto-merge (squash) October 20, 2026 19:26
…段,生成器从[ChatCommandArg].Enum提取注入(首个带Enum的arg),删TUI硬编码清单,theme7值/effort6值/config4值全对齐引擎真值
…/joincode.*强制从local-feed重解析最新pack;根因=nuget缓存key只哈希csproj+props不含.cs源码,只改源码的PR命中旧缓存组件包(版本恒1.0.0无法辨新旧)而源码生成器恒新输出引用新API;第三方大包缓存照常命中仅本地重拷秒级
@liuqihonggit
liuqihonggit disabled auto-merge October 20, 2026 20:04
@liuqihonggit
liuqihonggit merged commit b0111ae into main Oct 20, 2026
27 checks passed
@liuqihonggit
liuqihonggit deleted the w1 branch October 20, 2026 20:04
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.

1 participant