thehifzproject.com
an app & website to memorize the quran with spaced repetition.
one update flow for everything you ship — go binaries, tauri and electron apps, web apps. checks in the background, asks tells or just does it, never interrupts.
One update flow for everything you ship: Go binaries, Tauri and Electron apps, web apps. Checks in the background. Asks, tells, or just does it. Never interrupts.
Every program gets the same four-word decision and the same behaviour behind it:
| Policy | What happens when a newer release exists |
|---|---|
prompt (default) | Ask. Update now? with Skip and Later. A skipped version is mentioned later, never asked about again. |
notify | Tell. One line or one card, no buttons that change anything. |
auto | Do it. Apply the release without asking; the next start is the new version. |
off | Nothing. |
And the same rules everywhere: the check runs in the background and never blocks the program; nothing is ever applied mid-task; checks are throttled (daily for programs, minutes for web pages) and remembered between runs; a version you said no to stays quiet until a newer one appears; a failed check backs off instead of retrying in a loop; and the program is never broken by its updater.
What differs is how a release is found and applied, and that part is delegated to whatever already does it well:
| Runtime | Package | Finds releases in | Applies them by |
|---|---|---|---|
| Go program | github.com/justin06lee/subaru | GitHub Releases assets | swapping the binary, or go install |
| Web app | @justin06lee/subaru/web | a subaru.json stamp on your own host | reloading |
| Tauri app | @justin06lee/subaru/tauri | latest.json via tauri-plugin-updater | the plugin |
| Electron app | @justin06lee/subaru/electron | GitHub Releases (-darwin-.zip) | swapping the .app bundle |
| Either, from source | @justin06lee/subaru/source | the app's own git checkout | git pull and make update |
Desktop apps have two modes, both of which work for unsigned personal apps: release mode installs a published bundle, source mode rebuilds from the app's own checkout. Neither needs a Developer ID; only keeping macOS permission grants across updates does.
The name is Natsuki Subaru's. His whole thing is coming back after everything went wrong. So is an updater's.
an app & website to memorize the quran with spaced repetition.
a floating name tag for whichever claude code session you're currently…
a visual syntax-theme editor — design a theme in your browser and…



an infinite whiteboard desktop app for pen displays —…