A stopwatch and a countdown timer for stream sessions, in one window big enough to read across the room.
Standalone Tauri v2 + React app — also vendored into
StreamerSuite as one of its
launcher tools (see StreamerSuite's VENDORING.md).
- Stopwatch mode — counts up in
hh:mm:ssfrom the moment you start it, with pause and reset. Quick markers for 30m, 1h, 2h, 3h, and 4h tick over as you pass them, so you can see how long you've actually been live at a glance. - Countdown mode — set anything from 1 to 480 minutes for a break, an intermission, or a subathon segment. A progress bar drains alongside the digits, the display turns amber under the last five minutes, and red when it hits zero. Pause and resume without losing your place.
- Publishes the running value as a
timerkey for overlays to bind to, so a browser-source overlay can show the same clock your viewers need to see.
- Node.js 20 or newer and the Rust toolchain, plus your platform's Tauri v2 system dependencies.
Developed and tested on Windows 10/11. macOS and Linux builds should work — Tauri supports both — but aren't regularly exercised.
npm install
npm run tauri devnpm run tauri build produces a release build.
| Path | What's in it |
|---|---|
src/App.tsx |
The whole app — both timer modes, their controls, and the overlay data publish |
src/design-system/ |
Shared UI kit, vendored from StreamerSuite (see below) |
src-tauri/ |
Tauri shell. This app has no Rust logic of its own |
Hard rule: main is the standalone product and the only branch anyone builds or ships from — the StreamerSuite integration must never be merged into or otherwise land on main.
main— the standalone app. Build and run it independently, as above.streamersuite-integration— the StreamerSuite-adapted version (shared theme/settings, and shared backend where applicable). Not independently buildable; it's the staging copy for what's vendored into StreamerSuite'ssrc/apps/stream-timer/.
src/design-system/ is vendored from StreamerSuite's own
src/design-system/ (the shared UI kit used by StreamerSuite's
launcher-native tools). Keep it in sync manually when StreamerSuite's design
system changes.
- Overlay binding only works in StreamerSuite. The timer publishes its
value by calling the
overlay_publish_datacommand, which is provided by StreamerSuite's (and Overlay Editor's) Rust backend. This standalone build has no such backend, so the call is a no-op here — the timer works, but nothing downstream receives the value. Run it inside StreamerSuite, or alongside Overlay Editor, if you want an overlay bound to it. - Timers don't survive a restart — closing the window loses the elapsed count.
- Countdown reaching zero changes the display but doesn't play a sound or fire a notification.