Repository navigation
Keyboard shortcuts, live tab title, bounded dependencies, and belt-sequence hardening (ROADMAP 2.6, 3.3, 3.13) - #24
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <[email protected]>
…s (ROADMAP 2.6, 3.3, 3.13) Co-Authored-By: Claude Opus 5.5 <[email protected]>
…screen shortcut help (ROADMAP 3.3) Co-Authored-By: Claude Opus 5.5 <[email protected]>
…, 3.13, 3.18) Shortcuts: - Derive tooltips and the ? list in JS from aria-keyshortcuts; hotkey() now emits only that attribute - Track keyboard vs mouse focus via capture-phase keydown/pointerdown instead of :focus-visible, so Space presses a keyboard-focused control but not one focused by a mouse click or script - Restore focus when the ? list closes (WCAG 2.4.3); block keys while any modal is opening; only block for the phone menu while it's visible - Create the help modal lazily so shortcuts survive a Bootstrap CDN failure Belt sequences: - Set belt_transitioning in the start/pause/resume/end routes, guarded by a generation counter so only the newest sequence can clear it; reset it when a new BLE loop starts - Register sequences and speed changes before cancelling their predecessor, so they can't run concurrently or escape a disconnect - _cancel_task: let the caller's own cancellation propagate, and cancel tasks from another event loop on that loop - End Session stops the belt when it cancels an unfinished sequence - Ignore speed changes while a belt sequence is in flight, checked and queued under the session lock - Round, not truncate, km/h to device units (3.8 + 0.6 set 4.3) Pages: - Render buttons disabled while transitioning, re-enabling after 15 s if no stats update arrives; reload on back/forward-cache restore - Single tab-title format, reset by the shutdown overlay, which also stops stats handling (connecting page included) Docs: CHANGELOG, ROADMAP 2.6/3.3/3.13/3.18, new 1.8 (C2 behavior after the physical remote, dropped back-to-back commands, app_speed target). Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ROADMAP 3.3, 3.13) - Pause and End sequences cancel a queued speed change before stop_belt, so a step can't reach a stopped belt; correct the misleading comment - _handle_disconnect: suppress RuntimeError from task.cancel() on a closed loop, so a stale task can't abort reconnect scheduling - _cancel_task: log an error a task raised while being cancelled - Settings hint uses parentheses instead of " -- " - Tab title only reassigned when it changes Co-Authored-By: Claude Opus 5.5 <[email protected]>
Opt-in check of the pad's firmware against KingSmith's latest, and an over-the-air update replicating KS Fit, with no firmware bundled. Starts with a spike decompiling KS Fit 6.6.0 to find the version endpoint, image format, and update procedure; the update is built only if that procedure proves safe. Also notes the C2's firmware (6.1.2, software 6.3.0) in 1.8. Co-Authored-By: Claude Opus 5.5 <[email protected]>
On Python 3.10, asyncio.wait_for returns normally when a cancel lands as the lock is handed over, so asserting the step was cancelled failed there (3.12+ raises). Model the actual hazard instead: a step waiting on its predecessor outside the lock while Pause/End takes it. Passes on 3.10 and 3.12; fails on both without the cancel. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Desktop quick wins from the roadmap, plus fixes for race conditions that keyboard use made easier to hit, found in several rounds of review.
Features
Spacepause/resume,↑/Wand↓/Sspeed,L/K/Mpresets,?for a per-screen list. Start and End Session have no key, so a stray press can't start an unattended belt or end a walk. Toggle in Settings (keyboard_shortcuts_enabled, default on), as WCAG 2.1.4 requires.Spaceon a keyboard-focused button keeps its normal meaning, tracked by input type rather than:focus-visibleso behavior matches across Safari, Chrome, and Firefox.aria-keyshortcutsis the single source for the tooltips and the?list. Shortcuts work without Bootstrap, and closing the?list restores focus.3.2 mph · 1.40 mi - WalkingDadwhile walking.markupsafe, is pinned at its tested version and capped below the next major.Fixes
belt_transitioningbefore scheduling, guarded by a generation counter so only the newest sequence clears it, and reset when a new BLE loop starts. Pages render with buttons disabled, re-enable them after 15 s if no stats update arrives, and reload on a back/forward-cache restore.stop_belt. Speed changes are ignored while a belt sequence is in flight, and checked and queued under the session lock.round()instead ofint(), which set e.g. 3.8 + 0.6 to 4.3._cancel_tasklets the caller's own cancellation propagate, cancels tasks from another event loop on that loop, and logs errors raised during cancellation._handle_disconnectsurvives tasks on a closed loop.Docs
[Unreleased], README (features, config table), and ROADMAP 2.6, 3.3, 3.13 and 3.18.app_speedbyte carries the target speed (km/h × 10).AGENTS.md: follow common UI conventions and WCAG 2.2 AA where practical.Testing
Follow-ups
bugfix/branch.🤖 Generated with Claude Code