Skip to content

1.0.2

Latest

Choose a tag to compare

@claude claude released this 20 Jun 15:55

What's Changed

Bug Fixes

  • Prevent frontmatter edits from overwriting structured remote fields (#108)
    • Introduces isPushable to the FieldTypeMapper interface, stricter than !isReadOnly, to exclude object-shaped fields (Airtable barcode/collaborators, SeaTable collaborator/geolocation, Supabase json/jsonb) from push payloads
    • Fixes a data-loss bug where a jsonb column with an empty frontmatter placeholder was overwritten with null on push
    • Fail-closed for unknown types — unrecognized field types are treated as not pushable

Performance

  • Cache verification result on credential form to skip redundant verifySetup probe on Save (#112)
    • A successful connection test sets a 60-second freshness fingerprint, allowing the next Save to skip the verifySetup network probe
    • Fingerprint is invalidated on any field edit, probe failure, or needsSetup — a changed or bad credential can never ride a stale "verified" result past the save gate
    • Primarily affects Supabase (the only provider that implements verifySetup)

Refactoring

  • Unify exhaustiveness guards behind a shared assertNever helper (#113)
    • Adds src/utils/assertNever — enforces switch/if exhaustiveness at compile time (missing cases after union extension fail to compile) and throws at runtime
    • Routes all five throwing exhaustiveness guards (sync mode/scope, conflict mode, setup-requirement kind, credential type) through the helper
    • Upgrades migration.ts's guard to a real satisfies never check that catches missing cases at compile time

Testing

  • Add cross-provider FieldTypeMapper parity contract tests (#111)
    • Registry-driven test suite that validates all registered mappers satisfy shared invariants: filenameSafe ⊆ subfolderSafe, no subfolder-safe type maps to attachment/link/unknown, and prototype-chain names fail closed
    • Automatically covers future providers the moment they register a mapper
    • Sorts FILENAME_SAFE_TYPES in Airtable and SeaTable mappers for deterministic test output

Maintenance

  • Bump CI artifact and attest actions to Node 24 runtimes (#106)
    • actions/upload-artifact v4.6.2 → v7.0.1 (Node 24)
    • actions/download-artifact v4.3.0 → v8.0.1 (Node 24)
    • actions/attest-build-provenance v2.4.0 → v4.1.0 (Node 24)
    • Preemptive update ahead of GitHub's Node 20 runner removal on 2026-09-16
  • Upgrade TypeScript 4.7.4 → 5.9.3 and @typescript-eslint v5 → v8 (#109)
    • Updates ESLint toolchain to @typescript-eslint v8 (ESLint 8 retained, no config churn)
    • Replaces const _exhaustive: never workaround with idiomatic satisfies never (TS 4.9+)
    • No runtime changes — compiler-only upgrade, emitted JS is identical