v0.11.1
Patch Changes
-
7f91f6e: DX hardening from a real onboarding session — onboarding, CLI, coordination, types, and docs.
Client behavior
databaseUrlis now an explicit, server-only option:Ablo(...)no longer auto-readsprocess.env.DATABASE_URL. A strayDATABASE_URL(common — Prisma/Drizzle/docker set it) no longer silently flips the client into connection-string mode; a one-time warning points at the explicit option. PassingdatabaseUrl: process.env.DATABASE_URLexplicitly is unchanged.- Claims/presence are now observable from any client (including Node agents): reading a row enters its entity sync group (read-interest) and claiming pins it (write-intent), so
ablo.<model>.claim.state({ id })reports co-participants without any manual subscribe step — whether the observer arrives before the claim (live delta) or after it (subscribe-time backfill). The claim holder now also sees its own claim viaclaim.state. Requires a coordinatedsync-serverdeploy (the subscribe-time claim backfill + the entity-scope subscription gate that lets an org-authority agent key narrow into a row’s group live server-side); the client package change alone does not deliver cross-client agent observation.
CLI
ablo initdetects thesrc/applayout (routes + the@/abloimport alias resolve correctly), writes the real stored sandbox key into.env.localinstead of a placeholder, and scaffoldsablo/register.ts(a regular module, not a collidingablo.d.ts).ablo <command> --help/-hnow prints usage instead of erroring with “unknown flag”, andmigrateis listed in the top-level help.ablo dev --no-watchnow exits after one push instead of watching forever.
Types
- Name the client with
typeof sync(the value-inferred idiom, like tRPC’stypeof appRouter/ Drizzle’stypeof db) —ReturnType<typeof Ablo>collapses to the untyped client and should not be used. No bespoke client-type generic is needed. model_claim_not_configuredmessage clarified: claiming needs no per-model schema configuration; every model is claimable through the standard client.
Docs
- Reconciled the self-contradictory
databaseUrlstory (it is an explicit, server-only option, not auto-read from the environment; consistent casing), documented that the sandbox can host rows (apiKey only, no database), explained why a localhost Postgres can’t be the system of record, and led the connect-your-database flow withablo pull/ablo checkoverablo migrate. Fixed staleapi.mdvocabulary (object: 'claim',participantKind: 'user' | 'agent' | 'system').
-
7f91f6e: Docs: document the completed
intent→claimrename. Adds a 0.11.0 migration entry (useIntent→useClaim,Register.Intents→Register.Claims,Ablo.Intent.*→Ablo.Claim.*, and the coordinated client/server deploy for theclaim_*wire frames), auseClaimsection in the React reference, and fixes the staleparticipantKindunion to the canonical'user' | 'agent' | 'system'.