Skip to content

The nine-page beta fix list was approved in full on 2026-10-29. Every implementation lot below is merged into staging and is not deployed. Per-change notes live in the neighbouring tracking files. Personal accounts and collections were not mutated for this verification.

App staging ​

Local gates only. Maestro and device checks were not run for any of these pulls. GitHub Actions is red because billing is unpaid, so a red check is not a product failure and a green check was not available.

LotPull requestStaging SHA
Tab roots#870b1bca3483167576c9696f201658e1cdd8c942fdc
Stable search input#9077020ad129085dc6aebb70c2e10c9c03872909ed4
Empty portfolios show zero#912528f733101bbfd188a6500ed8af9ddf7a1e7fcfa
Catalogue typo recovery#904f87f5ee11903d3fb2006b6956f34337f633b36c8
Home refresh#889dd0b504f5f6e874fe34723e1802a56180d728812
Search past 200 cards#896df04b4bfccd404f100fd4b4c6c3d25be4f2dfaa2
Sort the loaded search result#9158acedf92d3d2616533ebf652067b01fd6e6237e1
Catalogue defaults and release date#87818f462fe9a869d5cbf7f3b72035969bb65043e8e
Recent scans in release builds#9008489fc1c0967066c995d820f64640859eb0b87e4
Explorer series and filters#8841a8d1937599a3116d03ef83d1d7df77782120104
One Piece Promos block#917dcf9291f1f239c867d0caf8771fafe7e947a8935
Sealed Explorer controls#90234b19650d90819ec9c5ebc2ff20fc2eef195cc1d
Pokébox facet values#91661a657da8def54b2d33a841645ce02b6321e1149
Compact card navigation and exact duos#8812e6eb50cfe194e8b79d4f8524f66b0e41a9a8ad1
Alert and binder sheets#89401a7c2d1c0bc44ba6a13d633938be24a67f8452c
Genuine observation dates#898295d2e83d1d2c87b62f5a543c608b330ce123e60
Card detail refresh#914b6480f2264c758673892af2ea525ff9b95dec3e8
Sealed detail and additions#8954ee0ee6c14cf65f628f89c7e115328a392c47cef
Scan capture and bulk intro#8996b58619685d7d5063bd5540b5dcdf82080e74bef
Bulk review controls#9036debe5858e3f2f6a5e7b23088a23788ebb6d3eea
Binder removal and character labels#880b6787921097e1ed88d8061acb0cfc9e0a4edebc4
Purchase costs on holdings#88893dd6156a3306090dd4d38968236aa40489be1c0
Missing purchase prices#9010879ceed929ba6da2167d8d49d8dee63d67f2e30
Species browsing#906238d0eb771225e6afddda16f87e57c193f714c81
Species and character lists past 200#913f8addc764049cc863f0ae7d5719ed54b74167d32
Account forms and password recovery#882adef99989a935dbfdc2e907a92e89e2c08dcc0ba
Configured Google and Apple sign-in#910aa2c02405829359b8e63c28c219d0ecd145986ca

Backend staging ​

Pull requestStaging SHAWhat landed
#5998c57bcdbPurchase costs on holdings (setPurchasePrice)
#6055c4a4d34Project sealed Tin as Pokébox
#606d1a439c0One Piece sealed order before pagination
#591045319d3Reject duplicate explicit registration
#5953f0f46e9Accept ten-character beta passwords

Backend #603 was closed unmerged. #605 and #606 supersede it. None of these backend pulls is deployed.

Ready for review, not merged ​

Backend OAuth #602 (feature/oauth-beta-868, Google and Apple browser OAuth) and #600 (docs/oauth-beta-configuration) are ready for review. They are not merged and not deployed. Mobile #910 only starts sign-in when the providers are configured.

Activation still requires all of the following:

  • Google and Apple credentials. There is no Apple developer licence yet, so Apple sign-in cannot be completed live.
  • A separate nginx proxy change. Nginx only forwards /api/. The public callbacks /auth/oauth/*/callback need their own routing.
  • Review of migration 0051_oauth.sql before any production run.
  • A device test.

Still open ​

  • GET /cards still needs server-side sort=price|release_date and dir applied before limit and offset for searches with more than 800 results. App #915 sorts the loaded result only.
  • fr-OP-PROMOS is missing from GET /sets?lang=fr. GET /sets/fr-OP-PROMOS?lang=fr returns 404. block_logo.id should be onepiece-promo. App #917 shows the Promos block the client can already see.
  • Series logos are still missing for smp, xyp, bwp, hgssp, dpp, base1 and basep (English TCGdex logos exist; a product decision is still required) and for 30th, mep and svp (no logo anywhere).
  • Deferred to Georgic: the Japanese flag beside the French flag, and the catalogue language selector. Neither is shown until those languages exist.

Behaviour that shipped ​

  • Selecting a tab opens its root. Back inside a journey is unchanged.
  • The signup code field uses a line height that matches its type size. Password recovery confirms success and returns to login instead of adopting the session.
  • Recent scans keep the minimal local card reference Home needs. Diagnostic photo archiving and uploaded scan history stay off.
  • Species links use the Pokémon name without a mechanic suffix and keep an exact duo together, rather than every card of either partner.
  • An observation date is shown only when the source recorded one. A request time, a computation time or a single sale date is not relabeled as that date.
  • Binder deletion removes the binder and keeps the collection.
  • Bulk capture does not add a session strip. Home still has recent scans.
  • Sealed additions use the existing sealedProductId contract. Unknown catalogue references stay rejected. Purchase prices need backend #599, which is merged, and do not require a schema change.

Local evidence ​

Before merge, a disposable integration branch combined app #870, #878, #880, #881, #882, #884, #888, #889, #894, #895, #896, #898, #899, #900, #901, #902, #903 and #904. That tree passed lint, TypeScript and 3,157 Jest tests (11 skipped). It was not pushed. It does not cover #906, #907, #910, #912, #913, #914, #915, #916 or #917.

Backend #599 passed 41 focused parser and SQL tests, including empty or unknown purchase costs, owner isolation and imported sealed identifiers, and a full API run of 1,609 tests with 22 skipped. Those figures are local. They are not GitHub Actions results.

No source PDF, account credential or private server configuration is stored in this repository.