Releases: techlogist1/flint
Flint v0.1.3
Flint v0.1.3 — Bugfix + Stability
Fixes a latent plugin-activation bug that prevented installed builds from running plugins at all, plus cleanup.
What changed
Fixed: Plugin activation in release builds. A CSP misconfiguration since early development silently blocked plugin sandbox execution in all installed binaries (v0.1.0 through v0.1.2). Plugins loaded fine in cargo tauri dev but failed in production installers, causing symptoms like Pomodoro getting stuck at 00:00 without transitioning to break. Resolved by allowing 'unsafe-eval' in CSP, matching the plugin sandbox's existing trust model.
Fixed: StrictMode double-activation. React 18 StrictMode dev-mode double-mount was causing plugin handlers to register twice. Added a reload generation counter to short-circuit stale reloads. Production (no StrictMode) was unaffected.
Fixed: Config file atomic writes. config.rs now uses atomic-write pattern per the storage invariant, preventing corruption if Flint crashes mid-write.
Fixed: Stale UI hint. Timer screen no longer advertises "[enter] mark" since Enter is inert in core as of v0.1.2.
Improved: Release asset filenames. Installers use stable names without version embedded (Flint_x64_en-US.msi instead of Flint_0.1.3_x64_en-US.msi), so README download links stay valid across versions.
Docs corrected. Removed premature claims about plugin-writable custom_metadata and a before:session:stop hook — neither exists in v0.1.3. Both reserved for v0.2.0. Also corrected drift in stats struct shape and render-spec widget list.
Why this matters
v0.1.3 is the first release where plugin activation actually works end-to-end in installed builds. If you tried Flint previously and noticed plugins were broken, this release fixes it.
Downloads
- Windows MSI: Flint_x64_en-US.msi
- Windows NSIS: Flint_x64-setup.exe
- macOS Intel: Flint_x64.dmg
- macOS ARM: Flint_aarch64.dmg
Fresh install recommended — delete ~/.flint/ if upgrading from a broken v0.1.2.
Next up
v0.2.0 ships the real plugin SDK: formal API for session finalization hooks, plugin-writable custom_metadata via flint.session.setMetadata, view:dirty re-render protocol, and a question-timer reference plugin. The question-timer plugin ships as the first real sandbox dogfood test.
Flint v0.1.2 — Sandbox Stability
Flint v0.1.2 — Sandbox Stability
The last Lock In remnant is gone. Flint is now a pure sandbox timer.
What changed
Core becomes neutral. Pressing Enter used to hardcode "question solved" into Flint's core — a remnant from Flint's origin as an open-source port of Lock In. That's removed. Core Flint now has zero concept of "questions," "study sessions," or any domain-specific behavior. Enter is inert unless a plugin subscribes to the new signal:mark hook.
New extension point. signal:mark is the first public surface of Flint's plugin SDK (coming in v0.2.0). Plugins subscribe via flint.on("signal:mark", handler) to receive Enter presses. Install a behavior plugin → Enter does something. Uninstall it → Enter goes inert. The hook that removes behavior from core is the exact hook that re-adds it via plugin.
Historical data preserved. Sessions from v0.1.1 with questions_done values are automatically migrated to custom_metadata["lockin.questions_done"] on first read. Nothing lost.
Stopwatch lap counter moved from core state to plugin-local storage. No user-visible change.
Why this matters
This release establishes the pattern every future behavior plugin inherits: core routes input, plugins define behavior, install/uninstall is symmetric. A forthcoming @flint/plugin-lockin will restore question-counting behavior for anyone who wants it — by subscribing to the exact signal:mark hook this release introduces.
Downloads
- Windows MSI: Flint_0.1.2_x64_en-US.msi
- Windows NSIS: Flint_0.1.2_x64-setup.exe
- macOS Intel: Flint_0.1.2_x64.dmg
- macOS ARM: Flint_0.1.2_aarch64.dmg
Upgrade from v0.1.1: uninstall + reinstall. Windows icon cache is sticky.
Next up
v0.2.0 ships @flint/plugin-sdk as a versioned npm package + plugin dev mode with hot-reload. First real third-party plugin target.
Flint v0.1.1 — Branding fix
Patch release that replaces the default Tauri placeholder icons with proper Flint branding across Windows (.ico), macOS (.icns), and the installer assets — no code changes.
Download
| Platform | File |
|---|---|
| Windows (MSI) | Flint_0.1.1_x64_en-US.msi |
| Windows (EXE) | Flint_0.1.1_x64-setup.exe |
| macOS (Apple Silicon) | Flint_0.1.1_aarch64.dmg |
| macOS (Intel) | Flint_0.1.1_x64.dmg |
First launch
Binaries are unsigned — your OS will warn on first open.
- macOS: right-click the
.dmgafter mounting, choose Open, then confirm. - Windows: click More info → Run anyway in the SmartScreen dialog.
If you installed v0.1.0
Uninstall v0.1.0 first, then install v0.1.1. Windows caches installed-app icons by install path, so a simple overwrite leaves the old Tauri placeholder in the taskbar.
See the v0.1.0 release notes for the full feature set — everything there is unchanged.
Flint v0.1.0 — The Real Sandbox
Strike focus. An open-source, local-first, keyboard-driven, plugin-extensible desktop timer — the Obsidian of timers.
Download
| Platform | File |
|---|---|
| Windows (MSI) | Flint_0.1.0_x64_en-US.msi |
| Windows (EXE) | Flint_0.1.0_x64-setup.exe |
| macOS (Apple Silicon) | Flint_0.1.0_aarch64.dmg |
| macOS (Intel) | Flint_0.1.0_x64.dmg |
First launch
Binaries are unsigned for v0.1.0 — your OS will warn on first open. This is expected.
- macOS: right-click the
.dmgafter mounting, choose Open, then confirm. Subsequent launches work normally. - Windows: click More info → Run anyway in the SmartScreen dialog.
What's in v0.1.0 — The Real Sandbox
v0.1.0 is Flint's plugin primitives release. Everything above the Rust engine is authored through declarative APIs:
- Plugin-driven intervals — plugins push interval directives via
setFirstInterval/setNextInterval; the engine consumes them. Pomodoro drives its own focus / break math this way. New timer modes ship as plugins. - Declarative render spec — plugins describe UI as JSON (
container,text,stat-row,bar-chart,line-chart,heatmap,table,button). No DOM access, no JSX. - Complete before-hook coverage —
session:start,session:pause,session:resume,session:stop,session:cancel,question:mark,interval:next,preset:load,command:execute,notification:show,tag:add,tag:remove. Any handler can veto or mutate. - Interactive prompt primitive —
flint.prompt({ title, body, accept, decline })blocks on a centered dialog and resolves with the user's choice. - Stats + preset API —
flint.stats.today() / range() / heatmap() / lifetime()andflint.presets.{list,save,load,delete}for plugin-authored aggregates and preset packs. - Keyboard-driven —
Ctrl+Popens the command palette. Every action is searchable. - Local-first — session JSON under
~/.flint/is the source of truth. No cloud, no account, no telemetry. - 5 built-in plugins — Pomodoro, Stopwatch, Countdown, Session Log, Stats.
Get involved
- Plugin API reference: CLAUDE.md
- Contributing: CONTRIBUTING.md
- Bug reports & feature requests: Issues
Known limitations
- Binaries are unsigned (no Apple notarization or Windows code signing yet).
- Linux builds are not included in v0.1.0 — coming in a future release.
- No plugin marketplace yet; install community plugins by dropping folders into
~/.flint/plugins/.
Built with Tauri, Rust, React, TypeScript. Entirely developed through Claude Code.