Skip to content

Now-section sweep: back-nav + lint migration#15

Merged
That1Drifter merged 2 commits intomasterfrom
now-section-sweep
Apr 10, 2026
Merged

Now-section sweep: back-nav + lint migration#15
That1Drifter merged 2 commits intomasterfrom
now-section-sweep

Conversation

@That1Drifter
Copy link
Copy Markdown
Owner

Two small unrelated chores from the top of the TODO, bundled.

1. Back-to-scenarios navigation (65f5904)

Adds an "← all scenarios" link in the play screen header and a "Pick another scenario →" CTA below the rendered debrief output. Previously a user who finished a scenario could not start another one without editing the URL or hitting browser back — a broken flow disguised as polish.

2. Migrate `pnpm lint` from `next lint` to ESLint CLI (`3ed0ac2`)

`next lint` is deprecated in Next 15 and, when run non-interactively, drops into an ESLint setup prompt that ALSO mutates `tsconfig.json` (adds `allowJs: true`, reformats) and `next-env.d.ts` as side effects. We had to revert those mutations manually after every deploy. This bites every CI run too.

  • Replaces the lint script with a flat `eslint.config.mjs` using `FlatCompat` to extend `next/core-web-vitals` + `next/typescript`
  • Adds `eslint`, `@eslint/eslintrc`, `eslint-config-next` as devDeps
  • Fixes two pre-existing `import/no-anonymous-default-export` warnings the broken lint was hiding (postcss.config.mjs and the new eslint.config.mjs both now assign to a named const before exporting — preferred over an eslint-disable comment)
  • Verified tsconfig.json and next-env.d.ts are byte-identical to before

Test plan

  • `pnpm typecheck` — clean across 6 packages
  • `pnpm test` — all suites passing
  • `pnpm lint` — exit 0, zero warnings, runs non-interactively
  • `tsconfig.json` and `next-env.d.ts` unchanged after lint
  • Smoke the back-nav on staging — click through play → debrief → "Pick another scenario" → picker

That1Drifter and others added 2 commits April 10, 2026 17:15
Adds an "← all scenarios" link in the play screen header and a "Pick
another scenario →" CTA below the rendered debrief. Previously a user
who finished a scenario could not start another one without editing the
URL or hitting browser back.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
next lint is deprecated in Next 15 and, when run non-interactively,
drops into an ESLint setup prompt that mutates tsconfig.json (adds
allowJs: true, reformats) and next-env.d.ts as side effects. We had
to revert those mutations after every deploy.

Replaces the lint script with a flat eslint.config.mjs using
FlatCompat to extend next/core-web-vitals + next/typescript, adds the
necessary devDeps, and fixes two pre-existing
import/no-anonymous-default-export warnings the broken lint was
hiding (postcss.config.mjs and the new eslint.config.mjs both now
assign to a named const before exporting).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@That1Drifter
Copy link
Copy Markdown
Owner Author

Smoke test on staging passed. Drove the full flow with browse:

  1. Loaded /play/support-triage — "← all scenarios" link rendered in the header (data-testid=back-to-scenarios)
  2. Clicked it — landed on / picker, all 6 scenarios visible
  3. Re-loaded the play page, ran a turn, clicked "debrief", waited for the narrative to render
  4. data-testid=pick-another-scenario CTA appeared below the debrief output as expected
  5. Clicked it — landed on / picker, screenshot confirmed

Both nav points working end-to-end.

@That1Drifter That1Drifter merged commit cf17af5 into master Apr 10, 2026
1 check passed
@That1Drifter That1Drifter deleted the now-section-sweep branch April 10, 2026 22:20
That1Drifter added a commit that referenced this pull request Apr 10, 2026
A Sonnet subagent with no project context played support-triage on
staging via gstack browse and surfaced two critical bugs the existing
suite never would have caught: an Inner Claude contract guard that
rejects valid tool inputs intermittently (regression from the tool_use
migration in #14) and a page-reload session destruction. Pulling the
staging logs alongside the playthrough also surfaced a separate infra
issue: the box is being OOM-killed under modest load, six SIGKILL
events on 2026-04-10 alone.

- Promote the three critical bugs to the top of the Now section with
  source-line references and proposed fix sketches.
- Add five medium UX items to Polish (debrief structure, trust deltas,
  cost tooltip, objective badges, action log auto-expand).
- Add a tech-debt note documenting the gstack-browse-with-in-URL-creds
  fetch artifact that caused at least one false-positive bug report,
  so future smoke runs use header-based auth instead.
- Record verified false alarms (picker click works in real Chromium,
  debrief button doesn't submit a turn, the (?i) regex was already
  fixed in d791a3d, reset has a confirm guard) so future fresh-eyes
  reviews don't re-investigate them.
- Mark back-nav and lint migration as done (shipped in #15).
- Note that the demo GIF has a draft generated via the new stitching
  script.

Also adds scripts/stitch-demo-gif.py (Pillow-based curated frame
assembler) and gitignores .playwright-mcp/ to keep snapshot artifacts
out of the repo, matching the existing .gstack/ convention.

Co-Authored-By: Claude Opus 4.6 (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.

1 participant