Skip to content

feat(installer): first-run UX — interim slice of the v2 spec (copy, naming, location fix, clearer errors)#307

Open
LukasWodka wants to merge 4 commits into
developfrom
ux/install-first-run-polish
Open

feat(installer): first-run UX — interim slice of the v2 spec (copy, naming, location fix, clearer errors)#307
LukasWodka wants to merge 4 commits into
developfrom
ux/install-first-run-polish

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Interim slice of the installer first-run UX v2 spec (tracebloc/backend#992): every improvement that is safe against the released CLI (v0.5.1) ships here; the full 4-section restructure is gated on tracebloc/cli#137 + tracebloc/cli#138 reaching a release.

Originally opened as a line-by-line UX pass off a real failed prod install (a typed city — berlin — died with only "see the log"); extended with the spec's copy decisions.

What's in

Bootstrap / banner

  • Verification reframed as plain-language reassurance (no cosign/manifest jargon, no alarming "not found"); lowercase brand; redundant "Running… environment setup" line dropped.
  • Vendor value-prop lines removed from the banner (bash + PowerShell); the trust claim lives in the verified connected summary — now phrased "Models other collaborators submit…" (naming rule: collaborators, never vendors).
  • The inaccurate "nothing modified outside ~/.tracebloc and Docker" promise dropped.

Step 1 (GPU) — Apple-Silicon messaging de-duplicated; ⚠ on the real limitation (no GPU training on macOS), not on the chip.

Step 3 (provision)

  • Name this machineName this client (noun rule: machine = hardware, client = tracebloc entity).
  • Location: auto-detected from the system timezone (OS zone.tab, no network) and offered as the Enter-default. Fixes a live prod bug: the shipped prompt says "optional", but v0.5.1's client create hard-requires --location when it can't prompt — so skipping doomed the create with the error buried in the log. Now: Enter accepts the detected zone; no detection → re-ask (3 tries) instead of minting a doomed request; unattended runs fall back to the detected zone silently. (Prompt disappears entirely once cli#137 ships.)
  • Client-create failures surface the real reason inline (e.g. "berlin" isn't a recognized carbon zone) instead of "see the log".

Summary — next steps rewritten around the goal chain: ingest data → create your use case (https://ai.tracebloc.io/my-use-cases) → invite other collaborators; training explicitly gated on the user's approval; dashboard + tracebloc --help demoted to footnotes.

Step 4 / Windows — stale dataset push/rmdata ingest/delete; internal ticket refs (RFC-0001 R8) removed from user-facing errors.

Testing

bats: 67/68 across provision, bootstrap, install-cli, summary, common (the 1 failure is the pre-existing environmental validate_config case — fails identically on untouched develop). Auto-detect verified on macOS (Europe/BerlinDE). Syntax-checked; summary trust-claim assertions still pass.

Follow-ups (filed)

🤖 Generated with Claude Code

…o-detect, real errors

Line-by-line pass over the one-command install experience, driven by a real
production run that failed opaquely on a mistyped location zone ("berlin").

- Bootstrap: reframe supply-chain verification as plain-language reassurance
  (drop cosign/manifest/keyless jargon and the alarming "cosign not found"),
  lowercase brand, drop the redundant "Running… environment setup" line.
- Welcome banner: drop the inaccurate "nothing modified outside ~/.tracebloc
  and Docker" promise (the installer also brew-installs Docker + system deps);
  fix brand casing on the sudo prompt.
- Step 1: de-duplicate the Apple-Silicon messaging and warn on the real
  limitation (no GPU training on macOS) rather than on the chip itself.
- Step 3 (provision): auto-detect the carbon-reporting zone from the system
  timezone via the OS's own zone.tab (no network call, no embedded zone list
  to drift) and let the user Enter-to-accept / override / skip; surface the
  ACTUAL client-create failure inline (e.g. an unrecognized zone) instead of a
  generic "see the log".
- Step 4 + summary + PowerShell: advertise the shipped dataset commands
  (dataset push/rm → data ingest/delete).
- Drop internal ticket refs (RFC-0001 R8) that leaked into user-facing errors.

Tests: provision, bootstrap, install-cli, summary bats suites green (50/50).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@LukasWodka

Copy link
Copy Markdown
Contributor Author

👋 Heads-up — Code review queue is at 34 / 30

Above the WIP limit. The team convention is to review existing PRs before opening new work.

Open PRs currently in Code review (oldest first):

Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.)

LukasWodka and others added 2 commits July 6, 2026 18:10
…-led next steps, location fixes

Interim slice of the installer UX v2 spec (full restructure gated on the
next CLI release):

- Banner: drop the vendor value-prop lines (bash + ps1) — the trust claim
  lives in the verified connected summary.
- vendors → other collaborators everywhere user-facing; training phrased
  as gated on the user's approval.
- Next steps rewritten around the goal: ingest data → create your use
  case (real /my-use-cases URL) → invite other collaborators; dashboard +
  CLI help demoted to footnotes.
- "Name this machine" → "Name this client" (entity noun rule).
- Location prompt: fix the live skip-path bug — the released CLI (v0.5.1)
  hard-requires --location when it can't prompt, so a blank/skip answer
  doomed the create with a buried error. Now: Enter accepts the detected
  zone; no detection → re-ask (3 tries) instead of minting a doomed
  request; unattended runs fall back to the detected zone silently.

Tests: 67/68 bats green (1 pre-existing environmental failure on
validate_config, identical on develop).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@LukasWodka LukasWodka changed the title feat(installer): overhaul first-run UX — plainer output, location auto-detect, clearer errors feat(installer): first-run UX — interim slice of the v2 spec (copy, naming, location fix, clearer errors) Jul 6, 2026
- Regenerate scripts/manifest.sha256 (7 script hashes changed by the copy
  pass) — the Static analysis drift check diffs it against the tree.
- Update two bats assertions to the new user-facing strings: the no-name
  fatal now says 'name for this client' (noun rule) and the bootstrap
  happy path prints 'installer files verified'. Caught by Linux CI only:
  on macOS, bats silently passes failing [[ ]] assertions (bash 3.2
  errexit quirk), so local green was misleading.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants