Skip to content
← Open source

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.

← All projects