Skip to content

Replace the forced first-run with a Getting started checklist - #133

Merged
SaladDay merged 14 commits into
mainfrom
codex/web-getting-started
Sep 25, 2026
Merged

SaladDay merged 14 commits into
mainfrom
codex/web-getting-started

Conversation

@SaladDay

@SaladDay SaladDay commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Replaces the forced first-run gate with a Getting started checklist on the Overview (W1 of the new-user install plan). The product owner decided that first sign-in no longer forces creating a project.

Depends on #132. Both edit the NodeEnrollment wiring in SandboxManagerView.tsx. This branch rebases after #132 merges, and the checklist's Add node action then uses the page-controlled dialog.

Changes

  • Sign-in always lands on the Overview. The tour stays optional ("Take the tour").

  • Getting started checklist. Three steps, each done / to do with one action. The status comes only from reads the console already makes.

    1. Sandboxes ready:
      • own machines: a deployment is saved and a node is online and ready;
      • E2B: the template build is ready.
    2. Project and key: an active project has an active key.
    3. First Session: any Session exists.

    Behaviour:

    • It shows while any step is to do.
    • "You're set" can be dismissed for good.
    • Hiding the checklist early leaves one compact line.
    • A deployment that's already fully set up never shows it.
  • Checklist actions open the right dialog on arrival: Create project, then Issue key; or Add node.

  • Empty states: with no deployment, the Overview fleet card and Sandbox metrics say "Set up sandboxes". Count axes keep whole numbers.

  • Removed: the first-run project/key flow, its terminal and command block, and their CSS and locale keys; also the unused Hosted Sandbox Manager string.

Tests

  • access.spec.ts: fresh install → checklist → tour skip → Create project → Issue key → step 2 done, with no key in browser storage. Every page renders empty with no error.
  • Unit tests for the step and visibility rules.

Results: typecheck ✓, unit 333/333, build ✓, full web e2e 18/18.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

Signing in no longer asks for a first project and key before the console
opens. The console tour stays as an optional screen the console can open,
on the same stage as sign-in.

Remove what only the forced setup used: FirstProjectSetup, the typed
request terminal and its command block, the combined create-project-and-key
flow in the key-flow reducer, the setup progress and step transition, and
their locale keys (keys.firstRun, onboarding.steps/stage.project/terminal,
the unused navigation.gettingStarted and dead firstRun strings).
Three steps, in any order, each with its state and one action, computed
from reads the Overview already makes: sandboxes ready (a saved deployment
with a node online and ready, or a ready E2B template build), a project
with an active key, and any Session. The checklist shows while a step is to
do, ends with "You're set" in a browser that saw it, and collapses to one
line when hidden; the choice is kept in localStorage. Its header opens the
optional console tour.

Its actions open the right dialog on arrival through an in-memory
navigation intent: Add node on the Nodes page, Create project (continuing
to the new project's first key) or Issue key on Projects and keys.

Browser acceptance: a fresh install signs in to the checklist, creates a
project and a key shown once from it, and sees the step done; an empty
install shows every page without errors and opens Add node from it.
Before sandboxes are set up, the Overview's fleet card and Sandbox metrics
offer "Set up sandboxes" instead of Add node; with a saved own-machines
deployment and no node, their Add node opens the dialog on the Nodes page.
Session activity keeps whole-number ticks, so a first Session no longer
reads 0, 0, 1, 1, 1 on the axis.
A counts axis skips the 2.5 step and rounds its step up to a whole number,
so a maximum of 9 or 10 no longer reads 2.5, 7.5. Agent requests, tokens,
models and tools and Core Turns and connection pool use it too.
The tour focuses its forward button when it opens and returns the focus to
the control that opened it, or to the page, when it ends. Escape that a
menu already handled (closing the appearance menu) no longer ends the tour.
Core admits only a ready template build, and selections saved before it
recorded the build report a null status. Getting started now leaves the
sandbox step to do only for a build Core reports as not ready, using the
same templateBuildStatus rule as the sandbox pages.
The menu claimed every Escape pressed with focus on its trigger, so after
Escape closed it on the tour, a second Escape could not end the tour.
- Hiding the checklist hides it (no compact line); Show Getting started,
  a quiet row above the sidebar's account controls, opens it again in any
  state and moves the focus to it. The tour opens from the checklist and
  from "You're set".
- The choice is kept per installation (keyed by installation_id), so a
  reinstall at the same origin starts again.
- "You're set" closes the checklist as soon as it shows, so a later
  regression never brings it back; an open checklist waits for a step's
  state instead of showing every step as checking.
- A page drops a Getting started request it cannot serve on its first
  settled read (Add node without own machines or in maintenance, Issue key
  for a missing or archived project) instead of acting on it later.
- Browser acceptance waits for each page's reads before asserting that no
  error shows, covers a fresh install without a sandbox deployment, hiding
  and reopening the checklist and its Set up sandboxes action.
PRODUCT.md, DESIGN.md and the console surface brief describe the Overview's
Getting started checklist, Show Getting started in the sidebar and the
optional tour; the Web protocol coverage and roadmap drop the first-run
screen, its detection, the default project name and the curl example.
@SaladDay
SaladDay force-pushed the codex/web-getting-started branch from 6caa1e5 to e0af177 Compare September 25, 2026 18:47
Creating a project from Getting started opens its page anew, which could
drop the Issue key request when the list had not been re-read yet. The
created project now goes into the cached list before the page opens; the
re-read still confirms it. Drop the dead created-project fallback. The
browser test delays the list by five seconds and still expects the dialog.
The browser remembers the installation it last read, and the checklist
uses that installation's entry while the sandbox read fails, so a hidden
checklist stays hidden during an outage and a choice made then is kept.
The tour replaces the Overview, which lost the local You're set state while
the checklist was already closed, so the card and the focus target were
gone afterwards. You're set now lives beside the checklist memory until it
is dismissed; after the tour the card is back and its Take the tour button
has the focus. A browser test reopens a finished checklist from the sidebar
and checks both.
PRODUCT.md names the E2B condition as the code applies it (a saved
deployment whose template build is not reported as not ready); DESIGN.md
says You're set stays through the tour until dismissed and the choice
holds while the deployment cannot be read.
@SaladDay
SaladDay merged commit 70ba75a into main Sep 25, 2026
2 checks passed
@SaladDay
SaladDay deleted the codex/web-getting-started branch October 7, 2026 06:38
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.

1 participant