Say where the grid is on the capture-time axis from the first frame

The sidebar's marker rested greyed at mid-track until the first scroll or
scrub. The reasoning was that anchoring it would imply a choice the user
had not made -- but that reads the marker as reporting an intention, and
it does not. The sidebar's whole claim is to say *when* you are, and that
is known from the first frame: the grid is at the top of the library, or
wherever it was last left.

So a launch opened with the marker halfway down an axis whose visible
photographs were all from the wrong end of it. Dimmed rather than absent,
which made it look like a reading rather than the absence of one.

Seeded in `refresh_timeline` -- the one place that decides what the
marker says, and the one that runs on every route which builds the axis
-- and only when nothing has claimed it, so a scroll or a scrub still
speaks for itself.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-30 20:34:11 +02:00
co-authored by Claude Opus 5
parent eed27eb36d
commit 53dc2d171e
2 changed files with 37 additions and 8 deletions
+4 -3
View File
@@ -93,9 +93,10 @@ export component Timeline inherits Rectangle {
/// happened to fall — never under the pointer. Negative means "not
/// anchored".
in property <float> current-fraction: -1;
/// True once the user has taken control. Until then the marker rests at the
/// middle rather than pinning to either end, which would imply a selection
/// that has not been made.
/// Whether the marker has a position to report. False only before the first
/// axis has been built — Rust seeds it from wherever the grid sits, so a
/// launch draws the marker where the photographs on screen are rather than
/// leaving it dimmed at mid-track waiting for a scroll.
in property <bool> anchored: false;
/// Scrub to a fraction along the visible span. Rust turns it into an