feat!: Spaces spaceType rename and 2026-10-01 alpha pins #217
No reviewers
Labels
No labels
breaking-change
bug
documentation
duplicate
enhancement
good first issue
help wanted
performance
question
wontfix
No milestone
No project
No assignees
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/ATProto.NET!217
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-211-spaces-rename"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #211.
The cheap breaking half of the Spaces 2026-10-01 alpha:
spaceType.typebecomesspaceTypeoncom.atproto.simplespace.createSpace(CreateSimpleSpaceRequest.SpaceType, and thespaceTypeparameter ofCreateSpaceAsync/ListSpacesAsync) and on thecreateSpaceendpoint (upstream #5561). A body missingspaceTypeis refused (new test).space-ref. The Lexicon generator maps thespace-refstring format toSpaceUriand back, with tests. Nothing else in the SDK validates string formats.679724ad, alpha branch head79d6307e, proposal0c9c2e88. Thepds-spaces-alphaimage is pinned tosha256:1cf9349e…f150(OCI revision79d6307e) and npm to0.0.0-spaces-alpha-20261001173819.CHANGELOG
Migration:bullet, adocs/migrating-to-0.8.mdentry andPublicAPIremovals are included. Build has 0 warnings; 5004 unit tests pass.#212 (HTTP Message Signatures) is stacked on this branch.
🤖 Generated with Claude Code
🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
✅ Verdict: approve — no blocking issues found.
The
type→spaceTyperename is applied consistently across the request model, theSimpleSpaceClientandSpaceClientparameters, the server endpoint, tests, docs and the sample. The newspace-refmapping in the generator is bidirectional, andNeedsSdkSpacesis set in both emit paths. I found nothing else on the server side that still reads atypefield for spaces.The PublicAPI changes, the CHANGELOG entries (a
Migration:line, and a note under Added) and the 0.8 migration guide entry are all present.Minor points, none blocking:
IsSpacesTypeusesContains("SpaceUri"), which would also match a type name that merely contains that string. That is harmless with the current closed type map.PublicAPI.Unshipped.txtdiff reorders unrelated lines from earlier PRs. This is probably just a file re-sort and it is fine.🧠 claude-sonnet-5-5 · ⏱ 0m 8s · 3 turns · tokens: 36.5k in / 670 out (+60.2k cache-read)
📜 Full session transcript
✅ Verdict: approve — no blocking issues found.
Good to merge. The rename is complete and consistent everywhere it needs to be; I verified the two upstream-facing claims independently:
permissioned-data-alphalexicons (fetched) showspaceType(required, nsid format) incom.atproto.simplespace.createSpaceand as thecom.atproto.space.listSpacesquery parameter — the SDK now sends exactly that ([JsonPropertyName("spaceType")],.Add("spaceType", …)). The server-side host readsinput.SpaceTypewith the"spaceType"name and refuses a missing or JSON-null field withInvalidRequest; the extended test theory pins that.space-ref. Upstream uses"type": "string", "format": "space-ref"(e.g. thecreateSpaceoutput andspaceView.uri), and the SDK already models those fields asSpaceUri. The lexgen mapping in both directions, withNeedsSdkSpacesemittingusing ATProtoNet.Spaces;, is tested for flat properties, arrays, and the emitter round-trip.Docs, CHANGELOG bullets, migration guide, and PublicAPI removals are all present and follow the repo conventions (the
csharp beforefence matchesmigrating-to-0.7.mdstyle). Theis the 2026-10-01 alphadoc table and npm pin are internally consistent (digest is a full 64-hex value; npm version matches across both places it appears).One minor note, no action required:
TypeMapper.IsSpacesTypeusesContains("SpaceUri")rather than the exact-membership check style ofIsIdentityType. It can only over-match a coincidental generated type name, whose sole cost is an extra using directive, so it's fine as-is — just slightly different in kind from its sibling predicate.⏱ 2m 20s · 28 steps · $0.0398 · tokens: 94.2k in / 1.6k out (+756.3k cache-read) · Go: 5h 2% · wk 2% · mo 91%
📜 Full session transcript