Repository navigation
internal/tui: the v1 chat door and its settings sheet are unreachable #412
Description
internal/tui is the v1 chat surface (CLAUDE.md calls it "v1, and the visual north star"). Its full-screen door, and the settings sheet inside it, cannot be reached from the binary any more. Every claim below was checked by grep at 35c1a79e (dev).
The only door is runChat, and nothing calls it
- The settings sheet (
internal/tui/settings.go, opened byopenSettings/showSettings) lives ontui.Model, which is constructed byNewWithCommander(internal/tui/model.go:927). Outside the package and its tests, that model is built in exactly one place:RunWithCommander(internal/tui/model.go:1052), called fromcmd/aforge/chat.go:99insiderunChat.tui.Run(model.go:1046) wraps the same call and has no callers at all. runChat(cmd/aforge/chat.go:55) is called from nowhere.cmd/aforge/main.go:117and:122dispatch bareaforgeandaforge chattorunChatV3. The only other mention of the name in a non-comment position is a panic-string fixture,cmd/aforge/nopanic_test.go:61("main.runChat(...)");cmd/aforge/detach_test.go:26names it in a comment and drives the two calls it makes directly rather than calling it.
The remaining importers want types, not the surface
internal/tui is still imported by internal/command/{command,craft,notebook_reads}.go and cmd/aforge/{chat,residency}.go, but only for shared types: tui.Commander, tui.Residency, tui.ModelChoice, tui.StreamEvent (with tui.Streams, tui.StreamDelta and the StreamEventKind constants), tui.NodeTraceStamp, and tui.CraftDetail / CraftStep / CraftSummary / CraftVersion. None of them constructs or runs the model.
What this means for the test suite
The package still carries a full settings-sheet test suite (internal/tui/settings_test.go), three of which sat in .github/known-red.txt for weeks because the sheet drifted while nothing on screen depended on it. A companion pull request repairs the measurement of TestSettingsSheetIsOneCalmColumnAtEveryWidth; it does not answer the question of whether the surface should exist.
Not a tonight change
Retiring the v1 door (deleting runChat, moving the shared types out of internal/tui, and dropping the settings sheet and its tests) is a decision for the owner: internal/tui is documented as the visual north star for the live surface, and the shared types are load-bearing for internal/command. This issue records the state so the decision is made on purpose rather than by the next lane that trips over a red settings test.
Drafted with CodeAF · reviewed and owned by the author
Activity
santoshkumarradha commentedon Sep 10, 2026
Closed in the 2026-09-10 triage sweep — obsolete, not fixed.
internal/tuiandinternal/commandno longer exist in the tree: PR #792 removed the v1 window and #790 removed the v2 remnants. Verified at dev@95a0d0a9b: both directories are absent. There is no unreachable door left to reach.