- the registered view keeps the console that started it; Println, Printf
and status lines go above it only from that console, other consoles
write to their own writers (bonfire.PrintAbove still reaches any view)
- runLive claims the single live slot by check and set under liveMu and
reports when it could not, so the widget prints plain lines
- unregister, finish and wait run deferred, so a panic in work leaves no
registration behind and still propagates (WR-02)
- each PrintAbove block is one bubbletea print message sent straight to
the program's queue under liveMu, so the event loop prints it in call
order instead of a command goroutine racing it back
- runLive unregisters, sends finishMsg and waits under liveMu, so a late
printer writes after the final frame and no line is lost
- TestPrintAboveOrderedNoLoss pins order and no loss for spinner,
progress, process and a printer racing the finish (CR-01)
- PeekGlobals table, Args round trip, hook and PeekGlobals agree (clusters too)
- reserved flags, duplicate names, Call runs no OnGlobals hook
- exit codes 0/1/2, Reported silence, scrubbed errors, wrong-directory hint
- widget matrix: not a terminal byte for byte, -q, --no-ansi, -n, terminal
- live models through Update and View and one program run into a buffer
- prompts under -n, Secret from piped stdin, ConfirmProceed, PrintAbove