Commit Graph

100 Commits

Author SHA1 Message Date
Alexa 50e03af296 feat: Add endpoint for ad carousel items returning an empty banner 2026-06-26 19:25:25 +03:00
Alexa 159ca2c271 Refactor code structure for improved readability and maintainability 2026-06-25 23:23:09 +03:00
Alexa 5af3fa8fc5 feat: Add ProtoDumper for runtime Google.Protobuf schema extraction and decoding 2026-06-25 20:21:56 +03:00
Alexa 312ecbbdc8 feat: Add account privacy settings endpoint
- Implemented new endpoints for retrieving account privacy settings.
- Added fields for privacy preferences such as profile visibility, online status, and activity visibility.

feat: Extend play menu tags functionality

- Updated PlayMenuTagsRequest to include TrendingTags.
- Modified SetPlayMenuTags to handle trending tags.
- Enhanced logging to include trending tags.

fix: Increase maximum archive size for room zip imports

- Updated MaxArchiveBytes from 12GB to 25GB in RoomZipImportController.

feat: Improve CDN image handling

- Added local image path resolution for room images.
- Implemented lazy loading of room image aliases from JSON file.

feat: Enhance match player presence resolution

- Updated ResolveDataBlobForPresenceAsync to consider sub-room IDs and private instance status.

feat: Extend RoomEntity with new properties

- Added AllowNewUsers, MinLevel, MaxPlayerCalculationMode, LoadScreensJson, PromoImagesJson, and PromoExternalContentJson fields.

feat: Update database schema for new room properties

- Added new columns to the Rooms table for AllowNewUsers, MinLevel, MaxPlayerCalculationMode, LoadScreensJson, PromoImagesJson, and PromoExternalContentJson.

feat: Implement platform notifications controller

- Created PlatformNotificationsController for managing user notification preferences.
- Added endpoints for retrieving and setting notification preferences and categories.
2026-06-25 01:23:57 +03:00
Alexa 1d4777e3da feat: Enhance RoomZipImportController to support Unity asset bundles
- Added support for .assetbundle files in RoomZipImportController.
- Introduced new properties in RoomSceneEntity for handling Studio asset metadata.
- Updated ZipImport method to handle asset bundles during bulk imports.
- Enhanced CdnController to serve Unity asset bundles via a new route.
- Modified GoToController to include Unity asset ID in matchmaking responses.
- Updated database schema to accommodate new fields related to Studio asset bundles.
- Improved URL coverage documentation to reflect new routes for asset bundles.
2026-06-24 16:11:21 +03:00
Alexa 38fbd0faf1 Refactor room data blob handling and permissions
- Updated the RoomsController to utilize synthetic CDN keys for data blobs.
- Introduced methods for determining current or synthetic data blob names.
- Adjusted room role permissions to align with new game role definitions.
- Enhanced the SanitizeController with a new endpoint for purity checks.
- Modified Match and PlayerPresence services to handle deferred presence commits.
- Improved RoomDataBlobService to support new game role and tool tag settings.
- Added support for boot dorm grace period in PlayerPresenceService.
- Updated protobuf definitions to reflect new room role and game role structures.

You are now able to go into dorm and the rec center!
2026-06-24 12:02:13 +03:00
Alexa 02f7bc386d feat: Enhance UgcPurchasablesController to handle bulk requests with object arrays
- Updated Bulk method to parse incoming JSON object arrays for UGC item IDs.
- Introduced ReadBulkIdsAsync to handle both object arrays and flat GUID lists.
- Added synthetic placeholder responses for missing UGC items to prevent client errors.

feat: Implement MatchmakeRoom and MatchmakeSubRoom endpoints in GoToController

- Added MatchmakeRoom and MatchmakeSubRoom methods to facilitate joining public and sub-rooms by numeric ID.
- Enhanced ApplySubRoomMutation to ensure proper state transitions for sub-rooms.
- Improved logging for matchmaking actions.

fix: Refactor PlayerSettingsController to handle database save exceptions

- Introduced SaveSettingsChangesAsync to manage DbUpdateException for busy SQLite scenarios.
- Updated methods to call SaveSettingsChangesAsync instead of direct SaveChangesAsync.

chore: Update URL coverage documentation for new matchmaking endpoints

- Documented new MatchmakeRoom and MatchmakeSubRoom endpoints in url-coverage.md.

chore: Add default room data file for room loading

- Included default_room.room to serve as a fallback for missing room data.

fix: Improve SQLite concurrency handling in DatabaseBootstrap

- Configured SQLite to use WAL mode and set a busy timeout for better concurrency.

chore: Create SqliteErrors utility for handling SQLite exceptions

- Added SqliteErrors class to encapsulate logic for detecting busy SQLite exceptions.

refactor: Update RoomDataBlobService to serve default room data

- Modified GetDefaultBlob to load and serve a default room blob with proper role data.
2026-06-23 20:54:29 +03:00
Alexa 27e5e0064c feat: Enhance API endpoints with new methods, improved response structures, and added Photon access token endpoint 2026-06-23 12:42:24 +03:00
Alexa 4034449a6d Refactor configuration endpoints and update client installation scripts
- Removed Photon configuration fields from dorknet-clientmod.json.template.
- Added new backtrace and Azure Speech configuration endpoints in ConfigController.
- Updated response format for IsCreationEnabled and IsRenderingEnabled endpoints in CustomAvatarItemsController.
- Enhanced InfluencerPartnerProgramController to include additional player properties.
- Implemented RoomKeepsakes endpoint in KeepsakesController to retrieve keepsakes by room ID.
- Modified ReportsController to standardize response for Hile reporting.
- Added PlayerDataForMe and RoomsRequiring endpoints in RoomsController for enhanced player data retrieval.
- Introduced new dorm matchmaking methods in MatchController for player session management.
- Updated MatchPlayerController to handle exclusive login functionality.
- Revised install scripts to reflect changes in Photon AppId handling and patching process.
- Added new patch-client.ps1 script for applying static byte patches to the Rec Room client.
2026-06-23 10:42:25 +03:00
Alexa df73507ee9 feat: Enhance API endpoints with pagination and new subscription details for players 2026-06-23 00:21:58 +03:00
Alexa 70980bf3b6 feat: Add new API controllers for progression events, room consumables, currencies, earnings distributions, screen share reports, subscription seasons, and UGC purchasables
- Implemented ProgressionEventsController to handle progression event retrieval and active events.
- Created RoomConsumablesController for listing and purchasing room consumables.
- Developed RoomCurrenciesController for managing room currencies, including creation, updates, and balance retrieval.
- Added RoomEarningsDistributionsController to fetch earnings distribution data for rooms.
- Introduced ScreenShareReportsController for reporting screen share incidents.
- Established SubscriptionSeasonsController to provide current subscription season details and rewards.
- Launched UgcPurchasablesController for managing user-generated content purchasables, including bulk operations.
- Added new data entities for customization and room economy, including custom avatar items, room currencies, and UGC purchasables.
2026-06-22 16:08:23 +03:00
Alexa fa7486915b Fix notification URLs in HTTP deployments
Fixes #19 by making the December server advertise notification and service URLs with the configured deployment scheme.
2026-06-22 12:09:01 +03:00
Alexa 44f53e80b8 Split remaining service routes 2026-06-15 20:21:05 +03:00
Alexa a249a50952 Fix personal dorm blob recovery 2026-06-15 00:02:48 +03:00
Alexa 243a61ada1 feat: Update presence data handling and notification structure to use NameWire property 2026-06-14 23:35:38 +03:00
Alexa 02b26c872d feat: Update room restoration logic to use consistent timestamp and response structure 2026-06-14 23:18:04 +03:00
Alexa f9b16b12b1 feat: Update response structure in RoomsController to include success status and error message 2026-06-14 23:05:15 +03:00
Alexa 362509ef1b feat: Enhance SaveDataCore method to support wrapCreateModifyResponse parameter 2026-06-14 22:58:28 +03:00
Alexa 4ef463f664 Add splash screen SVG graphic for Admin Mobile application 2026-06-14 22:39:23 +03:00
Alexa 482c73e1bc feat: Implement adjustable room capacity and quest team size
- Added MaxCapacity property to RoomEntity and updated related controllers to utilize it.
- Modified RoomsController to set MaxPlayers based on room's MaxCapacity.
- Introduced QuestTeamSize class to dynamically adjust quest party sizes beyond the default limit.
- Updated DevMenu to include options for debugging and managing room settings.
- Created UI elements for adjusting MaxCapacity in the admin interface.
- Added configuration file for DevMenu with default settings.
2026-06-08 01:27:30 +03:00
Alexa feccd439d4 feat: refactor equipment payload methods to unify handling and remove gift box specific logic 2026-06-07 10:39:08 +03:00
Alexa 657402b613 feat: add endpoints to unlock all items for players, including cosmetics and hair dyes 2026-06-06 23:47:49 +03:00
Alexa 73d77dffb6 feat: enhance inventory schema to support longer ItemSlug and add GiftBox equipment payload handling 2026-06-06 22:50:42 +03:00
Alexa 92bd22d164 feat: update PrivateInstanceService to include baseName in instance updates 2026-06-06 22:15:37 +03:00
Alexa eb2fb0e1f1 Enhance room role management: refactor role granting logic, add role invitation endpoints, and improve role handling in RoomsController and AdminController 2026-06-06 20:33:08 +03:00
Alexa 31c53b9070 Refactor presence tracking: replace OnlinePresenceService with PlayerPresenceService for improved activity management and streamline message handling logic 2026-06-06 00:37:19 +03:00
Alexa fe1c2c53e3 Refactor leaderboard logic: incorporate room context into leaderboard stats and channel metadata handling 2026-06-05 23:55:26 +03:00
Alexa 3c0dd64293 Refactor ImagesController: enhance image metadata parsing and update public visibility logic for uploaded images 2026-06-05 20:57:51 +03:00
Alexa e2f169cdea Refactor RelationshipsController: merge relationship rows for accurate status representation and enhance gifting functionality in AdminController and Gift component 2026-06-04 15:55:59 +03:00
Alexa 4d14ede3dc Enhance global friends functionality: suppress auto-generated placeholder accounts in synthesized friend lists and update documentation for clarity. 2026-06-04 14:53:12 +03:00
Alexa 8dfe4c8d63 Implement "Everyone is friends" toggle: add global friends functionality with server settings and UI integration 2026-06-04 13:40:15 +03:00
Alexa f0d24d0858 Refactor GoToController: consolidate message sending logic for party invites and enhance handling of additional player IDs 2026-06-03 13:13:10 +03:00
Alexa 0011ae1039 Enhance room bulk lookup: add support for ID-based queries and improve result handling; refactor GoToController for presence management and logging; update join timeout service to handle presence deferral; add Crescendo image asset. 2026-06-03 10:53:44 +03:00
Alexa 7e765bb536 Add share cam permission for public rooms: enable desktop/share screen access in public rooms without host/mod/co-owner requirement 2026-06-03 02:46:04 +03:00
Alexa 78fcec7263 Add v2 API endpoints for inventions and messages: implement new routes for retrieving user inventions and sending messages to enhance API versioning support 2026-06-03 01:38:09 +03:00
Alexa 93833c8b93 Enhance room ownership validation: allow co-owners to access rooms; refactor accessibility endpoint to support multiple content types and improve request handling 2026-06-03 01:13:36 +03:00
Alexa 810ba0992c Add Rec Center doors management: implement endpoints for retrieving and updating door configurations; enhance database schema and UI integration 2026-06-02 17:08:42 +03:00
Alexa 218d92f856 Implement Play Menu Tags management: add endpoints for retrieving and updating tags; enhance database schema and UI integration 2026-06-02 16:46:28 +03:00
Alexa f1a616e9c1 Refactor room data handling: standardize timestamp usage with savedAt variable; ensure editable persistence version for room role data 2026-06-02 15:51:11 +03:00
Alexa 143d3a9a07 Refactor room role permissions: enhance role checks for saving and overlaying data; introduce editable role data for RRO rooms 2026-06-02 15:40:53 +03:00
Alexa 24c8a920e4 Refactor moderation notifications: replace NotifyAsync with KickPlayerAsync for player kicks in InGameModerationController and AdminController; update NotificationService to streamline moderation kick payloads. 2026-06-02 02:48:04 +03:00
Alexa 96eb368d41 Refactor AvatarGiftsController: change ToWire method to public for external access; update AdminController to use ToWire for gift notifications 2026-06-02 02:39:29 +03:00
Alexa e404ed8352 Fix live room and account updates 2026-06-01 20:55:43 +03:00
Alexa 3d089f6e32 admin: change a player's username from the Players panel
Add POST players/{id}/username + a Username field in the player detail's
Profile tab. Changes only the unique @handle (not the display name) and
rejects a collision outright rather than auto-suffixing, so the admin
gets the exact handle they typed. Same 2-24 char letters/digits/_/-
rule as the account API; logged to the audit trail as old -> new.
2026-05-31 20:52:11 +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 fad8d81961 inventions: resolve real creator ids for a room (creatorIds)
api/inventions/v1/creatorIds was a stub returning an empty list, so the
watch's GetCreatorIdsOfInventionsInRoom never learned which creators it
must request invention permissions for before spawning a room's
invention-based geometry. Resolve the real set from
InventionEntity.CreationRoomId and factor the room->inventions lookup the
/room endpoint already used into a shared ResolveRoomInventionsAsync
helper (direct matches unioned with the imported cluster). ByRoom now
calls the helper too. creatorIds returns List<int> of distinct creator
account ids.
2026-05-31 15:32:16 +03:00
Alexa b8f1ab91fe Fixed dorm room button 2026-05-29 23:11:13 +03:00
Alexa f331530974 avatar: raise unlocked-items defaults so new purchases survive relog
/api/avatar/v4/items truncated owned items by maxItems (was 30) and
maxPerSlot (was 4). The per-slot cap silently dropped any newly-bought
wardrobe item once a slot held 4+ entries — the 'I bought it but it's
gone after relog' symptom. Defaults raised to 100 / 20.

Clamp ranges left at [1,120] / [1,20] (prior maintainer note locked
these to watch render-budget testing — raising the ceiling without
retesting risks BrowsableAvatarItem / DynamicAvatarItemImposter
thrash inside the watch's wardrobe drawer).

Sort tiebreaker added: ThenByDescending(OriginalIndex) so when
truncation has to drop entries, it drops the OLDEST (starter seed)
items rather than the just-purchased one. GrantWardrobeAsync and
the gift-consume path both append new GUIDs to the end of
InventoryJson, so list index == purchase order.
2026-05-27 10:43:44 +03:00
Alexa f5061f014b play: drop playlists from Hot; raise take 12 -> 100
/roomserver/roomsandplaylists/hot and the path-style sibling
/roomserver/hot_roomsandplaylists/{tags} now return rooms-only — the
watch's Playlists tab fetches via /api/curatedroomplaylists +
/roomserver/playlists/{id} independently (verified
FPNPBJBCMKB.txt:053, EJDCNGBEICB.txt:1659/2192), so dropping playlists
from the Hot endpoint just stops mixing them into the rooms tab.

Wire shape unchanged: HJKAOMOICJG reads TotalResults + Results
(HJKAOMOICJG.txt:039/045) and the MKAMHOIHOJK factory discriminates
on the roomId key (MKAMHOIHOJK.txt:014), accepting a Results list
that's 100% room entries.

Take cap raised from 12 to 100 — the old limit only surfaced the
dozen highest-HotScore rooms, hiding the rest of the public catalog.
2026-05-27 10:43:31 +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