Skip to content

Releases: techlogist1/flint

Flint v0.1.3

18 Apr 12:15

Choose a tag to compare

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

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

17 Apr 14:30

Choose a tag to compare

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

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

16 Apr 19:24

Choose a tag to compare

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 .dmg after mounting, choose Open, then confirm.
  • Windows: click More infoRun 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

16 Apr 18:15

Choose a tag to compare

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 .dmg after mounting, choose Open, then confirm. Subsequent launches work normally.
  • Windows: click More infoRun 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 coveragesession: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 primitiveflint.prompt({ title, body, accept, decline }) blocks on a centered dialog and resolves with the user's choice.
  • Stats + preset APIflint.stats.today() / range() / heatmap() / lifetime() and flint.presets.{list,save,load,delete} for plugin-authored aggregates and preset packs.
  • Keyboard-drivenCtrl+P opens 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

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.