v0.7.0
Minor Changes
-
Structured error contract, schema/migration engine, and a full
abloCLI.- Structured error contract across HTTP + WS planes. A closed, canonical
error-code registry is now the
codetier of a Stripe-style error model. A single HTTP egress funnel converts every throw to a canonical{ type, code, message, doc_url, request_id, ...details }envelope; the WS plane narrows mutation/claim error codes to the same union. - Versioned contract + drift guard.
ERROR_CONTRACT_VERSION(date-based) ships inerrors.jsonand on theAblo-Versionresponse header, so consumers detect contract changes without diffing docs. Generatederrors.mdx/errors.jsonplus a CI drift guard keep the docs, OpenAPI spec, and SDK from silently diverging from the registry. - Always-on request correlation. Every response carries a
req_…request id (honoring an inboundx-request-id), stamped into the envelope’srequest_id. - OpenAPI parity. The stale
{ error, reason }schema is replaced by the canonical envelope plus a generatedErrorCodeenum.
CLI + schema:
- Schema diff + migration planning engine (
generateProvisionPlan/generateMigrationPlanin@abloatai/ablo/schema) — pure diff, classify, apply, and constant-value backfill for required-field migrations. ablo generate— emit TypeScript types from the pushed schema.- Full
abloCLI suite, Stripe-CLI-shaped:init,login/logout/status,mode [test|live],dev(push schema to the test sandbox + watch),logs(tail your scope’s commit activity), and the data-source commands below. Authentication is the OAuth 2.0 device flow;loginprovisions and stores a test and a live key, andmodeswitches the active one. - Database-URL structure (bring-your-own-database). The CLI is split by where
it writes:
ablo pull/ablo check/ablo migrateoperate on your ownDATABASE_URL—pullintrospects it to emitdefineSchema(...)from existing tables (read-only, likeprisma db pull),checkverifies tables fit the schema with no DDL, andmigrateapplies DDL toDATABASE_URL.ablo schema push/ablo devtarget the hosted test/live sandbox; the server diffs, migrates, and activates the uploaded schema.devnever touches live data.
BREAKING — removed the legacy React hooks
useQuery/useOne/useMutate/useReader. UseuseAblo()+ablo.<model>.*instead. TheMutateActions,ReaderActions, andReaderFindOptionstypes are still re-exported for callers that referenced them. - Structured error contract across HTTP + WS planes. A closed, canonical
error-code registry is now the