Skip to content

release: cut v2.2.0 "Capstone" (milestone — netplay lobby + FDS medium model + peripherals + quality/security)#297

Merged
doublegate merged 1 commit into
mainfrom
release/v2.2.0
Jul 12, 2026
Merged

release: cut v2.2.0 "Capstone" (milestone — netplay lobby + FDS medium model + peripherals + quality/security)#297
doublegate merged 1 commit into
mainfrom
release/v2.2.0

Conversation

@doublegate

Copy link
Copy Markdown
Owner

Milestone cut closing the v2.1.5 → v2.2.0 "deepen the existing project" run. Version bump + release docs only — all code already merged via #290 (netplay lobby / spectators / desync-liveness hardening + fuzz 3→8 + ROM Info browser + handbook) and #291 (FDS medium model + Famicom mic + Zapper aperture).

Cut mechanics

  • [workspace.package] version 2.1.10 → 2.2.0 (Cargo.lock refreshed across all 18 workspace crates)
  • CHANGELOG [Unreleased][2.2.0] header + fresh [Unreleased]
  • .github/release-notes/v2.2.0.md authored (release-auto body override)
  • README badge / BibTeX / current-release paragraph → v2.2.0

Sacred gate (verified on the merged #290+#291 tree)

  • AccuracyCoin 141/141 (100.00%), nestest 0-diff, pal_apu_tests 10/10, visual_regression byte-identical
  • netplay rollback-determinism + snapshot-restore-replay + FDS synthetic write-verify green
  • no_std thumbv7em cross-compile · full host fmt/clippy/rustdoc/markdownlint · version consistency

No default-build behavior change (netplay = signaling/telemetry; FDS head-seek + both peripherals default-off; ROM Info read-only). On merge, release-auto.yml tags + publishes v2.2.0 + binaries.

🤖 Generated with Claude Code

…ripherals + quality/security)

The milestone cut that closes the v2.1.5 -> v2.2.0 "deepen the existing
project" run, landing its two remaining marquees plus a peripherals and
quality/security pass. Every change already merged (PRs #290, #291) is
additive or default-off; the deterministic core is untouched, so this cut
itself moves only version strings + release docs and no framebuffer/audio
byte.

Marquees (already on main via #290/#291):

- Netplay matchmaking + lobby (B5) — a browse-and-join room directory
  (`ListRooms`/`RoomList`) and server-side quick-play (`QuickMatch`/`Matched`)
  over the existing room-code / TURN transport, delayed-stream spectators
  (`SpectatorConfig.delay_frames`, reveal-horizon gated), a graded
  hysteresis desync verdict (`DesyncStatus`, threshold 3 ~= 1.5 s), and
  graded multi-second peer-liveness RTT timeouts (`PeerLink` +
  `DisconnectReason::PeerTimeout`). Signaling and telemetry only — the
  rollback/determinism contract is untouched.
- FDS medium model completion (F4.3) — per-block CRC-16/KERMIT re-emitted on
  every BIOS write (`resynth_block_crc`) over a synthesized gap/mark wire
  image, an opt-in default-OFF continuous analog head-seek / velocity model
  (`Fds::set_analog_head_seek`) replacing the flat `HEAD_RESEEK_CYCLES`
  window, and a BIOS-free synthetic write-verify oracle
  (`Fds::medium_write_verify`) as the CI-verifiable half (the real-BIOS
  write-CRC path stays gitignored/local — copyright disksys.rom). Additive
  v4 FDS save-state tail; with the model off a non-writing `.fds` run is
  byte-identical to prior releases.

Peripherals (#291): the Famicom `$4016`-bit-2 microphone
(`Nes::set_microphone`, `$4016`-only, never `$4017`) and a 3x3-aperture
Zapper light-timing model (`ZAPPER_APERTURE_*`), both additive/default-off.

Quality/security (#290): cargo-fuzz targets grown 3 -> 8 (`ppu_reg_io`,
`apu_reg_io`, the high-value `netplay_message`, `save_state`, `movie`),
which surfaced and fixed two real OOM-DoS paths in `Movie::deserialize`
(untrusted `frame_count` -> unbounded `Vec::with_capacity`, and a
zero-`bytes_per_frame` infinite push loop) byte-identically for valid input;
a read-only Tools -> ROM Info browser (dump-identity CRC32 keys + SHA-256 +
per-game DB entry + decoded header, `&Nes`, never mutates); and four new
MkDocs handbook pages.

Cut mechanics: `[workspace.package] version` 2.1.10 -> 2.2.0 (Cargo.lock
refreshed across all 18 workspace crates), CHANGELOG `[Unreleased]` renamed
to `[2.2.0]` with a fresh empty `[Unreleased]`, `.github/release-notes/
v2.2.0.md` authored, and README badge / BibTeX / current-release paragraph
updated. `release-auto.yml` tags + publishes on main going green.

Sacred gate (verified on the merged #290+#291 tree): AccuracyCoin 141/141
(100.00%), nestest 0-diff, `pal_apu_tests` 10/10, `visual_regression`
byte-identical, netplay rollback-determinism + snapshot-restore-replay +
FDS synthetic write-verify green, `no_std` thumbv7em cross-compile, full
host fmt/clippy/rustdoc/markdownlint, version consistency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 12, 2026 15:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Cuts the v2.2.0 “Capstone” release by updating the workspace version and release documentation (README, changelog, and GitHub release notes) without introducing new functional code changes.

Changes:

  • Bump workspace/package version to 2.2.0 and refresh workspace crate versions in Cargo.lock.
  • Add the v2.2.0 changelog section and reset the [Unreleased] header.
  • Update release-facing docs: README version badge + “Current Release” narrative + BibTeX version, and add .github/release-notes/v2.2.0.md.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
README.md Updates version badge, current release narrative, and BibTeX version to v2.2.0.
CHANGELOG.md Adds the v2.2.0 entry (dated 2026-07-12) and rolls forward from Unreleased.
Cargo.toml Bumps [workspace.package] version to 2.2.0.
Cargo.lock Updates workspace crate versions to 2.2.0.
.github/release-notes/v2.2.0.md Adds the release-auto body override notes for the v2.2.0 release.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request prepares the repository for the v2.2.0 'Capstone' release. It updates the version numbers across Cargo.toml, Cargo.lock, and README.md, adds a comprehensive release notes document under .github/release-notes/v2.2.0.md, and updates the CHANGELOG.md with the details of the new release. There are no review comments provided, so I have no feedback to address.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@doublegate doublegate merged commit 966de0f into main Jul 12, 2026
26 checks passed
@doublegate doublegate deleted the release/v2.2.0 branch July 12, 2026 16:30
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.

2 participants