v0.18.0
Minor Changes
-
Client observability —
debug/logLevel, off by default. The SDK used to emit adebugline per model and per property during schema registration (a firehose). It now defaults to a quietwarnthreshold and exposes two newAblo()options to opt back in:logLevel: 'debug' | 'info' | 'warn' | 'error' | 'silent'—'info'surfaces coordination and connection events without the per-model registration noise;'debug'is everything. Precedence: explicitlogLevel→debug: true→ABLO_LOG_LEVELenv → defaultwarn. Supplying your ownloggerbypasses both.debug: boolean— shorthand forlogLevel: 'debug'.
Coordination is now traceable at
info: claims that are rejected or lost (preempted/expired), and your position advancing in a claim queue, each log once per change with a readable target (documents:abc.title) — quiet lowercase lines, no shouty tags.New: canonical wire-egress contract export.
errorEnvelope,statusForType, and theErrorEnvelopetype are now exported from the package root. Server consumers (e.g. a self-hosted sync server) can assert against the one source of truth for the error-envelope shape and theAbloError-subclass→HTTP-status table instead of keeping a copy that silently drifts.Structured CLI error rendering. CLI failures render as a titled block with a reason code and per-code remediation (
--verbosefor the stack) instead of a console wall-of-text;AbloError.toString()produces a leak-proof one-liner.ABLO_API_KEYresolution + sandbox key scopes. The key is now resolved from.env.local/.env(not just the process env), and sandbox keys are grantedschema:pushby default soablo pushworks out of the box in a fresh sandbox.