Skip to content

Camera section: exposure verdict first, one Check exposure button, settings labeled per camera (#172) - #179

Merged
Skeyelab merged 3 commits into
mainfrom
issue-172-camera-wording
Oct 23, 2026
Merged

Skeyelab merged 3 commits into
mainfrom
issue-172-camera-wording

Conversation

@Skeyelab

Copy link
Copy Markdown
Member

Closes #172

What changes

  • Exposure verdict from the engine. Status gains camera.exposure (verdict: good / light_limit, plus the engine's low/high/target range), computed by exposure_verdict() in engine/calibrate.py from the saved calibration. The Editor quotes those numbers and has no copy of 120/180/250. The saved calibration format is unchanged, and at_light_limit on status stays as it was.
  • Exposure line leads with the verdict: "Good (white at 149 of 255; a still camera needs 120 to 249): set on the camera, checked by the app", "At the camera's light limit (...): brighten the projector, darken the room or move the camera closer". With nothing saved: "Not checked yet: the scan checks it first, or check exposure now".
  • Failed checks lead with their verdict in the engine's own text: "Too dark (white at 90 of 255; a still camera needs 120 to 249): use a slower shutter...", "Clipping (...)", and the webcam's "Clipping even at the shortest exposure: ...". #exposure-note shows the engine's message as-is. The old "Exposure check failed:" / "Calibration failed:" prefix is gone, so a 409 such as "Output window is not connected" now shows on its own in the warning color.
  • One button name, Check exposure, for both camera types. Its result (#exposure-note) leads with the verdict and says what it did: "Good: adjusted the camera to exposure 1200, gain 3" (webcam) or "Good: checked the exposure set on the camera; nothing changed on it" (still camera).
  • Grouping: "Before scanning" (preview, Check exposure, Check framing, their results, Exposure/Battery, the preview) and "Scan settings for ", with "Saved for this camera. Used by the next scan." said once.
  • Visible labels and hints: Aperture, HDR and Hole fill each have a <label> and a one-line hint linked by aria-describedby; Skip an area has a hint too. The option text drops the "Aperture:"/"HDR:" prefix, and the option values are unchanged, so saved per-camera settings load as before. The tooltips on those rows were removed in favor of the hints. Check framing keeps its title, which the Camera: say why buttons are disabled, disable them during a scan; Edge glow threshold and Smoothing hints (#173) #178 test relies on.
  • frontend/src/shared/fixtures/engine-messages.json was regenerated with UPDATE_MESSAGE_FIXTURES=1 for the new status field.
  • README §3 and the CONTEXT.md glossary entry for Calibration are updated.

Not in scope: moving the camera picker or a setup checklist (#168).

Tests

Written test-first, each seen red before the change: the engine verdict and status field (test_calibrate.py), the still-camera 422 verdict wording (test_still_scan.py), the readout text (statusView.test.ts), the button name, the adjusted/checked result, the light-limit note, and the grouping/labels/hints (cameraPanel.browser.test.ts).

  • uv run pytest -q: 291 passed, 11 skipped
  • npx tsc --noEmit: OK
  • npx vitest run --maxWorkers=2: 394 passed, 1 skipped
  • American spelling: OK

Not verified

Not checked by hand in the real Editor. Laying the selects out in the .control grid changes their width compared with the old .row, so the look is unverified.

…ttings labeled per camera (#172)

The engine judges a saved exposure (good or at the light limit) and sends
the range it judged by, so the Editor quotes the engine's levels instead
of keeping its own. A failed check leads with its verdict ("Too dark",
"Clipping"). The button is Check exposure for every camera; the result
says whether it adjusted a webcam or only checked a still camera. With
nothing saved, the readout says the scan checks it first.

The section is split into Before scanning and Scan settings for <camera>,
each setting with a visible label and a one-line hint.

Assisted-by: Claude Code:claude-opus-5-5
…copy fails (#172)

Assisted-by: Claude Code:claude-opus-5-5
@Skeyelab
Skeyelab merged commit 2e9e2eb into main Oct 23, 2026
4 checks passed
@Skeyelab
Skeyelab deleted the issue-172-camera-wording branch October 23, 2026 19:36
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: Camera section grouping and wording (visible hints, exposure verdict, which camera)

1 participant