v0.48.0
A branch is unbound until you connect a database to it
A branch keeps its own storage, and it does not quietly get Ablo’s. Until a
database is connected to that branch, a request needing one fails with
no_data_source_registered and says what to do:
This branch is not connected to your database yet.
Run `ablo connect` for this branch, then retry.
The old test_database_not_registered is gone. It described a sandbox that no
longer exists, it arrived on requests that had nothing to do with a test
database, and its advice pointed at options the SDK had already removed. A
branch created by ablo dev now reports its state plainly rather than looking
ready and then refusing the first schema push.
Action required. Replace any handler matching test_database_not_registered
with no_data_source_registered. The new code carries the same 4xx meaning and
a recovery path a caller can act on.
Failures say which branch they happened on
An unconnected branch previously returned its refusal with nothing written server-side, so a support question about one customer’s branch could not be answered from logs at all. These now carry the request, organization, project, branch, key kind and storage state, indexed in Sentry, so a failure can be looked up by branch instead of reconstructed from database tables.
Replication uses your branch’s own publication and slot
Registration, validation, writer checks, replication, drift detection and
ablo connect all require the branch-scoped names recorded when the source was
registered. Nothing falls back to a shared ablo_publication or ablo_slot
any more, so two branches on one database can never quietly share a stream.
ablo connect scan reports legacy unsuffixed objects as retired.
Once your engine is on this release and ablo connect check is clean, the
temporary alias can go:
DROP PUBLICATION IF EXISTS "ablo_publication";
ablo dev --local connects a branch to the database on your machine
The rule above raises a fair question: if a branch is unbound until a database
is connected, what connects one during development? --local does.
npx ablo dev --local
It registers a connector-only endpoint for that exact branch and opens a
long-lived secure connector. Your database stays where it is: Ablo receives an
endpoint descriptor and a signing key, never a connection string, and reaches
your source back through the connector rather than dialling it. DATABASE_URL
is read from .env.local into the handler running on your machine and goes no
further.
The branch is then connected like any other, so schema pushes, reads and writes
behave the way they will in production. Because the connector is long-lived,
--local cannot be combined with --no-watch.
Renamed
FootprintPlane is now DataSourceIdentity, with the same three fields. The
old name described an internal layout; the new one describes what it
identifies.