All releases
patch6 changes

v3.0.1 Desktop v0.1.1 — Calendar Ingest Works for Everyone

Fixes the Calendar card that was returning 0/0/0 for users who couldn’t grant Full Disk Access. Adds a .ics-export picker that bypasses macOS TCC entirely, clarifies the Scan→Sync two-step, and stops the Documents scanner from misreporting "500 files" as the matched count.

New

(2)
  • Calendar card now offers two paths: "Choose .ics export…" (reliable — just export from Calendar.app) and "Try auto-scan" (fast, needs Full Disk Access). The export path parses bulk VEVENT files with 10k+ events in one shot, same logic as the terminal import script.
  • Desktop v0.1.1 DMG (Apple Silicon + Intel) — download from jetwork.ai/download or GitHub Releases.

Improved

(1)
  • Source cards relabelled "Step 1 of 2 — Found X…" + "Step 2 of 2 — Syncing…" so the Scan vs Sync distinction is unmistakable. The cloud-sync button now reads "Sync 10,342 events to cloud →" with the actual count. (Addresses the "green button stayed green, had to click Sync again" confusion.)

Fixed

(3)
  • canAccessCalendar() now actually probes the first calendar folder with readdirSync — the previous dir-level fs.accessSync(R_OK) check silently passed even when macOS TCC was blocking every real read underneath, leaving users stuck on "Full Disk Access not granted" forever.
  • Documents & Downloads scan no longer says "Found 500 useful files". Now reports "Matched X contact/event files (of N scanned)" with the real totals, and the cap was raised 500→10,000 after dropping the speculative PDF match.
  • Contacts scan no longer crashes on legacy NULL-address rows with "TypeError: l.trim is not a function". Guarded every .trim() behind a typeof string check.

Stay in the loop

Get notified when we ship new features.