diff --git a/plan/summary.md b/plan/summary.md index dc2c65c..46ff13b 100644 --- a/plan/summary.md +++ b/plan/summary.md @@ -1479,3 +1479,36 @@ mixed image+audio, untyped, generic-with-extension, generic-without and video), and the two live feeds — netzpolitik.org/feed/ now yields 0 episodes with the warning, logbuch-netzpolitik.de/feed/mp3 (→ feeds.metaebene.me/lnp/mp3) yields 559 `audio/mpeg` episodes with `HH:MM:SS` durations. + +### Follow-up: the keys settled on `,` `.` `<` `>`, and the gauge is clickable + +Three rounds on the bindings, and the last one had a reason beyond taste. +`Ctrl-b`/`Ctrl-f` work fine in a browser — the keydown handler already +`prevent_default`s any chord it resolves — but `Ctrl-n`, the long-standing +next-track chord, does **not**: Chrome and Firefox handle it as "new window" +above the page, where `preventDefault` cannot reach. The web client therefore +had no working next-track key at all. + +Plain printable characters dodge the whole reserved-chord question, so seek and +track-skip now share two keys in both clients: `,`/`.` seek 15 s, `<`/`>` skip a +track. Same key, shift = bigger jump — self-teaching, and `<`/`>` are the marks +engraved on those keys (mpv uses them for the same thing). `Ctrl-n`/`Ctrl-p` +stay bound as the terminal's primary chords; the web help documents the pair +that always works. + +**Click-to-seek shipped without absolute seek**, which had been the deferred +item. The click maps the pointer's x within the gauge to a fraction of the +duration and sends `target - position`. Relative is right here even though the +gesture is absolute: the position it subtracts is the one drawn on the bar the +user just aimed at, at most one 250 ms tick old — far under one pixel of the +bar. That staleness is only fatal for a *repeated* key, which is why keys still +send a fixed step and let the server accumulate. The arithmetic is a pure +function in `state.rs`, tested on the native target: clicks behind the playhead +seek back, the edges are exactly the track's ends, a fraction outside `[0, 1]` +is clamped rather than extrapolated, and a duration of 0 declines. + +Also: enabling the web-sys `DomRect` feature, without which +`Element::get_bounding_client_rect` does not exist. Only the wasm build catches +that — `cbd-web`'s `mod app` is `#[cfg(target_arch = "wasm32")]`, so native +clippy never compiles it. Second time this session that the wasm build was the +only gate that would have caught a web-client mistake.