Commit Graph

1782 Commits

Author SHA1 Message Date
Jakub Zych
9c89705747 fix(summer): give delegated commands the terminal and keep their stderr apart
- appStreams hands the app binary summer's own stdout and stderr on a
  terminal, so it asks the production question, prints styled summaries
  and animates its widgets
- off a terminal the binary's stdout goes through summer's Output and its
  stderr to summer's stderr, so --json and -q output carry no log lines
- newAppCmd (unexported) takes the two writers; docs say the streams stay
  apart (CR-03)
2026-10-22 02:19:01 +02:00
Jakub Zych
323413c741 fix(summer): pass the app binary's exit code through and print its error once
- bonfire.WithExitCode (additive) makes an error carry the exit code
  bonfire.Execute returns; a code outside 1..255 gives 1
- runAppCmd, factored out of runAppBinary, returns
  Reported(WithExitCode(err, code)) when the binary exited with a code, so
  summer prints no second error block; a binary killed by a signal keeps
  summer's block and exit 1
- README, console introduction and upgrading notes say so (CR-02)
2026-10-22 02:17:09 +02:00
Jakub Zych
d151a252c5 fix(bonfire): restore the terminal when a live view is interrupted
- while a view runs, runLive relays SIGINT and SIGTERM (unless ignored);
  on a signal it kills the program, which shows the cursor and restores
  the terminal, unregisters the view, stops relaying and raises the same
  signal again, so the default action or the command's own handler still
  applies
- the generated main, bonfire.Execute's context and Ctrl+C for commands
  without a live view are unchanged
- TestLiveViewRestoresTerminalOnSignal pins both paths in a re-executed
  helper process (WR-01)
2026-10-22 02:14:10 +02:00
Jakub Zych
86e4e270d3 fix(bonfire): reroute only the owning console's lines to a live view
- 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)
2026-10-22 02:10:48 +02:00
Jakub Zych
b077dc3598 fix(bonfire): keep the order of lines printed above a live view and drain them before it ends
- 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)
2026-10-22 02:07:45 +02:00
Jakub Zych
e8f5b1c89c docs(19.8): gap-closure plans for the code review findings and v0.4.2 2026-10-22 01:03:48 +02:00
Jakub Zych
dd123821d2 docs(19.8): code review of the console overhaul 2026-10-22 00:35:55 +02:00
Jakub Zych
0b1d7e5a79 docs(19.8): record code review disposition 2026-10-22 00:35:50 +02:00
Jakub Zych
6c2164ad38 docs(19.8-04): v0.4.1 released; roadmap progress 4/4 plans 2026-10-22 00:22:02 +02:00
Jakub Zych
8bacc22a85 docs(19.6.1): map phase to its g15office task v0.4.1 2026-10-22 00:14:37 +02:00
Jakub Zych
2ca68f897d docs(19.8-04): record the Task 5 reply (release v0.4.1) 2026-10-22 00:14:21 +02:00
Jakub Zych
295c1c1ee7 docs(19.6.1): create phase plan
Three plans per D-22: server side, SPA support (D-21), tests.
D-12 amended: a password set for another admin keeps their personal
API tokens, as admin:reset-password does. Research open questions
marked resolved.
2026-10-22 00:13:40 +02:00
Jakub Zych
a7431c34f0 docs(19.8-04): unit tests and gate executed, post-release fix awaiting go-ahead 2026-10-21 19:58:37 +02:00
Jakub Zych
72b8383c10 test(19.8): gate stages for hello, docs, plugins, apps, landing and docker
- hello: vet, every test and the console tests by name
- docs: the charm decision note, TestDocsTree, docs:build --check, no
  application names, examples on every summer command
- plugins: 15 swept repositories (vet, short, TestCommandsDocumented,
  GOWORK=off build) and the additive check on each sweep commit
- apps: go build, summer build leaves main.go unchanged, list and help
- landing: nuxt generate and its TAP suite, terminal and roadmap tests,
  sync-roadmap --check against origin/master
- docker: serve lifecycle, migration checklist flags, token JSON
- self-test: TAP detector, additive and NOT SWEPT rules on planted repos
- go stage: the new surf, conga, lagoon, flare, dev and summer names
2026-10-21 19:48:58 +02:00
Jakub Zych
2baec56420 test(cabana,flare,dev,summer): json, reported errors and dev serve
- Docker: admin:token:create and list --json, -q keeps the token
- flare generate and test-push failures print once and are Reported
- summer dev starts serve with the forwarded globals, reports rebuilds,
  failures and restarts, and stops serve with SIGTERM returning nil
- delegates carry two examples and say the global options pass through
2026-10-21 19:38:19 +02:00
Jakub Zych
6720caebd3 test(surf,conga,lagoon): summaries, reports, stats and checklist flags
- serve summary lines at -v and -q, records and HideOnTTY, DSN labels
- shutdown report: aborted requests fail the stop, a drained stop is nil
- request log: request_id cap, default on, off by config or env, never the
  path for matched, 404 and 405 routes, component http; route:list --json
- WorkerStats through runAttempt: done, failed, in flight, handed back
- queue:clear and lagoon's production question on a pseudo-terminal:
  no cancels with exit 1, --force, -n and other environments skip it
- Docker: PendingMigrations, migrate/rollback/deferred:purge --pretend,
  production runs off a terminal never read stdin, migrate:status --json
- key:generate --json and -q
2026-10-21 19:38:18 +02:00
Jakub Zych
fd5286884e test(docsite): command word with global flags
- the docs checker finds the command behind -v, -q, -qn, --env X, --env=X
- gate: bonfire and docsite names in the go stage, docsite in the race run
2026-10-21 19:22:00 +02:00
Jakub Zych
eeeee59ead test(bonfire): flags, exit codes and the widget matrix
- 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
2026-10-21 19:22:00 +02:00
Jakub Zych
7b58ad5fa5 test(bonfire): goldens for list, help and errors
- list, list --all, list --format=json and an --ansi styled list (D-13, D-16)
- admin:token:create help and a passthrough help; help <cmd> equals --help (D-14)
- error blocks: hint with {bin}, unknown command, -v chain on stderr (D-18)
- CheckDocs gaps in order and sorted; the version header and BuildVersion
- goldens render with color detection cleared; -update rewrites them
2026-10-21 19:22:00 +02:00
Jakub Zych
9641a1be59 refactor(bonfire): read build info through a package variable
BuildVersion calls readBuildInfo (debug.ReadBuildInfo) so tests can pin
the tagged, replaced and go.work cases. No behaviour change.
2026-10-21 19:14:55 +02:00
Jakub Zych
efb043e4ff fix(bonfire): PeekGlobals reads clustered shorthands like -qn and -vq
pflag accepts -qn as -q -n and -vvq as -v -v -q, but PeekGlobals only
read clusters made of v, so the generated main's pre-boot diary setup,
the error block of Execute and passthrough commands missed -q, -n and
-v when they were clustered. Read the cluster letter by letter and stop
at the first letter that is not a global shorthand.
2026-10-21 19:13:21 +02:00
Jakub Zych
db83a14056 test(conga,lagoon): River and GORM bridges
- River logs as component river at warn, conga at log.level, -v lets River info through
- an app-published logger wins for River and conga
- GORM: warn by default, info traces at -vvv, record-not-found ignored, parameterized SQL
- gate: the diary, sunscreen, conga and lagoon names in the go stage
2026-10-21 19:09:28 +02:00
Jakub Zych
24f4643283 test(diary): config, channels, rotation, redaction and slogtest
- config rules name their key; env strings overlay defaults; D-08 defaults
- component floors, verbosity 1-3, quiet on the console only
- daily rotation, retention, 0640 files, unwritable dir, lazy open, path confinement
- redaction on every driver, console control-character stripping and prefix
- loggers before Setup, Reset, HideOnTTY, 100 concurrent writers
- testing/slogtest for the console handler and the JSON pipeline
- sunscreen InstallDefault still installs a redacting logfmt handler
2026-10-21 19:09:28 +02:00
Jakub Zych
9b2fa6c324 test(19.8): phase gate with the smoke tests by name
- check-phase19.8.sh: go test -json detector, self-test on planted output
- go stage runs plans 1-3 smoke tests by name and the race run
- remaining stages stubbed so --all stays red
2026-10-21 18:58:30 +02:00
Jakub Zych
b906a31c36 docs(19.6.1): UI design contract 2026-10-21 18:33:12 +02:00
Jakub Zych
54a58ec7cc docs(19.8-03): roadmap progress 3/4 plans 2026-10-21 18:25:17 +02:00
Jakub Zych
2e4f85fc50 docs(19.8-03): complete the console sweep and v0.4.0 release plan 2026-10-21 18:24:59 +02:00
Jakub Zych
053c643527 docs(19.6.1): record post-research decisions D-19..D-22 2026-10-21 18:18:24 +02:00
Jakub Zych
77cf27eb24 docs(phase-19.6.1): add validation strategy 2026-10-21 18:16:34 +02:00
Jakub Zych
fff19e5e33 docs(19.6.1): research phase domain 2026-10-21 18:15:54 +02:00
Jakub Zych
a37bdbc4eb docs(19.6.1): capture phase context 2026-10-21 17:53:44 +02:00
Jakub Zych
a0ad2b5fa3 docs: insert phase 19.6.1 Backend Administrators screen; record 19.7 post-research decisions 2026-10-21 17:42:56 +02:00
Jakub Zych
39c0c42db7 docs(phase-19.7): add validation strategy 2026-10-21 17:38:00 +02:00
Jakub Zych
336ec2e0b6 docs(phase-19.7): add research 2026-10-21 17:38:00 +02:00
Jakub Zych
2ad7f539e3 docs(19.6): create phase plan 2026-10-21 16:33:26 +02:00
Jakub Zych
25ee333930 docs(phase-19.6): add pattern map 2026-10-21 15:58:39 +02:00
Jakub Zych
5c474b4a4f docs(phase-19.6): lock post-research decisions D-18 to D-20 2026-10-21 15:54:53 +02:00
Jakub Zych
c8cbcd5cc7 docs(phase-19.6): add research and validation strategy 2026-10-21 15:50:48 +02:00
Jakub Zych
c1f5ded59d docs: capture todo - Quiet plugin boot logs on console commands like --help 2026-10-21 15:34:02 +02:00
Jakub Zych
99b6df44d6 docs(19.5): record the email-proof release and close its todo v0.4.0 2026-10-21 15:33:05 +02:00
Jakub Zych
9ab28e1d27 docs(phase-19.5): evolve PROJECT.md after phase completion 2026-10-21 15:11:14 +02:00
Jakub Zych
fdc89b107d docs(phase-19.5): complete phase execution 2026-10-21 15:11:03 +02:00
Jakub Zych
08a52890c6 docs(19.5): verification passed on recorded UAT 2026-10-21 15:10:40 +02:00
Jakub Zych
ff4e0fa7ad docs(phase-19.5): add security threat verification 2026-10-21 15:10:32 +02:00
Jakub Zych
f1fa9e05ba test(19.5): UAT 2 passed on the automated callback view test 2026-10-21 15:09:34 +02:00
Jakub Zych
d3323efbe2 test(19.5): complete UAT - 3 passed, 0 issues 2026-10-21 15:06:54 +02:00
Jakub Zych
ff0e3a6c69 docs(19.5): record the last UAT answers (prohibitions, CR-02 wording) 2026-10-21 15:06:40 +02:00
Jakub Zych
8af7c22cfc docs(19.5): re-verification after gap closure 05 and UAT items 2026-10-21 15:01:58 +02:00
Jakub Zych
074a8f250e test(19.5): record gap-closure UAT results 2026-10-21 14:54:14 +02:00
Jakub Zych
e819f7b865 docs(19.5): link the email-proof release todo to g15office sqnwn1zi 2026-10-21 14:53:11 +02:00