Commit Graph

8 Commits

Author SHA1 Message Date
Alexa bb04782e11 chore(deps): clear Dependabot alerts — React 19, react-router 8, Vite 7
Bumps both frontend apps (site, admin-ui):
- vite 5.4 -> 7.3.6 (pulls esbuild 0.28, patched dev-server CVEs)
- @vitejs/plugin-react 4 -> 5 (babel 7.29.7)
- postcss 8.4 -> 8.5.25
- react-router-dom 6.27 -> react-router 8.3.0 (package renamed
  upstream in v8; imports swapped in src). Fixes the open-redirect
  advisories with no patched 6.x, plus the RSC CSRF advisory
  (GHSA-qwww-vcr4-c8h2) that only 8.3.0 patches.
- react/react-dom 18.3 -> 19.2 (required by react-router 8)

npm audit: 0 vulnerabilities in both apps. tsc + vite build clean.
2026-08-02 00:57:34 +03:00
Alexa 35459fdfdd Match server branding to logo 2026-06-15 21:03:00 +03:00
Alexa 64746cdaa2 feat: enhance player and photo functionalities with tagging, room details, and improved search 2026-06-07 10:58:10 +03:00
Alexa e18e167660 Enhance signup process: increase item fetch limit, update Join API to use password, and improve UI for account creation 2026-06-02 02:05:01 +03:00
Alexa 3480ca21fa signup codes: admin-issued invite codes + site /join redemption
While account creation is disabled, the only way in is now an
admin-issued single-use signup code (Discord-invite style), redeemed on
the public site's /join page.

Because the 2020 watch login is device-id-bound with no code field, the
flow captures it server-side instead: a new device refused at the
signups-disabled gate (PlatformLogin / account create) is stashed in a
PendingDevices table keyed by the real client IP (CF-Connecting-IP aware).
The /join page then shows the player the device their own client just
reported, they enter their code + username, and the account is minted
bound to that device — so the next launch logs straight in via the
existing device-id path. No watch changes.

- SignupCodeEntity (code, descriptor, optional expiry, redeemer) +
  PendingDeviceEntity; idempotent CREATE TABLE in DatabaseBootstrap so
  both providers pick them up without a new migration.
- SignupCodeService: generate / list / revoke / redeem + pending-device
  capture, single-use + expiry + revoke validation.
- Admin: GET/POST signup-codes + revoke endpoints and a Signup codes
  admin-ui page (generate with descriptor/expiry, status table, revoke).
- Public: anonymous /api/site/v1/join pending-devices + redeem, and a
  /join site page (+ header link).
- README documents the flow + the post-Initial table-create approach.
2026-05-31 20:00:35 +03:00
Alexa 18989fa6ec site: load images from own img.{apex}; add Bowling/Paintball art
The public site built room/profile image URLs against a hardcoded
img.rec.net fallback for any non-localhost host, so thumbnails loaded
from real Rec Room (Azure-fronted — hence the TiPMix / x-ms-routing-name
cookies the browser rejected) and DorkNet custom-room images could never
display. Derive the CDN apex from the live host instead (shared
imageApex helper in types.ts, used by profileImageUrl and Rooms.tsx) so
images come from this server's own img.{apex}.

Add the two RR-Original thumbnails as static CDN files in data/images so
img.{apex} serves them directly: image_BowlingAlley.png and
image_PaintballKeyArt.png (both real PNGs).
2026-05-31 15:47:12 +03:00
Alexa c5db16eeb0 Port march fixes: Vite relative-base + ResolveType internal + park AuthValuesInjector
Three carry-overs from the march branch (commits 80cc4ce, cd9d105) and
the launcher-side Vite build fix, all applicable to december without
modification:

1. Vite admin-ui + site configs switch from `base: '/'` to `base: './'`.
   Built index.html now emits `<script src="./assets/...">` instead of
   `/assets/...`, so the Easy Launcher's single-origin path-prefix mode
   (`https://<apex>/__dn/admin/`) resolves assets under the prefix
   instead of skipping it and 404'ing on the wrong server host.

2. Mod.ResolveType promoted from private to internal so PhotonPatches'
   and SavePatches' local FindGameType helpers can delegate to the
   broader assembly-scan fallback (was misssing IL2CPP-mangled type
   names like the literal "PhotonNetwork"). Both helpers collapse to
   one-line `=> Mod.ResolveType(name);`.

3. Parked AuthValuesInjector_Prefix into
   DorkNet.ClientMod/attic/AuthValuesInjector.cs.attic. In december
   this method was defined but **never wired to a harmony hook** in
   OnLateInitializeMelon, so it was effectively dead code. Removed
   the method + GetCurrentLockToken helper + Cfg.InjectAuthValues
   field + LoadConfig reader + log mention. The .cs.attic suffix
   keeps the SDK's auto-globber from compiling the parked file.
   Restore notes inside the attic file describe how to re-enable —
   for december the suggested hook is a postfix on
   PUNNetworkManager.EMGGKBALALH (mutate the AuthValues there)
   instead of march's NetworkingPeer.CallAuthenticate which never
   fires in IL2CPP.
2026-05-28 14:18:59 +03:00
Alexa 4edf25b2d5 Import december-2020-12-18 from private repo (scrubbed 2026-05-27)
Targets Rec Room 2020.12.18 client.

Re-import after adding:
- DorkNet.ClientMod/dorknet-clientmod.json.template — config schema
  the launcher's manifest-driven patcher renders into UserData/.
- tools/build-patcher-zip.ps1 — produces the dorknet-clientpatch-{key}.zip
  Release asset the launcher fetches.
- .github/workflows/release.yml — auto-publishes both Release assets
  on v1-december-* tag push.

Scrubbed via maintainer-side scrub-for-public.ps1: same drop rules as
the prior import, plus build-patcher-zip.ps1 added to the tools/
allow-list so it survives the scrub.
2026-05-27 01:04:12 +03:00