A focused, forward‑counting timer for Windows — rebuilt on Sprout with Fluent Design.
English · 简体中文
Working Timer is the Sprout‑based successor to the archived Work‑Timer. It keeps the original count‑up workflow and Microsoft Store identity, and replaces the old UWP UI and custom style layer with a fully self‑drawn Fluent shell — every control, the timer type, the flyouts and the compact overlay are painted by Sprout on Direct2D / DirectComposition and shipped as a single NativeAOT binary.
This repository (
Richasy/Rodel.Timer) is the codebase; Working Timer is the product name shown in the app and on the Store.
Working Timer is free on the Microsoft Store — the recommended way to install it and get automatic updates (x64 and Arm64, Windows 10 19041+):
Store listing: https://apps.microsoft.com/detail/9N71W9G714RK
- ⏱️ Count‑up timing — deterministic and monotonic, with no pause state; time only moves forward.
- 🗂️ Folders & history — group sessions into folders and browse a per‑folder history, right from the title bar.
- 🎯 Daily target — set a daily focus goal in minutes and watch Today's focus climb toward it.
- 🎨 Themes & materials — System / Light / Dark, and five window canvases (Mica, Mica Alt, Acrylic, Acrylic Thin, Liquid Glass Wallpaper).
- 🔤 Fonts — pick any installed font for the whole app.
- 🌐 Live localization — English and Chinese (Simplified & Traditional), switched instantly with no restart.
- 🪟 Compact overlay — collapse to a small, always‑on‑top timer while you work.
- ♿ Accessible by design — stable UI Automation ids, accessible names and descriptions, keyboard access keys, and transactional screen‑reader announcements.
- 🔒 Safe upgrade — a one‑time, fail‑safe import of your existing Work‑Timer folders, history and settings.
Working Timer is a showcase app for Sprout, an experimental self‑drawn, compile‑time‑reconciled, GPU‑rendered Windows UI framework. The code is split into UI‑independent layers:
src/
Rodel.Timer/ Sprout app shell, Fluent UI, MSIX identity, Windows legacy‑data adapter
Rodel.Timer.Core/ UI‑independent domain: timing, folders, history, persistence, migration
Rodel.Timer.Presentation/ Reactive application state and UI‑independent presentation policy
tests/
Rodel.Timer.Core.Tests/
Rodel.Timer.Tests/
Rodel.Timer.Coreowns the domain — monotonic timing, the folder/history model with explicit invariants, NativeAOT‑safe versioned JSON written with atomic replacement, and the legacy importer.Rodel.Timer.Presentationholds reactive UI state, independent of any specific control.Rodel.Timeris the Sprout shell — the responsive Fluent surface, the title‑bar Folders/History flyouts, the open‑canvas workspace, the compact overlay, and the Windows/MSIX glue.
⚠️ Not yet buildable outside Richasy. Working Timer depends on Sprout, which is still in private development with no publicly released packages.NuGet.configresolves theSprout*packages from a local pack feed (..\Sprout\artifacts\local-feed) that requires the not‑yet‑public Sprout repository, sodotnet restorewill fail for external developers. Public build steps will follow once Sprout ships to nuget.org.Just want to use the app? Install it free from the Microsoft Store — no build required.
For reference, once the Sprout packages are available the app builds with the .NET 10 SDK on Windows 10 (19041)+
(the Sprout versions are pinned in Directory.Packages.props):
dotnet build Rodel.Timer.slnx
dotnet test Rodel.Timer.slnx
dotnet publish src\Rodel.Timer\Rodel.Timer.csproj -c Release -r win-x64dotnet publish emits the NativeAOT executable and a signed MSIX package under
artifacts/bin/Rodel.Timer/Release/.../publish.
Working Timer is open source under the MIT License.
- Built on Sprout — the self‑drawn Windows UI framework.
- Succeeds Work‑Timer — the original UWP application.





