feat!: bump all artifacts to v2.0.0, clean up release flow#692
Merged
Conversation
- Unify version numbers: runtimed, runt-cli, notebook, sidecar, and the PyPI package all move to 2.0.0. Major version = protocol version. - Stop publishing Python wheels from stable desktop releases. Only nightly publishes pre-release alphas to PyPI (gated by new publish_python_prerelease input). Stable Python releases come from python-v* tags. - Expose protocol_version and daemon_version in the Python NotebookConnectionInfo bindings for debuggability. - Add protocol_version to Pool IPC handshake (backward compatible: old clients omit it, daemon accepts None). - Document the versioning contract in contributing/protocol.md.
Stable desktop releases (v* tags) now publish Python wheels to PyPI at the version from pyproject.toml. Nightly still applies the alpha stamp. Removes the intermediate publish_python_prerelease flag in favor of conditioning the alpha version bump on github_release_prerelease directly. Adds contributing/releasing.md covering the versioning scheme, release procedures, tag conventions, and protocol version change process.
Every connection now starts with a 5-byte preamble: 4-byte magic (0xC0DE01AC) + 1-byte protocol version. The daemon validates both before reading the handshake frame, giving a clear error for non-runtimed connections and version mismatches. Reverts Handshake::Pool back to a unit variant since the preamble now handles version gating — no need for redundant version fields in the JSON handshake. Adds schema_version (u64) to the Automerge document root. Set to 1 for the current ordered-list cell format. This enables future schema migrations (e.g., fractional indexing) without conflating document structure changes with wire protocol changes.
Protocol version and schema version are independent internal compatibility markers, not user-facing semver drivers. A protocol bump doesn't automatically force a major version bump — that depends on user impact. This removes the pressure to avoid protocol evolution just because it would mean jumping to 3.0.0.
This was referenced Mar 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All artifacts move to 2.0.0. Establishes a versioning contract, adds a magic bytes wire preamble, and cleans up the release flow — all ahead of fractional indexing for cell ordering.
Version bumps (2.0.0 everywhere)
runtimedRust daemon (0.1.0-dev.10→2.0.0)runtimedPyPI package (0.1.4→2.0.0)runt-cli(1.4.1→2.0.0)notebook/tauri.conf.json(1.4.1→2.0.0)sidecar(1.4.1→2.0.0)Magic bytes preamble
Every connection now starts with a 5-byte preamble before the JSON handshake frame:
0xC0 0xDE 0x01 0xAC2)The daemon validates both before reading the handshake. Non-runtimed connections get a clear error instead of a serde parse failure. Protocol mismatches are rejected before any JSON parsing. This is the breaking wire change that justifies 2.0.0.
Document schema version
Adds
schema_version(u64, currently1) to the Automerge document root. This is the gate for the upcoming fractional indexing migration — schema version 2 will switch cells from an orderedListto aMapkeyed by cell ID with fractional index positions. Independent from the wire protocol version.Release flow
v*tags) now also publish Python wheels to PyPI at the version frompyproject.toml. One tag ships everything.2.0.1a{timestamp}).python-v*tag path kept for Python-only patches.Python bindings
NotebookConnectionInfonow exposesprotocol_versionanddaemon_version(previously dropped during conversion from Rust).Versioning contract
Protocol version and schema version are independent internal compatibility markers — not tied to the artifact version. A protocol or schema bump doesn't force a major version bump; that depends on user impact. Documented in
contributing/releasing.mdandcontributing/protocol.md.PR submitted by @rgbkrk's agent Quill, via Zed