Skip to content

OddCrate acceptance: real game discovery, self-hosted release, donation and qualified reviews #152

Description

@EriArk

Parent: #144

Goal

Deliver the whole user experience, not just separate server/client smoke tests. Validate that OddCrate feels like a built-in, curated extension of TrainerOS and existing Adventures.

Test fixture games

Choose one genuinely redistributable homebrew ROM and one open-source native Linux game with redistributable bundled assets. Use their real maintainer sources and tested version records, not arbitrary copyrighted commercial files. Test ARM64 and x86-64 targets where actually supported.

Walkthrough A — discover and play

Multiverse → OddCrate → handpicked category → game info → Install → download progress → My Collection → Play → Home → Exit → play history

Then update the game through the same server release and verify saved progress, launch identity, downloaded art and user files are retained. Remove only OddCrate-owned content, leaving unrelated saves/files intact.

Walkthrough B — upstream change and curation

owner approves source/recipe → upstream releases new tag → isolated build → automated validation → candidate → owner promotes → server catalog updates → client sees Update

A broken build/test or invalid permission should leave the current release available. Verify build jobs cannot access the owner's Nextcloud, private data or signing keys.

Walkthrough C — creator support

game detail → Donate → select author-approved destination → QR code → scan using a phone → open exactly that creator's destination

No payment is handled in TrainerOS. Missing/malicious URLs do not appear.

Walkthrough D — shared reviews across ALL games

  • Verify a manually imported ordinary ROM, OddCrate homebrew and native title all display the same Review/Rate rule as Adventure Reviews: universal 2-hour-or-completion ratings, stars and comments for every game #113.
  • With 7199 seconds of valid cumulative game time and no verified completion: writing/rating remains locked.
  • With 7200 seconds: rating unlocks (even without completion).
  • With a verified short-game completion before 7200 seconds and genuine play: rating unlocks.
  • Without trustworthy completion evidence, merely opening/exiting a game or importing an unverified marker is insufficient.
  • Write 1–5 stars with or without optional text; edit/delete, spoiler/report, cross-device read, cache/offline behave consistently.
  • Top Rated uses qualified votes and does not place a one-vote game above a heavily rated favorite by naive average.

Multiplayer relationship

OddCrate-installed content joins current Friend/Together GameParty if its runtime supports it. If a friend lacks an eligible OddCrate game, offer an explicit normal installation from the catalog and then resume joining, distinct from temporary guest ROM transfer (#136).

Failure / quality gates

Controller-only screenshots on a handheld and a real TV profile (#156/#157) for catalog, game details, downloads, QR, reviews and Top Rated. Test corrupt signatures, server offline, canceled update, disk full, wrong architecture, permissions withdrawal and account switching. Verify TV donation QR phone scanning, safe areas and focus from sofa distance. Do not count a browser mockup or upscaled handheld composition as deployed TV functionality.

Acceptance

  • Physical handheld and TV-mode flow confirms install → normal launch → exit → review eligibility → donation → remove without destroying saves.
  • Review gate applies to all games/ROMs and matches Adventure Reviews: universal 2-hour-or-completion ratings, stars and comments for every game #113 exactly.
  • Curator can add a title and react to upstream updates with tested packages.
  • Offline normal play remains unaffected by catalog/review outage.
  • No mandatory developer/customer storefront accounts or payment processor.
  • No new primary TrainerOS page or second game library.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions