126 Commits

Author SHA1 Message Date
simoleo89 0fc38a1c71 Fix self-referential ConstructorParameters in two Wired composers
WiredRoomSettingsRequestComposer and WiredUserVariablesRequestComposer
declared 'implements IMessageComposer<ConstructorParameters<typeof Self>>'
but neither defines a constructor, so ConstructorParameters resolved
to 'any[]' and getMessageArray() returning [] (any[]) failed the
narrower base-type signature () => [].

Both composers send zero payload; type as IMessageComposer<[]>
directly + annotate the return type.
2026-05-11 21:09:37 +02:00
simoleo89 c37171a61c TS 5.7+ ArrayBuffer drift: cast where ArrayBufferLike leaked
TypeScript 5.7 split ArrayBuffer / SharedArrayBuffer at the type level
(ArrayBuffer now exposes resizable/transfer/detached etc; SharedArrayBuffer
doesn't), and parametrized the typed-array constructors so plain
Uint8Array became Uint8Array<ArrayBufferLike>.

The renderer never uses SharedArrayBuffer, so this is type-level only —
narrowing back to ArrayBuffer at the boundaries:

- BinaryReader.readBytes() / .toArrayBuffer() return the underlying
  DataView buffer; cast to ArrayBuffer.
- BinaryWriter.getBuffer() same shape.
- WsSessionCrypto.randomNonce() now returns Uint8Array<ArrayBuffer>
  (it's always backed by a plain ArrayBuffer); aesGcmEncrypt/Decrypt
  nonce parameter retyped accordingly so SubtleCrypto.encrypt accepts
  it as BufferSource.
- ArrayBufferToBase64 now accepts Uint8Array | ArrayBufferLike directly
  (pako/inflate hands back Uint8Array<ArrayBuffer> which the old
  ArrayBuffer-only signature rejected).
2026-05-11 21:09:22 +02:00
simoleo89 ddb7222b66 chore: bump TypeScript pins to ^6.0.3 across all 12 workspaces + thumbmarkjs 1.9 + add CLAUDE.md
Each workspace package was still pinning `typescript: ~5.5.x` or
`~5.8.2` in its own devDependencies even though the root bumped to 6.0.3
in 60b1143. The pins were dead (yarn 1 hoists from root) but they're
misleading when reading a single package.json. Bring them all to
`^6.0.3` to match the root.

Other:
- @thumbmarkjs/thumbmarkjs 1.8.1 → 1.9.0 (root + communication package)
- yarn.lock regenerated from a clean install (vitest 4 hoisting was
  flaking on the patch vite bump; reverted vite to ^8.0.10)

Adds CLAUDE.md at the repo root: short project context for future
sessions — stack, the 12-workspace layout, the React-friendly v2.1.0
additions (`subscribe()`, `subscribeMessage()`, snapshot getters), build
scripts, and known gotchas (`SessionDataManager.getUserData` does NOT
exist; sendChat* expects 3 args; dispatchEvent is sync).
2026-05-10 21:29:50 +02:00
simoleo89 87cf47847c feat(events,session): add React-friendly subscribe APIs and snapshot getters
Adds backwards-compatible primitives needed to consume the renderer from
React 19 hooks (useSyncExternalStore, use(), TanStack Query) without
re-architecting the event bus.

- EventDispatcher.subscribe(type, cb): () => void — unsubscriber-returning
  wrapper matching the useSyncExternalStore subscribe signature.
- CommunicationManager.subscribeMessage(eventCtor, handler): () => void —
  packet-stream equivalent.
- SessionDataManager.getUserDataSnapshot() and
  RoomSessionManager.getActiveRoomSessionSnapshot() — referentially-stable
  read-only views invalidated through new SESSION_DATA_UPDATED and
  ROOM_SESSION_UPDATED events.

All additive; existing addEventListener/removeEventListener / IRoomSession
APIs are unchanged. Bumps renderer to 2.1.0.
2026-05-10 19:16:32 +02:00
Lorenzune 5fc4564467 Merge remote-tracking branch 'duckie/main' into merge-duckie-main-2026-05-06
# Conflicts:
#	packages/communication/src/messages/parser/room/unit/RoomUnitInfoParser.ts
#	packages/communication/src/messages/parser/user/data/UserProfileParser.ts
#	packages/events/src/session/RoomSessionUserFigureUpdateEvent.ts
#	packages/session/src/handler/RoomUsersHandler.ts
2026-05-06 04:23:13 +02:00
duckietm 7a6092ed7e 🆙 Small update 2026-05-04 15:28:19 +02:00
duckietm 2f7b80e894 🆕 Card Background 2026-05-04 08:44:40 +02:00
duckietm d34f82c716 🆙 Bump renderer to V8.18.1 and replace clientjs with a better solution 2026-04-28 09:14:49 +02:00
Lorenzune 9abec36f02 Merge remote-tracking branch 'duckie/main' into duckie-live-merge-2026-04-21 2026-04-25 13:34:15 +02:00
duckietm 455b75e41d 🆙 CryptoV2 2026-04-24 16:24:02 +02:00
duckietm 7957a8f7f3 🆕 Handshake on connect 2026-04-23 15:57:24 +02:00
Lorenzune 7fa8eff751 Merge latest duckie renderer main 2026-04-21 11:53:28 +02:00
Lorenzune c37c7005fc Fix prefix composer imports after duckie merge 2026-04-21 11:23:38 +02:00
Lorenzune 1dede2c098 Merge remote-tracking branch 'duckie-temp/main' into duckie-merge-2026-04-21
# Conflicts:
#	packages/communication/src/NitroMessages.ts
#	packages/communication/src/messages/incoming/IncomingHeader.ts
#	packages/communication/src/messages/outgoing/OutgoingHeader.ts
2026-04-21 11:20:02 +02:00
Lorenzune 7bf552824f Sync renderer safety push 2026-04-21 08:57:35 +02:00
duckietm 078bba0780 🆙 Make have_offer read from emu 2026-04-17 14:24:15 +02:00
duckietm 4b598fc717 Revert "Merge pull request #48 from simoleo89/feature/catalog-admin-composers"
This reverts commit 67c8dd42cd, reversing
changes made to bc6bd8764d.
2026-04-17 14:03:47 +02:00
DuckieTM 67c8dd42cd Merge pull request #48 from simoleo89/feature/catalog-admin-composers
Feature/catalog admin composers
2026-04-17 13:56:46 +02:00
duckietm bc6bd8764d 🆙 Fix Catalog Editor 2026-04-17 13:53:07 +02:00
duckietm bbedf2e5fe 🆙 Merge Dev to Prod 2026-04-14 11:57:23 +02:00
Life 1e3d6a335c Merge branch 'Dev' into feature/catalog-admin-composers 2026-04-13 17:51:16 +02:00
DuckieTM d2a36940d5 Merge branch 'Dev' into feat/wired-fixes-apr08 2026-04-13 17:01:56 +02:00
Life 04d172c735 feat: add catalog admin composers for page images and icon
- CatalogAdminSavePageImagesComposer (header 10060): pageId, headerImage, teaserImage
- CatalogAdminSavePageIconComposer (header 10061): pageId, iconId
- Registered in OutgoingHeader, catalog index, and NitroMessages
- Server handler required in Arcturus to process these packets
2026-04-10 22:22:36 +02:00
duckietm 37f817a098 🆙 Added Youtube Brtoadcast 2026-04-10 11:22:45 +02:00
duckietm a92f2f0603 🆙 Youtube 2026-04-09 15:36:43 +02:00
duckietm 85d3422e86 🆙 Renderer Logic Youtube Broadcast 2026-04-09 11:51:32 +02:00
duckietm 79d51246ec 🆙 Added username to send badge 2026-04-08 14:08:00 +02:00
Lorenzune fd40a74396 feat: add builders club communication support 2026-04-07 14:40:51 +02:00
Lorenzune 24f1d1278a feat: add room control rendering support 2026-04-03 12:09:16 +02:00
Lorenzune cdc53833ed Merge remote-tracking branch 'origin/main' into feature/checkpoint-20260403 2026-04-03 05:25:28 +02:00
Lorenzune c75f1b1258 chore: checkpoint current work 2026-04-03 05:22:24 +02:00
Lorenzune 190f02ebbe feat: add wired monitor and variable protocol support 2026-04-02 04:44:04 +02:00
duckietm fd74fd323b 🆙 Some minor mem tweaks 2026-03-31 16:03:21 +02:00
Lorenzune 52ed78e528 Merge remote-tracking branch 'origin/main' into feature/pr-20260327 2026-03-31 09:13:54 +02:00
DuckieTM a1a2d05cb4 Merge pull request #37 from Lorenzune/feature/pr-20260327
Expose room, user and furni metadata for wired tools
2026-03-31 09:02:22 +02:00
DuckieTM 50b9e0a334 Merge pull request #32 from simoleo89/furnieditor
feat: FurniEditor WebSocket packets (10040-10045)
2026-03-30 11:13:09 +02:00
DuckieTM e6e9dc46db 🆕 Groups Forum 2026-03-29 15:00:47 +02:00
DuckieTM 1fcd10589d Start the forum framework 2026-03-28 08:38:48 +01:00
Life 594b9c28a0 feat: FurniEditor WebSocket packets (10040-10045) — composers, parsers, events 2026-03-27 19:54:21 +01:00
Lorenzune 99c4acea38 Expose room, user and furni metadata for wired tools
- parse extra room snapshot data such as hotel time, room item limit and group context

- expose richer furni metadata including flags, dimensions and teleport targets

- expose richer user metadata including room-entry fields and ids needed by inspection tools

- keep session and room engine models aligned with the new wired monitor/inspection flow
2026-03-27 09:37:14 +01:00
Lorenzune 075b0f722d Support NFT avatar editor category data 2026-03-26 05:24:53 +01:00
Lorenzune 296df767ba Improve wired movement rendering and follow sync 2026-03-25 03:26:27 +01:00
DuckieTM 338bb62835 ㊙️ Security update
- Parser bounds: Added Math.min() caps on all loop counts: offers (1000), products (200), front page items (100), localization images/texts (100), node children (500)

- Recursion depth limit: Added static depth counter to NodeData with max depth of 20 to prevent stack overflow from deeply nested catalog trees
2026-03-23 22:01:42 +01:00
duckietm 87d825746c 🆕 Added New catalogue page 2026-03-23 15:00:55 +01:00
duckietm 4701c0b153 🆙 Automatic resume / reconnect when conection was lost 2026-03-23 13:24:32 +01:00
duckietm 531ea1c33d Revert "Merge pull request #16 from simoleo89/furnisettingeditor-pr"
This reverts commit 2e90578976, reversing
changes made to 749ec76177.
2026-03-23 11:39:27 +01:00
DuckieTM 30fb98cd8c Merge branch 'main' into furnisettingeditor-pr 2026-03-23 11:15:29 +01:00
Life 35f55d5add feat(furni-editor): add WebSocket packets for furniture editor
Add composers, parsers, and events for the Furni Editor feature
communicating via WebSocket with the Arcturus emulator.

Packet handlers:
- Search (10040/10041): search furniture by name, ID, or type
- Detail (10042/10043): get/receive full furniture details by sprite ID
- Update (10044): save furniture property changes
- Create (10045): create new furniture items
- Delete (10046): delete furniture items
- Interactions (10047/10048): list available interaction types
- Result (10049): confirmation response for save/delete/create

New files:
- 7 outgoing composers (Search, Detail, BySprite, Interactions, Update, Create, Delete)
- 4 incoming events (Search, Detail, Interactions, Result)
- 4 parsers (Search, Detail, Interactions, Result)
- Updated IncomingHeader, OutgoingHeader, NitroMessages, and barrel exports
2026-03-22 18:04:27 +01:00
Lorenzune 38a79d4f80 feat: support wired movement packets and room sync 2026-03-22 16:48:51 +01:00
Lorenzune 2f3e8c41fe Fix click user composer registration 2026-03-21 16:13:44 +01:00