Skip to content

feat: versioned resource releases and complete session protocol - #1

Draft
nichinichisou0609 wants to merge 3 commits into
mainfrom
feat/resource-releases-live
Draft

nichinichisou0609 wants to merge 3 commits into
mainfrom
feat/resource-releases-live

Conversation

@nichinichisou0609

Copy link
Copy Markdown

Summary

  • Load and serve a validated, versioned resource release: paired catalog and master manifest, immutable startup validation, master tables and Android bundles with local mirrors, HEAD requests, range requests, and optional upstream caching and fallback. Releases are built from a song package baseline with the new resource-release command.
  • Complete the session protocol: account login with SHA-256 token digests and a configurable server list, strict HTTP/2 gRPC framing with gRPC status mapping and player credential validation, feature switches, and the free-live flow (start, finish, best score / maximum combo / clear state tracking with player-data projection).
  • Add the session companion RPCs the client issues around login and home: player data sync, season pass fetch, chat sync and notifications, battle-live invitations, and maintenance checks, each returning their documented default state.
  • Replace checked-in master tables with locally produced release data (gitignored); tests use synthetic fixtures only.
  • Document the release layout and protocol behavior, and run tests and publish on GitHub Actions (Linux + Windows).

Test plan

  • dotnet test tests/MyNotes.Tests/MyNotes.Tests.csproj -c Release — 252 passing, 5 skipped where the host cannot create symbolic links (Linux CI runs them).
  • dotnet publish MyNotes.csproj -c Release builds clean.
  • End-to-end: start the server with a built release manifest, point a game client at it, and walk login → resource download → song select with audio preview → free live → natural finish → settlement → score readback.

Load a validated resource release with paired catalog, master manifest, and
immutable startup snapshot, and serve master tables, catalog markers, and
Android bundles from it with local mirrors, HEAD, ranges, and optional
upstream caching and fallback. Build releases from a song package baseline
with the resource-release command.

Complete the session protocol: configurable account login with SHA-256
token digests and server list, HTTP/2 gRPC framing with status mapping and
credential validation, feature switches, and the free-live flow that
records best score, maximum combo, and clear state with player-data
projection. Add the session companion RPCs for player sync, season pass,
chat notifications, battle-live invitations, and maintenance checks.

Replace checked-in master tables with locally produced release data that
stays ignored, and cover everything with synthetic-data tests.
Describe the release build and serving layout, the identity and framing
rules, the free-live flow, and the default states of the session companion
RPCs.
Run the synthetic-data test suite and publish the server on Linux and
Windows for pushes and pull requests.
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.

1 participant