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
30 changes: 0 additions & 30 deletions .changeset/large-room-callbacks.md

This file was deleted.

31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
# kit

## 2.6.0

### Minor Changes

- 6df5bea: Large-room callbacks: negotiated roster-epoch ctx encoding, game-declared
heartbeats, and the Rust mirror of the 1024-player baseline work.

- **Ctx roster-epoch mode** (`GameMeta.CtxFeatures: kit.CtxFeatRosterEpoch`):
the host sends the full member list only when the roster changes (with a
`u32` epoch) and a 6-byte unchanged marker otherwise — removing the
O(members) encode/decode/copy from every callback (~100KB per input at
1000 players, the dominant large-room input cost and the residual
`-gc=leaking` leak). Sentinel member-counts `0xFFFE`/`0xFFFF` (ABI.md
§4.1); legacy guests stay byte-identical; ABI major stays 2. Both SDKs
decode the sentinels and keep an epoch-aware roster cache (zero member
allocations on the unchanged form); the legacy byte-skim cache is retained
for pre-feature hosts.
- **`GameMeta.HeartbeatMS`**: declare your wake cadence (0 = default;
validated 20..1000 at meta encode). Host precedence: admin
`host.heartbeat_ms` > declaration > 50ms default. `shellcade-kit play`
honors the declaration locally.
- **Rust crate parity**: mirrors both meta fields + the sentinel decode +
the epoch roster cache (`Rc`-shared members), and ALSO picks up the
v2.5.0 Go-only baseline work it missed: `ROSTER_CAP` 16 → 1024 with
lazily-allocated per-slot baselines and allocated-only broadcast
reconcile. Golden vectors pin the Go/Rust meta encodings byte-identical.
- New trailing meta section (`u32 ctxFeatures` + `u16 heartbeatMS`) after
the config-spec section, presence-guarded both directions; `GUIDE.md`
gains the large-room authoring section (heartbeat + feature declaration +
render-on-change dirty tracking).

## 2.5.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "kit",
"version": "2.5.0",
"version": "2.6.0",
"private": true,
"description": "Version management for the shellcade gamekit (Go module + CLI). Versions and changelogs are driven by changesets; binaries by GoReleaser.",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

[package]
name = "shellcade-kit"
version = "2.5.0"
version = "2.6.0"
edition = "2021"
# #[unsafe(no_mangle)] (emitted by shellcade_game! so expansions survive
# edition-2024 game crates) stabilized in 1.82.
Expand Down
Loading