Skip to content

Installer-facing contract: login progress display, auth status --check, backend connect confirmation #138

Description

@LukasWodka

Part of the installer first-run UX v2 spec (umbrella in the backend tracker; interim copy fixes in tracebloc/client#307). The installer shells out to the CLI for sign-in, session state, and connect verification — these three output/contract changes make the approved installer copy renderable and honest.

1. login — progress display

Today the device-flow wait is a static hint with no motion. Target output (glyphs already match the installer's ✔/·/⚠ vocabulary):

   Open    https://ai.tracebloc.io/activate
   Enter   WDJB-MJHT

⠴ Waiting for your browser… 0:41   (Ctrl-C to cancel)
✔ Signed in as lukas@tracebloc.io
  • Field labels open:/code:Open/Enter.
  • Live spinner + mm:ss elapsed during the RFC 8628 poll loop (first \r-redraw in internal/ui — keep it TTY-gated, static line under --plain/no-TTY).
  • Demote "Token saved to ~/.tracebloc (0600)." to a dim detail line.

2. auth status --check — machine-readable session probe

auth status exits 0 in BOTH signed-in and signed-out states (verified on v0.5.1 and develop), so scripts must grep prose today. Add --check: exit 0 = token present and accepted by the backend (WhoAmI probe), exit 1 = sign-in needed. Silent by default. The installer's "session probe" step becomes a one-liner and ✔ Already signed in as … on re-runs stops being a text-parse.

3. Connect confirmation — honest "🟢 Online"

The installer's final claim today is fed only by kubectl rollout status — nothing ever asks the backend whether it can see the client (RFC-0001 §8.5 explicitly requires the Online claim to reflect a real probe). The backend status already flows through client list (online/offline/pending). Add a wait mode, e.g.:

tracebloc client status --wait --timeout 120s   # exit 0 when the backend reports this client online

polling the same source client list renders. Powers the installer's closing sequence:

⠸ Waiting for tracebloc to confirm… 0:12
✔ tracebloc can see this client

Acceptance

  • login on a TTY shows spinner+elapsed; --plain/piped output stays static (no raw ANSI).
  • auth status --check exit codes: 0 signed-in-valid / 1 signed-out or rejected token; no output unless -v.
  • client status --wait exits 0 only on backend-reported online; non-zero on timeout with a plain-language line.

Refs: RFC-0001 (cli#55) §8.1/§8.5 · connect/install flow family backend#877.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions