Cyclemetry
Contributions to a desktop app that turns GPS ride data into video overlays: Svelte 5 reactivity fixes, a calories metric and timeline trimming.
- Role
- Contributor
- When
- October 2026
- Stack
- Rust, Tauri, Svelte, TypeScript
Context
Cyclemetry is a desktop application that reads a ride recorded by a GPS bike computer and renders telemetry overlays (speed, power, heart rate, a map of the route) on top of a video. It is built with Tauri: a Rust core that parses activity files and renders frames, and a Svelte frontend for editing the overlay layout.
This is where two of my interests meet: cycling and working with data.
What I contributed
Svelte 5 reactivity fixes (#54, merged). After the move to Svelte 5 runes, a few components produced compiler warnings and one of them could throw at runtime by reassigning a derived value. I rewrote the opacity control so its text input stays in sync with external updates, replaced an unnecessary two way binding with a controlled input, and added captions to the background video element for accessibility.
Calories metric (#55, open). Adds a calories channel to the Rust activity model and a total_calories summary, and exposes both in the overlay properties panel. This covers part of a feature request from the project's issue tracker.
Template hardening (#53, open). Makes template deserialization in the render core more tolerant of numeric values and isolates scene inheritance so one scene cannot change another by accident.
Editor improvements (#56 and #57, open). Trim brackets on the playback timeline, and a cleanup of the properties shown for map elements so the panel only lists controls that apply to them.
Status
One pull request is merged and four are waiting for review. Each one is kept to a single topic so it can be reviewed and merged on its own.
Pull requests
1 merged, 4 open, 0 closed. Status synced from GitHub.
- openfeat(app): add overlay trim brackets to bottom playback timelineOct 13, 2026
- openfeat(telemetry): add calories metric and total_calories summary across activity and UIOct 13, 2026
- mergedfix(app): resolve Svelte 5 runes reactivity warnings and video a11y captionsOct 13, 2026
- openfix(render-core): harden template deserialization for floats and isolate scene inheritanceOct 13, 2026
- openrefactor(app): audit element properties and strip irrelevant controls on map elementsOct 13, 2026