Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: openbootdotdev/openboot
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.65.0
Choose a base ref
...
head repository: openbootdotdev/openboot
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.66.0
Choose a head ref
  • 1 commit
  • 18 files changed
  • 1 contributor

Commits on Jul 17, 2026

  1. fix(tui): correct the v5 UI where real use disagreed with the mock (#150

    )
    
    * fix(tui): make the wizard palette follow the terminal, not a design mock
    
    The Redesign v5 tokens were a 10-step hex grey ramp drawn against a
    #08080a mock and hardcoded. Measured against a translucent terminal
    (effective background lifted to ~#2b4247 by the wallpaper behind it),
    the bottom half of that ramp collapsed into the background:
    
      cDim3 #3f3f46 -> 1.0:1   cDim2 #52525b -> 1.4:1
      cDim4 #3a3a41 -> 1.1:1   cFaint #2e2e34 -> 1.3:1
    
    1.0:1 is the background's own luminance — no terminal can draw that as
    visible text. Pending pipeline rows, sidebar counts and the status-bar
    key hints were simply gone. (Rolling back would not have helped: v0.63's
    own greys measure 1.1:1 / 1.4:1 / 1.9:1 on the same terminal. It only
    looked better because it left most text at the terminal's default
    foreground — which is exactly the property being restored here.)
    
    The text ramp is now the terminal's own ANSI palette (15 emphasis /
    7 body / 8 decorative), which the user's theme guarantees is legible
    against the background they actually chose. Brand and status hues stay
    hex — they measure 4.4-6.1:1 on the same terminal and they're the
    product's identity.
    
    Two follow-ons from the same rule:
    - pipeline rows keep a readable label; the glyph and its hue carry the
      state. A label faded toward the background reads as missing, not as
      pending.
    - hover uses reverse video instead of a painted background. Any colour
      we picked would be a guess about theirs; the design's #3d3d4a sat at
      1.2:1, so the highlight was a no-op exactly where it was needed.
    
    A test pins the ramp to ANSI indices so a hex grey can't creep back in.
    
    * refactor(tui): the wizard plans, the scrollback shows the install
    
    The v5 redesign unified the scattered planning prompts into one
    full-screen flow — that part was right, and stays. It then carried on and
    made the *apply* full-screen too, which was wrong: an alt-screen install
    takes its own output with it when it exits.
    
    Measured on a real run: 24 lines of live install detail on screen, and
    after the program exits, a blank terminal. Twenty minutes and forty-eight
    packages, and the only remaining trace of which three failed is a log file.
    The footer's "everything is logged to ~/.openboot/logs" was not a
    convenience — it was the design apologising for having thrown the record
    away. openboot is a command you run once per machine, not an app you live
    in; its output belongs in the scrollback, where it can be scrolled back,
    copied into an issue, and piped.
    
    So the wizard now stops at the plan. Confirm returns the reviewed
    InstallPlan, the alt-screen tears down, and the CLI applies it via
    installer.ApplyReviewedPlan on the normal terminal — ConsoleReporter and
    the sticky progress bar, which pins the current package to the bottom
    while results scroll past above it. Live progress and a permanent record,
    which is what the pre-v5 flow got right.
    
    Falling out of it, all of which were alt-screen workarounds:
    
    - plan.Silent is no longer forced on. It only existed to keep huh prompts
      from painting over the TUI, and it gated out the npm-retry confirm and
      the screen-recording reminder as collateral. They work inline again.
    - post-install runs in place as Step 8 with its own preview and confirm.
      splitPostInstall / RunPostInstallAfterTUI are gone.
    - ShowScreenRecordingReminderAfterTUI is gone: showCompletionFromPlan
      already does it, and now it's reached.
    - the "What was installed" breakdown is back. The wizard's log dropped
      Header/Info lines, so it had never been visible there.
    - RunPipeline, PhasesForPlan, PlanForConfig and the whole progress-event
      bridge (~650 lines) are gone with the screen they fed. The wizard no
      longer imports the install engine at all — only brew/npm's read-only
      probes for the boot scan.
    
    StickyProgress keeps the abort lifecycle the wizard had earned, instead of
    reverting to its old os.Exit(130) from a signal goroutine: the first ctrl+c
    stops the bar and lets the cancelled context unwind the install (ApplyContext
    gates every remaining step on it), and only a second one force-quits — which
    must stay reachable, because signal.NotifyContext swallows later SIGINTs
    once it has fired.
    fullstackjam authored Jul 17, 2026
    Configuration menu
    Copy the full SHA
    8dc081c View commit details
    Browse the repository at this point in the history
Loading