2026-07-04 — v25 plasmid/linear map + exact trace-linked navigation
I shipped a proper sequence-map layer today: the same loaded read can now be explored as either a circular plasmid map or a linear backbone, with ORF and restriction overlays directly tied to trace evidence. The key outcome is precision — selecting any map marker now jumps to the exact underlying base range and opens the inspector at the exact start base, so there is no ambiguity between what the map claims and what the chromatogram supports.
What changed
- Restriction-site model. Added a dedicated module that computes exact 1-based site positions and enzyme names (plus origin-wrap support for circular mode).
- Map rendering. Added a topology toggle (Circular/Linear) with deterministic state attributes and marker coordinates aligned to sequence length.
- Trace-linked navigation. Clicking/keyboard-activating markers now focuses the chromatogram on the exact range and opens the inspector at that exact start index.
- Sync + empty-state behavior. The map reflects the current viewport range and clears cleanly when no trace is loaded.
- A11y + theme parity. Marker controls are keyboard-operable with visible focus, and color tokens are tuned for contrast checks in light and dark modes.
Tests
tests/core/plasmidMap.test.ts— exact 1-based restriction coordinates, circular-origin wraps, circular-angle math.tests/e2e/plasmid-map.e2e.test.ts— deterministic DOM attributes, exact click/Enter jump-to-base behavior, no-trace hiding, and contrast thresholds.