Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.13.0] "Vantage" - 2026-07-12

Ninth release of the RustyNES-parity roadmap: two accessibility theme variants, plus an honest
re-scoping of the other two originally-planned items.

### Added

- **Two accessibility theme variants** (`v1.13.0 "Vantage"`): `AppTheme::HighContrast` (a
- **Two accessibility theme variants**: `AppTheme::HighContrast` (a
near-black/near-white theme pushing every foreground/background pair past WCAG 2.1 AA, most
past AAA) and `AppTheme::Colorblind` (interactive accents drawn from the Okabe-Ito palette,
mutually distinguishable under the most common red-green color-vision deficiencies), both
Expand Down
26 changes: 13 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ members = [
]

[workspace.package]
version = "1.12.0"
version = "1.13.0"
edition = "2024"
rust-version = "1.96"
license = "MIT OR Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-apu/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-apu"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-cart/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-cart"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-cheevos/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-cheevos"
description = "Native-only RetroAchievements (rcheevos) FFI wrapper for RustySNES"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-core"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-cpu/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-cpu"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-frontend/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-frontend"
description = "RustySNES: cross-platform SNES emulator binary (winit + wgpu + cpal + egui)"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-gfx-shaders/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-gfx-shaders"
description = "RustySNES: shared WGSL presentation-shader sources (blit + post-filters)"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-netplay/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-netplay"
description = "RustySNES: GGPO-style rollback netplay (UDP native, WebRTC browser)"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-ppu/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-ppu"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-savestate/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-savestate"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-script/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-script"
description = "RustySNES: sandboxed Lua 5.4 scripting (memory read/write + a per-frame callback)"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-test-harness/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustysnes-test-harness"
version = "1.12.0"
version = "1.13.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
10 changes: 6 additions & 4 deletions docs/STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@
This file is authoritative for per-suite pass counts, the board / coprocessor matrix, and
version policy. Everything else defers to it.

**Current release:** `v1.12.0 "Refraction"` (`v0.1.0 "Foundation"`,
**Current release:** `v1.13.0 "Vantage"` (`v0.1.0 "Foundation"`,
`v0.2.0 "Persistence"`, `v0.3.0 "Continuum"`, `v0.4.0 "Completion"`, `v0.5.0 "Fidelity"`,
`v0.6.0 "Shippable"`, `v0.7.0 "Resolution"`, `v0.8.0 "Community"`, `v0.9.0 "Threshold"`,
`v1.0.0 "Zenith"`, `v1.0.1 "Aftertouch"`, `v1.1.0 "Latchkey"`, `v1.2.0 "Phosphor"`,
`v1.3.0 "Palimpsest"`, and `v1.4.0 "Convergence"` precede it; see `to-dos/VERSION-PLAN.md` for the
full ladder). **`v1.5.0`-`v1.12.0`** are the opening rungs of the RustyNES-parity ladder — a CI
full ladder). **`v1.5.0`-`v1.13.0`** are the opening rungs of the RustyNES-parity ladder — a CI
safety net (`v1.5.0 "Bedrock"`), a MkDocs documentation site + PWA + accuracy ledger
(`v1.6.0 "Lighthouse"`), the debugger extracted into its own module plus a hex Memory panel
(`v1.7.0 "Telemetry"`, `v1.7.1` patch), a Memory Compare panel + in-app Docs panel
(`v1.8.0 "Tracepoint"`), widening `rustysnes-script`'s `emu.read` to the full 24-bit bus
(`v1.9.0 "Marionette"`), wiring HD-pack compositing into the `emu-thread` build for the first
time (`v1.10.0 "Atelier"`), fixing RetroAchievements to actually load a game for the first
time (`v1.11.0 "Podium"`), and adding a third presentation post-filter (`PostFilter::Xbrz`) plus
time (`v1.11.0 "Podium"`), adding a third presentation post-filter (`PostFilter::Xbrz`) plus
extracting the WGSL shader sources into a new `rustysnes-gfx-shaders` crate for reuse by the
planned mobile bridge (`v1.12.0 "Refraction"`) — all frontend/tooling/CI work with **zero
planned mobile bridge (`v1.12.0 "Refraction"`), and adding two accessibility theme variants
(`AppTheme::HighContrast`/`Colorblind`) while honestly re-scoping the other two originally-planned
items (`v1.13.0 "Vantage"`) — all frontend/tooling/CI work with **zero
change** to the accuracy dashboard, per-suite pass counts, or coprocessor tier matrix below,
which stayed byte-identical throughout; see `CHANGELOG.md` for full per-release detail. `v1.0.0`
closes the production-cut
Expand Down
6 changes: 5 additions & 1 deletion to-dos/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,11 @@ under `v1.0.0`) and the netplay save-state-cost pre-work.
`PostFilter::Xbrz`, an xBRZ-style context-gated corner blend, and the new `rustysnes-gfx-shaders`
crate housing `BLIT_WGSL`/`CRT_WGSL`/`HQX_WGSL`/`XBRZ_WGSL` for reuse by the mobile track;
`.slangp`/`.cgp` import and a composite/RF post-pass remain deferred, unrevisited from `v1.2.0`'s
original scope call), accessibility/theming + save-state polish (`v1.13.0`), then a
original scope call), two accessibility theme variants (`v1.13.0 "Vantage"`,
**RELEASED 2026-07-12** — `AppTheme::HighContrast`/`Colorblind`; the plan's other two items,
a save-state migration fixture and a keyboard-nav audit, were investigated and found to already
be a verified-non-issue and a manual-walkthrough task respectively, not code fixes — both
honestly re-scoped rather than force-fit), then a
full mobile track — Android + iOS apps plus dormant monetization scaffolding
(`v1.14.0`-`v1.18.0`) — and a PGO/BOLT pipeline last (`v1.19.0`). Tracked in lockstep against
RustyNES's own continuing development via `to-dos/LOCKSTEP-CHECKLIST.md`, not a frozen
Expand Down
24 changes: 18 additions & 6 deletions to-dos/VERSION-PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -1137,12 +1137,24 @@ multi-pass algorithm, not this release's single-pass GPU approximation) was cons
deferred — the single-pass shader approximation was judged the honestly-testable, right-sized
scope for a presentation-only, non-accuracy-critical feature.

### `v1.13.0 "Vantage"` — accessibility/theming + save-state polish

`HighContrast` + Okabe-Ito colorblind-safe themes; a keyboard-only-navigation audit across every UI
surface added since `v1.7.0` (scheduled last among desktop rungs so the audit covers the final
surface); a save-state versioned-migration regression fixture (the one real save-state gap found —
the 10-slot/thumbnail UI itself is already at parity).
### `v1.13.0 "Vantage"` — accessibility/theming + save-state polish — **RELEASED 2026-07-12**

Delivered: `AppTheme::HighContrast` (WCAG AA/AAA dark theme) + `AppTheme::Colorblind`
(Okabe-Ito-accented dark theme), both additive and regression-tested against the stock dark
theme.

**Honestly re-scoped, not silently dropped**: the other two originally-planned items here were
investigated and neither fit a discrete code change. The "save-state versioned-migration
regression fixture... the one real save-state gap found" premise was stale —
`System::load_state` was always designed to fail loudly on an older-format blob (never to
migrate one), by deliberate choice recorded since the `FORMAT_VERSION` `2`/`3` bumps, and a
regression fixture proving exactly that has existed since `v0.7.0`
(`save_state_backward_compat.rs`). Closed as verified-non-issue; the 10-slot/thumbnail Save
States manager itself is already at full parity. The keyboard-only-navigation audit was found to
be a manual-walkthrough task, not a bug with a discrete fix (egui's own default Tab order is used
everywhere; nothing custom, nothing known-broken, but nothing walked/confirmed either) —
documented as an explicit open item in `docs/frontend.md`'s Theme section rather than converted
into a hollow "audit passed" claim. See `docs/frontend.md` for the full explanation of both.

**Decision-doc rung (small, precedes the mobile track):** reverses this document's own "Post-v1.0
— Reach (deferred)" no-mobile-appetite line and `docs/frontend.md`'s no-gfx-shaders-crate
Expand Down
Loading