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
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.20.0] "Aperture" - 2026-07-15

Phase A of the new UI/UX-parity ladder: brings the wasm demo's menus and the desktop frontend's
peripheral/overscan/inspection controls up from placeholder or dormant to actually functional,
closing several gaps found in a systematic audit against RustyNES's own frontend.

### Fixed

- **Wasm demo: `Cheats`/`Debugger overlay` menu items now real, not placeholders** (Phase A of the
Expand Down
34 changes: 17 additions & 17 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 @@ -21,7 +21,7 @@ members = [
]

[workspace.package]
version = "1.19.0"
version = "1.20.0"
edition = "2024"
rust-version = "1.96"
license = "MIT OR Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-android/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-android"
description = "RustySNES: Android JNI presentation host (wgpu-on-Surface, no emulation logic)"
version = "1.19.0"
version = "1.20.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-ios/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-ios"
description = "RustySNES: iOS Metal presentation host (wgpu-on-CAMetalLayer, no emulation logic)"
version = "1.19.0"
version = "1.20.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-mobile/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-mobile"
description = "RustySNES: UniFFI mobile bridge (Kotlin/Swift bindings over the emulation core)"
version = "1.19.0"
version = "1.20.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion crates/rustysnes-monetization/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "rustysnes-monetization"
description = "RustySNES: dormant entitlement/ad-pacing policy scaffold (mobile-only, never a dependency of the deterministic core)"
version = "1.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.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.19.0"
version = "1.20.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
Expand Down
10 changes: 8 additions & 2 deletions docs/STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This file is authoritative for per-suite pass counts, the board / coprocessor matrix, and
version policy. Everything else defers to it.

**Current release:** `v1.19.0 "Afterburner"` (`v0.1.0 "Foundation"`,
**Current release:** `v1.20.0 "Aperture"` (`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"`,
Expand Down Expand Up @@ -53,7 +53,13 @@ real-verified end-to-end in this development environment including a genuine BOL
found and fixed in PR review (`v1.19.0 "Afterburner"`) — 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`
which stayed byte-identical throughout; see `CHANGELOG.md` for full per-release detail.
**`v1.20.0 "Aperture"`** opens a new UI/UX-parity ladder (Phase A) auditing the desktop frontend
and wasm demo against RustyNES's own frontend maturity: two wasm demo menu items (`Cheats`/
`Debugger overlay`) fixed from placeholder to real, live Mouse/Super Scope host-input capture
wired for the first time (`crate::peripherals`), a View → Hide Overscan toggle, and a new
Debug → ROM Info panel — again zero change to the accuracy dashboard; see `CHANGELOG.md` for
full detail. `v1.0.0`
closes the production-cut
gate: `Board: Send` (unblocking `emu-thread` to compile/test/lint clean for the first time, though
it stays off-by-default pending full feature parity — see `docs/frontend.md`), the five
Expand Down
14 changes: 13 additions & 1 deletion to-dos/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,16 @@ under `v1.0.0`) and the netplay save-state-cost pre-work.
Tracked in lockstep against RustyNES's own continuing development via
`to-dos/LOCKSTEP-CHECKLIST.md`, not a frozen snapshot target. Full detail in
`to-dos/VERSION-PLAN.md`'s "RustyNES-parity ladder" section.
- **A new, separate UI/UX-parity ladder, Phase A (`v1.20.0 "Aperture"`, RELEASED 2026-07-15).** A
systematic audit of RustySNES's menus/settings/debugger against RustyNES's own frontend found
the wasm demo showing placeholder labels for two features never actually excluded for any real
reason (`cheats`/`debug-hooks`, now real), a desktop peripheral-input gap (Settings selected the
Mouse/Super Scope hardware but nothing captured host pointer input, now wired via a new
`crate::peripherals` module), a missing View → Hide Overscan toggle, and closed the ROM Info
debugger panel small-catch-up item named above. Full detail in `to-dos/VERSION-PLAN.md`'s
`v1.20.0 "Aperture"` entry. Phases B (in-app Help docs, deeper debugger panels) and C (wasm Lua
scripting, browser netplay lobby, browser RetroAchievements, i18n) remain scoped but not
started.
- **Flagged by the 2026-07-12 lockstep re-check — no rung assigned yet, maintainer go/no-go
needed.** RustyNES shipped two items since the roadmap's `v2.1.5` baseline that RustySNES's own
ladder doesn't currently account for: (1) a **GIF/WAV screen+audio capture subsystem**
Expand Down Expand Up @@ -404,7 +414,9 @@ under `v1.0.0`) and the netplay save-state-cost pre-work.
its own, narrower scope, and no untrusted-input crash has ever been found), so neither is
silently folded into an already-closed rung — see `to-dos/LOCKSTEP-CHECKLIST.md`'s 2026-07-15
log row for the full disposition, including three smaller items (a self-contained ROM Info
debugger panel judged a small catch-up; RustySNES's `movie.rs` deserializer already independently
debugger panel judged a small catch-up — **closed in `v1.20.0 "Aperture"`**, as part of that
rung's own separate UI/UX-parity audit against RustyNES's frontend, not this lockstep check
directly; RustySNES's `movie.rs` deserializer already independently
hardened against the same OOM-DoS class RustyNES's fuzzing just found, so already covered; and a
Zapper aperture-hardening technique that doesn't map onto RustySNES's own, architecturally
different geometric Super Scope hit-detection model, so not directly applicable).
Expand Down
Loading
Loading