Skip to content

Mains custom streak pairs, notch-width viz, background fill + viewer UX fixes#28

Merged
jacobson30-bot merged 1 commit into
mainfrom
mains-streaks-and-ux-feedback
Jun 11, 2026
Merged

Mains custom streak pairs, notch-width viz, background fill + viewer UX fixes#28
jacobson30-bot merged 1 commit into
mainfrom
mains-streaks-and-ux-feedback

Conversation

@jacobson30-bot

Copy link
Copy Markdown
Contributor

Summary

Implements the 2026-06-11 field-feedback batch.

Mains / FFT

  • Custom streak pairs — draggable ±q line pairs for pickup at non-mains frequencies; work without a scan speed; recorded as exact FFT-pixel offsets and replayable from provenance (extra_streaks_px forwarded through apply_processing_state).
  • Notch width visualization — translucent bands (half-width = notch radius) on every overlay line; radius changes rebuild the overlay live.
  • notch_fill="background" — notched bins drop to the local per-row background magnitude (phase kept, never brightened) instead of zero, so the FFT shows noise floor where the streak was and only the excess pickup energy is removed. Streak shape only; spot raises.
  • FFT auto contrast cycles three percentile presets with status feedback instead of an idempotent full-range reset.

Viewer UX

  • Advanced-tools overlay: own Apply processing button (scrim hid the one behind it); Scale y range 0.5–2.0 (was 0.8–1.2).
  • STM background jump tooltip clarifies slow-axis semantics (verified correct: lateral terrace steps are invisible to the row profile by design).

Not reproducible

Enter-closes-window from a numeric field: probed every spinbox in both spec dialogs and the Advanced overlay with real key events — all intercept Return. Needs the specific window title to chase further.

Test plan

  • 5 new kernel tests (test_mains_pickup.py): custom streaks without speed, background-fill noise-floor contract, spot rejection, no-op without peaks, provenance replay.
  • 5 new GUI tests (test_mains_pickup_gui.py): width bands tracking radius, add/drag/remove pair, params carrying extras+fill, speed-less apply gating, auto-contrast cycling. Two artist-count pins updated for the new bands.
  • Full suite green locally: 2366 passed, 3 skipped.

🤖 Generated with Claude Code

User-feedback batch (2026-06-11 field notes):

Mains / FFT tool:
- Custom streak pairs: "Add streak pair" places a symmetric ±q line pair on
  the FFT (cyan, solid — distinct from predicted mains lines) that can be
  dragged onto a streak; the partner mirrors automatically. Pairs work with
  or without a scan speed (pickup at non-mains frequencies has no prediction
  to lean on), are recorded as exact FFT-pixel offsets (extra_streaks_px) in
  the op params, and replay through provenance.
- Notch width is now visible: every overlay line carries a translucent band
  of half-width = notch radius, and the radius spin triggers an overlay
  rebuild (previously the control changed nothing visible).
- notch_fill="background": instead of zeroing notched FFT bins (black
  streak-shaped gaps; the genuine noise floor inside the notch removed too),
  bring each bin's magnitude down to the local per-row background median,
  keeping phase and never brightening. Streak shape only — spot raises.
- FFT auto contrast cycles 0-100% -> 1-99.5% -> 5-98% with status feedback;
  the old single idempotent reset visibly did nothing on repeat clicks.

Viewer:
- Advanced-tools overlay gains its own "Apply processing" button (the modal
  scrim hid the Process tab's Apply; dismissing the card to commit read as
  an abandoned choice). Linear-undistort Scale y range widened from
  0.8-1.2 to 0.5-2.0.
- STM background "handle profile jumps" tooltip now states it targets
  row-to-row tip changes, not lateral steps within a row (verified: a
  terrace edge crossing the image is invisible to the row profile by
  design; step-tolerant background / facet level are the right tools).

Checked, not reproducible: Enter closing "the window" from a numeric field —
probed every spinbox in SpecViewerDialog, SpecOverlayDialog, and the
Advanced overlay with real key events; all intercept Return (the spec
dialogs re-plot). Needs the specific window to chase further.

Co-Authored-By: Claude Fable 5 <[email protected]>
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