Repository navigation
v0.1.39-alpha
Pre-releasev0.1.39-alpha — outbound discovery and sweep worker
Phase 2, tasks 3 and 4. Still INERT: isOutboundCalendar requires
isReadOnly === false and nothing is unlocked, so the sweep finds nothing and
no edit reaches Google. Task 5 is what turns it on.
What DOES change for a household in this release: Basis now refuses to edit
or delete a single occurrence of a repeating event on a calendar synced with
an external provider, and says why.
That refusal is the point. Deleting one occurrence adds an EXDATE to the
master row rather than creating an exception row, so it would have reached
the outbound path looking like an ordinary master edit — and pushing it
would have replaced Google's whole recurrence array, wiping exclusions it
held, then marked the row clean. The occurrence would have vanished in Basis,
stayed on every device reading Google, and previously-deleted occurrences
there would have come back, silently and permanently.
The spec always deferred per-occurrence editing of a synced series to v2.
What nobody had noticed is that EXDATE-on-master IS per-occurrence editing.
Refusing at the point of action is that decision, honestly applied: better to
tell a household what Basis cannot do than to accept an edit it cannot deliver.
Also fixed: all-day events converted correctly at the Google boundary in both
the create and update paths (Basis stores an inclusive end, Google's end.date
is exclusive), and an edit-form path that grew a synced all-day event by a day
on resave.
Local, unsynced calendars are untouched — every single-occurrence path still
behaves exactly as before.
Install
curl -fL https://github.com/Springdale-Robotics/basis/releases/download/v0.1.39-alpha/basis-0.1.39-alpha.tar.gz | tar -xz
sudo bash basis-0.1.39-alpha/backend/deploy/native/install.sh --source basis-0.1.39-alphaBasis installs natively (Node/Postgres/Redis + systemd); there
is no Docker image. Local development still uses Docker for
Postgres/Redis/Ollama via backend/docker-compose.dev.yml.