Skip to content

chore(release): 4.0.0 - #87

Merged
lobotomoe merged 2 commits into
mainfrom
release/4.0.0
Sep 3, 2026
Merged

chore(release): 4.0.0#87
lobotomoe merged 2 commits into
mainfrom
release/4.0.0

Conversation

@lobotomoe

Copy link
Copy Markdown
Owner

Release prep for 4.0.0. Nothing here changes app behaviour — the two user-facing fixes it ships were merged earlier (#85 and the non-ASCII credentials fix).

Why a major

ServerProfile in revenant-sign-core gained a public ascii_credentials_only field on a struct that had no #[non_exhaustive], so any downstream ServerProfile { .. } literal stops compiling. That break is already in the tree and has to be paid for with a major.

Since a major is being spent anyway, the struct is now marked #[non_exhaustive] — that is itself breaking, so this is the only release it can ride, and it keeps the next field addition additive. Nothing in the workspace constructs the struct literally outside the defining crate; both other crates already use ServerProfile::builtin / ::custom_default.

The Python and TypeScript packages keep their public surface.

Also in 499affb

Three stale intra-doc links that cargo doc has been failing on: SigField::cert_field (no such item — it is SigFieldValue::Cert), a private-item link to font_data, and an unqualified claim_ping. CI does not run rustdoc, so these were invisible; they would have rendered broken on docs.rs for a version that cannot be republished.

Version-bearing files moved together

  • rust/Cargo.toml [workspace.package] + the three internal path-dep requirements + Cargo.lock
  • rust/packaging/linux/…metainfo.xml — new <release> entry (the Snap adopts its version from here)
  • python/pyproject.toml, the constants.py fallback, and its test
  • typescript/package.json

python/appimage/ metainfo stays at 1.2.1 on purpose: it feeds only the retired Python Flatpak manifest and no active release path reads it.

Plan after merge

Tag v4.0.0-rc.1 first as a full pipeline rehearsal (TestPyPI, npm next, GitHub prerelease), then v4.0.0 once it comes back clean. Version Guard accepts a prerelease tag against a 4.0.0 tree.

🤖 Generated with Claude Code

https://claude.ai/code/session_019eECjwAir8Csz7iHp8EPYQ

lobotomoe and others added 2 commits September 3, 2026 19:50
3.x already broke: `ascii_credentials_only` was added as a public field
to a struct with no `#[non_exhaustive]`, so any downstream
`ServerProfile { .. }` literal stops compiling. That break has to be paid
for with a major either way, and marking the struct non-exhaustive is
itself breaking -- so it can only ride the same bump. Doing it now means
the next field addition is additive instead of another major.

Nothing in the workspace constructs the struct literally outside the
defining crate; both other crates already go through
`ServerProfile::builtin` / `::custom_default`, which is the contract the
doc comment now states.

Also clears three stale intra-doc links that `cargo doc` has been
failing on -- `SigField::cert_field` (no such item; it is
`SigFieldValue::Cert`), a private-item link to `font_data`, and an
unqualified `claim_ping`. CI does not run rustdoc, so these were only
visible locally, and they would have rendered broken on docs.rs for a
release that cannot be republished.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019eECjwAir8Csz7iHp8EPYQ
Version-bearing files moved together so the tag, the crates, the stores
and the signer version recorded in signed PDFs all agree:

  - rust/Cargo.toml [workspace.package] and the three internal path-dep
    requirements, plus the lock
  - rust/packaging/linux metainfo (the Snap adopts its version here)
  - python/pyproject.toml, the constants.py fallback and its test
  - typescript/package.json

python/appimage/ metainfo is deliberately left at 1.2.1: it feeds only
the retired Python Flatpak manifest and no active release path reads it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019eECjwAir8Csz7iHp8EPYQ
@lobotomoe
lobotomoe merged commit 189ea96 into main Sep 3, 2026
29 checks passed
@lobotomoe
lobotomoe deleted the release/4.0.0 branch September 3, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant