chore: release v0.7.0 #192
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!192
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-140-release"
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 #140.
Release preparation for v0.7.0. No tag is created or pushed here: tagging
v0.7.0publishes the packages, so the maintainer does it after this merges (checklist at the end).Changelog condensed into release register
## [Unreleased]had grown PR by PR to 455 bullets, with overlaps and intermediate states. It is now## [0.7.0] - 2026-09-28with 366 bullets, under a fresh, empty## [Unreleased], as the 0.6.0 release did (7f672c0). The file has no compare links, and## [0.6.0]and older are byte-identical (the splice script asserts it).src/tag/v0.7.0/docs/migrating-to-0.7.md), because the section also becomes the Forgejo release body, where a relative link would not resolve.com.atproto/client,app.bsky, chat/Ozone/site.standard, Spaces, firehose/Jetstream, datetime, lexgen).Verification scripts (in the session scratchpad;
verify.pyoutput reproduced here)#110–#141,#180,#187,#190).#108is added to the four sync-workflow Security items, which had no ref; it is the PR that fixed them. The upstreamatproto#4896mention is kept too.Migration:note and the old refs.CursorStreamConsumerOptionsmove) is an intermediate step, merged into the kept #126 streaming bullet.Migration:. Four more breaking notes live in Removed (Redis store, resilience handler) and Security (login error codes, space-tokenkid), each with a Migration note.docs/migrating-to-0.7.mdby keyword.AtProtoClient.LoginAsync/ServerClient.CreateSessionAsyncgainedallowTakendownbefore the cancellation token, which breaks a positional token. It was listed only under Added. It is now in the guide's "New Lexicon parameters shift positional arguments" and in the changelog's matching Breaking bullet.Folded: API that never shipped in 0.6.0
Each item below was checked against the
7f672c0tree.DistributedCacheOAuthStateStorerequires protected options: the type is new in #132.AtProtoServiceAuthOptions.Verifierand the removal ofRequireLexiconMethod: both new in #125, changed in #180.MapTapWebhookkeeps only its delegate overload: Tap is new in #134.AtProtoClaimTypes":AtProtoServiceAuthDefaultsis new in #125, and 0.6 had no claim constants.Tools.Ozone.Report.LiveStats→QueueStats: new in #131.Enumerate*trimmed to 13": every helper removed was added this cycle, and all 7 enumerators 0.6 had remain.WithSessionStore(factory)removal;AtProtoOAuthServerOptions.AllowPrivateNetworks(0.6 hadHttpClient,HttpClientTimeoutandHandleResolutionTimeout, and those stay listed);IsIssuedRelayUrl;OAuthOptions.MetadataHttpClient("renamedHttpClient": the 0.6 constructor took theHttpClientitself);AuthorizationServerDiscoveryconstructor/IDisposablechanges (the type is now internal);AddAtProtoRedisSpaceReplayStore"registers against the new interface" (it was removed);SpaceServerOptions.BuildRequestUrimigration target (also removed);AtProtoOAuthServiceconstructor changes of #120/#132/#136 (it is now internal: one bullet, #120/#132/#136/#180);IsRepoHostAsyncconcurrency item under Changed and theAtProtoAuthenticationHandlerempty-didfix (both APIs are gone);#sync-CID-checked-with-Verifieritem (the option is gone);did:webcase-insensitive-host "fix" from #120, which #125 reversed (a Security item).Unknown*primary constructors. Their public API and wire format are unchanged.Known inaccuracies fixed
AddAtProtoEfCoreSessionStore. The 0.6 name wasAddAtProtoEfCoreTokenStore(checked at7f672c0), and the #124 bullet no longer mentions the intermediate name.new FirehoseConsumer(…): onmain, the #122 bullet already readnew TypedFirehoseConsumer(…). It stays correct.FirehoseConsumerappears only in its removal.[RequiresTheory]: there was no mention left in the old section, and none is in the new one.ISessionStore,IAtProtoTokenStore→IAtProtoSessionStore).(#119, #141).Migration guide
The guide gets two small fixes:
allowTakendownline (above).#syncevents are CID-checked whenever aVerifieris set" is dropped, becauseTypedFirehoseConsumerOptions.Verifierno longer exists.Nothing else changed. Optional follow-up: the guide still describes some never-shipped intermediate API, which is harmless but not needed by 0.6 users: the
LiveStatsbullet, theDistributedCacheOAuthStateStoreoptions requirement, the "Tap webhooks" subsection (already framed as a preview), and the lexgen "migrate messages removed" bullet.Release roll
Directory.Build.props:<Version>0.7.0</Version>.release.ymlextraction is simulated with the exactawkfrom the workflow. It yields the intro, the migration link, the 6 subsections and 366 bullets, and stops before## [0.6.0]. It is 79 KB of body, andjqbuilds the payload fine.PublicAPI.Unshipped.txtis already empty in every package, so there is nothing to move intoShipped.Package set (
dotnet pack -c Release -p:EnableSourceControlManagerQueries=false)repository url="https://git.grandiras.net/Grandiras/ATProto.NET", without.git, which is what Forgejo's package linkage matches on. A pack without the SCM workaround flag also stampsbranchandcommit(checked on the EF package).*.sourcelink.jsoninobj/, because the SDK's built-in SourceLink providers don't recognize thegit.grandiras.nethost.Microsoft.SourceLink.Gitea(Forgejo speaks the Gitea URL scheme) would enable it.ContinuousIntegrationBuildis also not set inrelease.yml.dotnet packwarns once each forsamples/ManagedPdsSampleandsamples/ServerIntegrationSample: "cannot be packaged because packaging has been disabled". The Web SDK setsWarnOnPackingNonPackableProject. Nothing is packed from them.<WarnOnPackingNonPackableProject>false</WarnOnPackingNonPackableProject>insamples/Directory.Build.propswould silence it.Verification
dotnet build -c Release --no-incremental: all 16 projects (src, tests, DocSnippets and its generator, samples, the tool and the AppHost) with 0 warnings, 0 errors.dotnet run --project samples/ManagedPdsSample.AppHost -- --publisher manifestproduced the manifest, andAspireManifestwithATPROTO_REQUIRE_INTEGRATION=1gave 6/6 passed.ghcr.io/bluesky-social/pds:latestimage (no pull), with the CI job's environment, on127.0.0.1:2599. The CI filter (PdsAdminTests|AuthenticationTests|RepositoryTests|CustomRecordTests|IdentityResolutionTests) withATPROTO_REQUIRE_INTEGRATION=1andTreatNoTestsAsErrorgave 30/30 passed. The container was removed afterwards.Maintainer release checklist
release.yml:git tag v0.7.0 <merge-sha> && git push origin v0.7.0.release.yml. It builds and tests at 0.7.0, packs, pushes the.nupkgs and.snupkgs to the Forgejo feed and nuget.org, and creates the Forgejo release from the[0.7.0]section.ATProtoNet.Server.EntityFrameworkCoreshows on the repository's Packages tab. The package ID dates from 0.4.0, when it was published orphaned, and Forgejo never re-evaluates the link. If it is missing, relink it:curl -X POST -H "Authorization: token $TOKEN" https://git.grandiras.net/api/v1/packages/Grandiras/nuget/ATProtoNet.Server.EntityFrameworkCore/-/link/ATProto.NET(HTTP 201).ATProtoNet.Server.EntityFrameworkCorewas deprecated or unlisted when it was merged into Server in 0.5.0, undo that.🤖 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.
@claude /review
Release PR for v0.7.0 (no code changes). Please focus on:
[0.7.0]CHANGELOG section: is every breaking change still there with a migration note, is every security fix still listed, and are the references and links intact?docs/migrating-to-0.7.mdis consistent with the Breaking changes sectionDirectory.Build.props, and whetherrelease.ymlwill extract the[0.7.0]section correctly🤖 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.
This is a mechanical release-prep PR and it holds up well under verification.
Directory.Build.propsbumps<Version>from0.6.0to0.7.0, matching the PR description.## [0.6.0]section and everything below it inCHANGELOG.mdis byte-for-byte identical before and after (verified via checksum on the exact line ranges) — the splice touched only theUnreleased/new[0.7.0]region, as claimed.Unreleasedsection (#110–#141,#180,#187,#190, plus the upstreamatproto#4896mention) are present in the new[0.7.0]section, and#108is newly attached to the four sync-workflow Security items exactly as described.allowTakendown(onLoginAsync/CreateSessionAsync) is now correctly listed under Breaking changes ("New Lexicon parameters shift positional arguments...LoginAsync..."), anddocs/migrating-to-0.7.mdwas updated in the same two spots described in the PR (theallowTakendownpositional-argument note, and removal of the stale#sync/VerifierCID-check line).src/tag/v0.7.0/..., which won't resolve until the maintainer tags the release post-merge — but that's the documented, intentional sequencing (tag happens after merge), not a bug.One very minor, non-blocking observation: the condensed
simplespaceread/write-split bullet drops the inline link to the upstream PR (bluesky-social/atproto#5496) that the old bullet carried. It's a citation, not a functional or migration detail, so it doesn't affect correctness of the release notes, just a small loss of provenance.No correctness issues, no dropped breaking changes, no inconsistencies found in the parts of the diff and surrounding files inspected. Good to merge.
⏱ 2m 15s · 37 turns · tokens: 96.7k in / 7.8k out (+4036.6k cache-read)
📜 Full session transcript
💬 Verdict: comment — the reviewer did not submit a structured review; the raw output follows.
Let me verify the exact section boundaries and bullet counts in the 0.7.0 section.
⏱ 4m 29s · 31 steps · $0.0800 · tokens: 119.3k in / 2.3k out (+1999.0k cache-read) · Go: 5h 0% · wk 0% · mo 82%
📜 Full session transcript
@claude /review
7a51fa0addresses the one observation from the previous review: the condensedsimplespacebullet links bluesky-social/atproto#5496 again. That is the only change since the approved8189d87.🤖 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.
Re-review after one new commit (
7a51fa0). It restores exactly the citation I flagged as a minor, non-blocking note in my previous approval: thesimplespaceread/write-split bullet's inline link to the upstream PR (bluesky-social/atproto#5496), which had been dropped in the condensation. Diffed it directly against the prior state and confirmed it's a pure addition of the markdown link with no other changes to the bullet or surrounding text. Everything else verified in the previous pass (version bump, byte-identical[0.6.0]and older sections, all references preserved, theallowTakendownbreaking-change fix, migration guide fixes) is unaffected. No outstanding issues; good to merge.⏱ 0m 20s · 5 turns · tokens: 85.0k in / 1.1k out (+452.8k cache-read)
📜 Full session transcript
🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
✅ Verdict: approve — no blocking issues found.
Re-review of the release-prep PR. My previous pass promised verification of the
[0.7.0]section boundaries and bullet counts — done now, and the one minor item raised in the earlier review round (the dropped upstream citation) is confirmed fixed in7a51fa0.Verified on this pass:
## [Unreleased](line 8) is empty;## [0.7.0] - 2026-09-28spans lines 10–399 with[0.6.0]starting at 400. Grepping blank lines, indented continuation lines, and non-bold bullets shows the only non-bullet lines in the new section are the intro (12), the migration link (14), and the expected separators — every bullet block is contiguous one-liners. That pins the counts by line arithmetic: Breaking 18–151 = 134, Added 155–240 = 86, Changed 244–295 = 52, Fixed 299–359 = 61, Removed 363–365 = 3, Security 369–398 = 30 — 366 total, exactly matching the PR table.src/tag/v0.7.0/docs/migrating-to-0.7.mdURL (resolves once the maintainer tags, per the documented sequencing).#108on the two merged sync-workflow Security bullets (the four old items),#187,#190, and the upstreamatproto#4896mention all present.7a51fa0: thesimplespaceread/write-split Breaking bullet (line 135) again carries the inline[bluesky-social/atproto#5496](…)link, with no other changes to the bullet.allowTakendownpositional-argument note is in "New Lexicon parameters shift positional arguments" (guide lines 732–739), and the stale "#syncevents are CID-checked whenever aVerifieris set" line is gone (no matches).Directory.Build.propshas<Version>0.7.0</Version>.awkin.forgejo/workflows/release.yml(line 87) matches^## \[0.7.0\], captures the intro, link, six subsections and all bullets, and stops before## [0.6.0]— so the Forgejo release body will be well-formed.Minor, non-blocking: the Breaking bullet "New Lexicon parameters shift positional arguments" lists
LoginAsync(with#124among its refs) without spelling outallowTakendown; the explicit mention stays in the Added bullet and in the migration guide. That covers the breaking aspect and matches the PR description's own wording, so nothing to change.No correctness issues, no dropped content, no inconsistencies. Good to merge; tagging afterwards is the maintainer's step per the checklist.
⏱ 6m 44s · 8 steps · $0.0299 · tokens: 71.5k in / 2.6k out (+419.8k cache-read) · Go: 5h 1% · wk 0% · mo 83%
📜 Full session transcript