[READ-ONLY] Mirror of https://github.com/flo-bit/contrail. atproto backend in a bottle flo-bit.dev/contrail/
0

Configure Feed

Select the types of activity you want to include in your feed.

Version Packages

github-actions[bot] (Jun 7, 2026, 7:58 PM UTC) 2754b1a2 dae0bb3f

+77 -31
-23
.changeset/getrecord-handle-authority.md
··· 1 - --- 2 - "@atmo-dev/contrail-appview": minor 3 - --- 4 - 5 - feat(getRecord): resolve a handle in the URI authority 6 - 7 - `<ns>.<collection>.getRecord` now accepts an AT-URI whose authority is a handle 8 - (e.g. `at://alice.bsky.social/<coll>/<rkey>`), not just a DID. The authority is 9 - resolved through the same `resolveActor` the actor-param endpoints 10 - (`listRecords`/`getProfile`/`getFeed`) already use — local-first via the indexed 11 - `identities` table, network only on a miss — so a handle-routed consumer can 12 - hand the URI straight to `getRecord` instead of resolving handle→DID itself. 13 - 14 - Fully backward compatible: a DID authority resolves to itself unchanged, so 15 - existing DID-URI callers are unaffected. Applies to both the public and 16 - per-space (`?spaceUri=`) paths. `getRecord` stays a fast read — no blocking 17 - backfill is added. Unresolvable authority → 400 (matching `listRecords`), 18 - missing record → 404. Parsing now uses atcute's `parseResourceUri`, which 19 - validates the actor / NSID / record-key shapes, so a syntactically invalid 20 - `uri` returns 400 instead of silently 404ing. 21 - 22 - Internal: the hand-rolled `parseAtUri` (notify) is reimplemented over atcute's 23 - `parseCanonicalResourceUri`; its signature is unchanged.
+30
packages/contrail-appview/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-appview 2 2 3 + ## 0.11.0 4 + 5 + ### Minor Changes 6 + 7 + - 1aeee9a: feat(getRecord): resolve a handle in the URI authority 8 + 9 + `<ns>.<collection>.getRecord` now accepts an AT-URI whose authority is a handle 10 + (e.g. `at://alice.bsky.social/<coll>/<rkey>`), not just a DID. The authority is 11 + resolved through the same `resolveActor` the actor-param endpoints 12 + (`listRecords`/`getProfile`/`getFeed`) already use — local-first via the indexed 13 + `identities` table, network only on a miss — so a handle-routed consumer can 14 + hand the URI straight to `getRecord` instead of resolving handle→DID itself. 15 + 16 + Fully backward compatible: a DID authority resolves to itself unchanged, so 17 + existing DID-URI callers are unaffected. Applies to both the public and 18 + per-space (`?spaceUri=`) paths. `getRecord` stays a fast read — no blocking 19 + backfill is added. Unresolvable authority → 400 (matching `listRecords`), 20 + missing record → 404. Parsing now uses atcute's `parseResourceUri`, which 21 + validates the actor / NSID / record-key shapes, so a syntactically invalid 22 + `uri` returns 400 instead of silently 404ing. 23 + 24 + Internal: the hand-rolled `parseAtUri` (notify) is reimplemented over atcute's 25 + `parseCanonicalResourceUri`; its signature is unchanged. 26 + 27 + ### Patch Changes 28 + 29 + - @atmo-dev/contrail-base@0.11.0 30 + - @atmo-dev/contrail-authority@0.11.0 31 + - @atmo-dev/contrail-record-host@0.11.0 32 + 3 33 ## 0.10.0 4 34 5 35 ### Minor Changes
+1 -1
packages/contrail-appview/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-appview", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Public-records appview for contrail — jetstream ingestion, backfill, query layer, feeds, labels, profiles, per-collection XRPC routes.", 5 5 "type": "module", 6 6 "sideEffects": false,
+6
packages/contrail-authority/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-authority 2 2 3 + ## 0.11.0 4 + 5 + ### Patch Changes 6 + 7 + - @atmo-dev/contrail-base@0.11.0 8 + 3 9 ## 0.10.0 4 10 5 11 ### Patch Changes
+1 -1
packages/contrail-authority/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-authority", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Default space-authority implementation for contrail — member list, invites, app policy, credential issuance. Contrail's binary-membership ACL flavor; for ladder-style access levels see @atmo-dev/contrail-community.", 5 5 "type": "module", 6 6 "sideEffects": false,
+2
packages/contrail-base/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-base 2 2 3 + ## 0.11.0 4 + 3 5 ## 0.10.0 4 6 5 7 ### Minor Changes
+1 -1
packages/contrail-base/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-base", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Shared infrastructure for the contrail family of packages — interfaces (SpaceAuthority, RecordHost, CommunityIntegration), credential primitives, binding resolvers, realtime infra, schema scaffolding. No routes, no tables of its own.", 5 5 "type": "module", 6 6 "sideEffects": false,
+7
packages/contrail-community/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-community 2 2 3 + ## 0.11.0 4 + 5 + ### Patch Changes 6 + 7 + - @atmo-dev/contrail@0.11.0 8 + - @atmo-dev/contrail-base@0.11.0 9 + 3 10 ## 0.10.0 4 11 5 12 ### Patch Changes
+1 -1
packages/contrail-community/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-community", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Community module for contrail — community-owned spaces with tiered access levels (member → moderator → admin), invite tokens, DID provisioning, and the access-level reconciler that keeps spaces_members in sync.", 5 5 "type": "module", 6 6 "sideEffects": false,
+6
packages/contrail-record-host/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-record-host 2 2 3 + ## 0.11.0 4 + 5 + ### Patch Changes 6 + 7 + - @atmo-dev/contrail-base@0.11.0 8 + 3 9 ## 0.10.0 4 10 5 11 ### Patch Changes
+1 -1
packages/contrail-record-host/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-record-host", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Default record-host implementation for contrail — stores records and blobs for permissioned spaces, enforces local enrollment as the host's consent layer.", 5 5 "type": "module", 6 6 "sideEffects": false,
+10
packages/contrail/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail 2 2 3 + ## 0.11.0 4 + 5 + ### Patch Changes 6 + 7 + - Updated dependencies [1aeee9a] 8 + - @atmo-dev/contrail-appview@0.11.0 9 + - @atmo-dev/contrail-base@0.11.0 10 + - @atmo-dev/contrail-authority@0.11.0 11 + - @atmo-dev/contrail-record-host@0.11.0 12 + 3 13 ## 0.10.0 4 14 5 15 ### Patch Changes
+1 -1
packages/contrail/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.", 5 5 "type": "module", 6 6 "sideEffects": false,
+6
packages/lexicons/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-lexicons 2 2 3 + ## 0.4.12 4 + 5 + ### Patch Changes 6 + 7 + - @atmo-dev/contrail@0.11.0 8 + 3 9 ## 0.4.11 4 10 5 11 ### Patch Changes
+1 -1
packages/lexicons/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-lexicons", 3 - "version": "0.4.11", 3 + "version": "0.4.12", 4 4 "description": "Generate atproto lexicon JSON (and optionally TypeScript types via @atcute/lex-cli) from a Contrail config.", 5 5 "type": "module", 6 6 "files": [
+2
packages/sync/CHANGELOG.md
··· 1 1 # @atmo-dev/contrail-sync 2 2 3 + ## 0.11.0 4 + 3 5 ## 0.10.0 4 6 5 7 ## 0.9.1
+1 -1
packages/sync/package.json
··· 1 1 { 2 2 "name": "@atmo-dev/contrail-sync", 3 - "version": "0.10.0", 3 + "version": "0.11.0", 4 4 "description": "Client-side reactive watch-store over contrail's watchRecords endpoints. SSE + WebSocket transports, optimistic updates, optional IndexedDB cache.", 5 5 "type": "module", 6 6 "sideEffects": false,