Skip to content

thirdshift console --no-sign-in serves the Inbox #817

Closed

Description

@JacobStephens2

Parent

#776

What to build

The first end-to-end slice of the Console. thirdshift console --no-sign-in serves the Inbox on localhost, at the port in the User config's [console] section, with the same groups, order and words as thirdshift status (ADR 0016, ADR 0018).

It sets up everything later Tickets build on:

  • The server: axum, with its async runtime confined to the Console.
  • The page: HTML rendered on the server from templates checked at compile time. htmx 2.0.7, htmx-ext-sse 2.2.3 and idiomorph 0.7.4 are vendored, plus a small ES module, all embedded with include_dir under src/. Nothing is loaded from another site.
  • The look: the Focus Theme in auto, light and dark, as CSS custom properties from the Theme's tokens, with its fonts embedded as Latin-subset woff2 files.
  • The header: it names the machine and links to the other Consoles listed in [console].
  • CLI equivalents: each page shows the command that does the same thing.
  • Updates: the Console re-executes itself when thirdshift update replaces the binary.
  • The parity test: it walks every route and fails on any route without a CLI command paired with it. Here that's the Inbox with status.
  • Browser tests: a Playwright harness for the Console, beside the site's.

Visual rules from #776 apply:

  • no coloured bars between sections;
  • every section heading fits above the fold on a 14" laptop with Needs you open;
  • no sideways scroll at 390 px.

Acceptance criteria

  • thirdshift console --no-sign-in serves the Inbox to localhost only, and its groups match status --json for the same fixtures.
  • Needs you is open on load, and the other sections can be folded.
  • Rows show a state word, the issue and title, a one-line now-line and the age. Spec runs show their Tickets as a plan, and child Runs nest.
  • The page loads nothing from another site. The release build needs no Node or npm.
  • The parity test exists and fails on a route without a paired command.
  • Replacing the binary makes a running Console re-execute itself.
  • Tested over HTTP against a running thirdshift console with fixture records, plus a Playwright test at 390 px.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions