• v1.1.1 8974ece2af

    v1.1.1 Stable

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

    Changes since v0.6.1:

    • fix(openapi): mark nullable request fields and reject null on NOT NULL ones
    • feat(openapi): commit openapi.json, generated by pnpm openapi:generate
    • feat(openapi): describe every response with the swagger plugin and DTOs
    • fix(email): point the plain-text part at the link, not a button
    • perf(changelog): page on published_at itself and cap What's new at 50
    • feat(db): migration 0029 - NOT NULL timestamps and flags, filter range 0..10
    • perf(import): parse, validate and plan archives in a worker thread
    • fix(errors): log the stack trace of unhandled 500s
    • feat(api): answer writes with the full entity and DELETE with 204
    • fix(frame-location): replace the whole location on POST and pair coordinates on PATCH
    • fix(import): renumber frames per shoot and reject duplicate locations
    • fix(changelog): show backdated entries in What's new
    • fix(validation): close input gaps that surfaced as 500s
    • fix(auth): notify the old address on email change and harden auth config
    • fix(db): trim legacy names before building the lower(name) indexes
    • fix(export): build the archive in a temp file before streaming it
    • fix(sync): server-owned syncedAt cursor, shoot locks on pushed frame writes, retry status, clock clamp, 1 mb bodies, resyncBefore
    • feat(sync): convergence test, protocol docs, bump to 0.11.0
    • feat(sync): batch push with last-write-wins, renumbering and tombstones
    • feat(sync): status, keyset pull and tombstone endpoints
    • feat(sync): tombstones on every delete path, reset on data wipe, updatedAt on renumber
    • feat(sync): last-write-wins and keyset rules
    • feat(db): updatedAt on every synced table, sync_tombstone and sync_reset tables
    • feat(auth): trust the native app scheme via the Better-Auth Expo plugin
    • feat: password reset, email change, per-owner names and full audit pass
    • fix(iso): allow fractional ISO values below 1
    • feat(shoot): add DELETE /shoot/:id/frames to clear all frames
    • feat(changelog): add v0.7.3 entry for the brand refresh
    • feat(email): brand verification and 2FA emails with shared layout
    • perf(export): derive counts from streamed rows, drop pre-count pass
    • perf(frame): skip full-shoot renumber when delete leaves it gapless
    • perf(import): batch row inserts instead of one query per row
    • fix: construct the pg Pool explicitly so the pg dependency is imported
    • feat(import): guard against zip bombs and cap request body size
    • fix(auth): wipe user-owned content before Better-Auth deletes the user (#51)
    • feat(frame): duplicate a frame via POST /:id/duplicate (#46) (#47)
    • feat(frame)!: replace shutter_speed entity with seconds + bulb columns (#40) (#41)
    • fix(filter): only log truly unhandled exceptions, not handled HttpExceptions
    • fix: pin pnpm in Dockerfile (#37)
    Downloads