• v0.9.0 a73726f325

    v0.9.0 Stable

    eliott released this 2026-10-19 20:36:58 +02:00 | 9 commits to main since this release

    First release of the Android app. Highlights:

    • feat(backup): export to the share sheet, import with preview and resync (sub-project 6c)
    • feat(changelog): what's new sheet, changelog page with offline cache, admin entries (sub-project 6b)
    • feat(account): profile, email, password, two-factor and account deletion (sub-project 6a)
    • feat(gear): settings tab with gear and folders, inline create from pickers (sub-project 5)
    • feat(shoots): shoots and frames, offline
    • feat(ui): pickers, exposure strips and form controls
    • fix(sync): push frame locations without createdAt
    • feat(ui): restyle auth, shell and account on the theme
    • feat(ui): shared components and Lucide icons
    • feat(theme): web palette, fonts and splash screen
    • feat(brand): frame-note app icon and adaptive icon layers
    • fix(sync): keep deletes of pushed creates, follow-up runs, request timeout
    • fix(auth): sign-out control, bounded API sign-out, no stale 2FA token
    • fix(auth): tie the local database to its owner, survive a failed wipe
    • feat(shell): sync indicator, debug screen, sign-out wipe
    • fix(sync): keep pending rows through a resync, settle push results atomically
    • feat(sync): sync engine with push, pull, tombstones and resync
    • feat(sync): typed /sync client
    • fix(sync): expo-crypto ids, outbox send tracking, conditional resolve, orphan pruning
    • feat(sync): clock, outbox with coalescing, entity repositories
    • feat(db): drizzle schema, migrations, database provider
    • feat(auth): login and 2FA screens, route guards
    • fix(auth): sign out instead of failing when the keystore cannot be read
    • feat(auth): Better-Auth client, bearer interceptor, offline session restore
    • feat(shell): environments, router and http providers, tab shell
    Downloads