BBRUNER Patrickrefactor: split ILogWindow into role interfaces
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: split ILogWindow into role interfaces Candidate 3 of the 2026-07-26 architecture review. ColumnizerCallback and FilterPipe took the whole ILogWindow for a fraction of it, so Core fakes had to implement the full interface. Carve role interfaces sized to each Core consumer: - ILogLineSource (LineCount, GetLineMemory, GetCurrentFileName) — the columnizer callbacks and, as the Core face of the paint context, the UI's ILogPaintContextUI. The empty ILogPaintContext marker is deleted and IFileViewContext.LogPaintContext retyped to it. - ILineSelectable (SelectLine) — FilterPipe.OriginWindow (was LogWindow). - ISessionSnapshotSource (GatherSessionSnapshot) — FilterPipe.ResultWindow (was OwnLogWindow). ILogWindow survives as the empty composition of the three, kept only for identity holders (the filter-list / highlight-group changed event args). Six members that had no interface-typed caller were dropped from it; the dead GetLogLineMemoryWithWait was removed from LogWindow. New ColumnizerCallbackTests pin both callbacks against a hand-rolled three-member ILogLineSource fake — no Log Window, no Logfile Reader. CONTEXT.md gains the Log Window roles section. | 1 个月前 | |
refactor: split ILogWindow into role interfaces Candidate 3 of the 2026-07-26 architecture review. ColumnizerCallback and FilterPipe took the whole ILogWindow for a fraction of it, so Core fakes had to implement the full interface. Carve role interfaces sized to each Core consumer: - ILogLineSource (LineCount, GetLineMemory, GetCurrentFileName) — the columnizer callbacks and, as the Core face of the paint context, the UI's ILogPaintContextUI. The empty ILogPaintContext marker is deleted and IFileViewContext.LogPaintContext retyped to it. - ILineSelectable (SelectLine) — FilterPipe.OriginWindow (was LogWindow). - ISessionSnapshotSource (GatherSessionSnapshot) — FilterPipe.ResultWindow (was OwnLogWindow). ILogWindow survives as the empty composition of the three, kept only for identity holders (the filter-list / highlight-group changed event args). Six members that had no interface-typed caller were dropped from it; the dead GetLogLineMemoryWithWait was removed from LogWindow. New ColumnizerCallbackTests pin both callbacks against a hand-rolled three-member ILogLineSource fake — no Log Window, no Logfile Reader. CONTEXT.md gains the Log Window roles section. | 1 个月前 |