Skip to content

Editor: a Setup checklist for first-time setup; the camera picker moves to Camera (#168) - #182

Merged
Skeyelab merged 3 commits into
mainfrom
issue-168-first-setup
Oct 25, 2026
Merged

Skeyelab merged 3 commits into
mainfrom
issue-168-first-setup

Conversation

@Skeyelab

@Skeyelab Skeyelab commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Closes #168

What changes

  • Setup checklist at the top of the sidebar (setupView.ts, pure; setupPanel.ts, the list). Steps in order: Projector, Output window, Camera, Framing, Exposure, Scan, each with its state and a button:
    • Output window, Framing, Exposure and Scan press the real control (#open-output, #check-framing, #calibrate, #scan), carrying its label, disabled state and Camera: say why buttons are disabled, disable them during a scan; Edge glow threshold and Smoothing hints (#173) #178 reason.
    • Projector and Camera open their section and focus the picker.
    • States come from existing sources only: status (projector, output size via outputOffProjector, now shared with describeStatus), the camera panel's last framing check (describeFraming), the engine's exposure verdict (camera.exposure.verdict), and describeStatus().scanReason. No thresholds copied.
  • Recommended steps: Framing and Exposure show !, not blocking. Scan stays enabled. With a still camera and no exposure check, the line beside Scan says "Exposure not checked: the scan checks it first, and stops if it's wrong" (scanWarning), so it shows even after the checklist folds.
  • Folding: Setup is open until there's a scan, then folds and reopens by itself only if the projector, output window or camera needs doing again (setupNeeded). These rules wait for the engine's answer about the latest scan, so a returning user doesn't see Setup flash open; if the engine is down at load, the scan is asked for again on reconnect. Camera opens by default until the first scan; your saved choice still wins (foldOpen's new openFirst). Folds follow scan messages, not only status.
  • Camera picker moved from Hardware to the top of the Camera section (same element and id; the choice is the engine's, saved per camera). Camera: say why buttons are disabled, disable them during a scan; Edge glow threshold and Smoothing hints (#173) #178's disabled reasons and Camera section: exposure verdict first, one Check exposure button, settings labeled per camera (#172) #179's "Before scanning" / "Scan settings for " are unchanged.
  • The camera panel exposes framing() and calls onChange when a framing or exposure check starts and ends, so the checklist's button shows the busy state and the result at once. (The exposure verdict also arrives with the status the engine broadcasts after calibrating.)
  • README: the Setup list, the picker's new place, Camera open until the first scan.

Not done: no separate "Setup" link near Scan; the section's heading is how to reach it later. I left the "Before scanning" hint as it was.

Tests

  • setupView.test.ts: each step's states, order, setupNeeded, scanWarning.
  • setupPanel.browser.test.ts (real markup): Setup is the first section; the picker sits with preview, checks and scan settings; steps press the real control and mirror its label, disabled state and reason; a picker step opens its section and focuses; rows update in place.
  • folds.test.ts: Setup folded unless needed; Camera open by default before a scan, saved choice wins.
  • cameraPanel.browser.test.ts: framing() and onChange (start and end); framing forgotten on camera change.
  • The main.ts wiring (applyFolds, renderScanButton) has no test; no test mounts main.ts. I checked the rendered list in a browser screenshot of the real page markup, not with the engine running.
  • tsc clean; vitest 412 passed, 1 skipped; engine pytest 291 passed, 11 skipped; spelling OK.

Behavior to know

  • Before the first scan, Setup can't be folded by hand: it opens as a section with a problem does (the Hardware precedent), so a fold snaps back on the next status.
  • Not verified: the Output window step presses #open-output from its own click handler, so the user gesture should carry through to the window and the placement prompt, but I didn't run it with the engine.

…es to Camera (#168)

A Setup section at the top of the sidebar lists projector, output window, camera, framing,
exposure and Scan, each with its state and the real control that does it (pressed, with its
label and disabled reason, or a picker shown and focused). States come from status, the
panel's last framing check and whether there's a scan; exposure is the engine's verdict.
Framing and exposure are recommended: Scan stays enabled, and with a still camera and no
exposure check the line beside Scan says so.

Setup shows itself until there's a scan, then only when the projector, output window or
camera needs doing again (it waits for the engine's answer about the scan, so it doesn't
flash open). Camera opens by default until the first scan, and now holds the camera picker.

Assisted-by: Claude Code:claude-opus-5-5
… starts; name the Choose buttons (#168)

If the engine wasn't up when the Editor loaded, the latest-scan request failed and Setup's
rules never engaged; the scan is now asked for again on reconnect until the engine answers.
The camera panel tells the checklist when a check starts too (onChange), so its button shows
the busy state. Choose buttons say what they choose to a screen reader.

Assisted-by: Claude Code:claude-opus-5-5
…a reason names Camera (#168)

Behind the Vite proxy an engine that's down answers /api/scan/latest with 502, which counted
as "no scan": the reconnect never asked again, so a saved scan stayed hidden and Setup stayed
open until a reload. Only 200 or 404 count now (scanAnswered), and a failed request doesn't.
The no-camera scan blocker points at the Camera section, where the picker is now.

Assisted-by: Claude Code:claude-opus-5-5
@Skeyelab
Skeyelab merged commit 15af969 into main Oct 25, 2026
4 checks passed
@Skeyelab
Skeyelab deleted the issue-168-first-setup branch October 25, 2026 04:04
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.

Editor: guide first-time setup (projector, output window, camera, framing, exposure, then Scan)

1 participant