simoleo89 7218285583 Split usePollWidget into subscriptions + actions (proposal #4) + doc update
usePollWidget bundled two unrelated responsibilities:
- three useNitroEvent listeners that bridge RoomSessionPollEvent
  (OFFER / ERROR / CONTENT) onto the UI event bus via DispatchUiEvent
  — pure side-effects, zero local state, should mount once;
- three imperative actions (startPoll, rejectPoll, answerPoll) that
  every consumer wants, but which shouldn't re-register the listeners.

In practice the only consumer of usePollWidget was useWordQuizWidget,
which needed only `answerPoll` — but pulled in the three subscriptions
as a side effect every time the word-quiz widget rendered. That's the
classic god-hook anti-pattern this proposal targets.

Split (mirrors the doorbell pattern already in place):
- src/hooks/rooms/widgets/usePollSubscriptions.ts (new): the three
  bridge listeners, returns void. Should be mounted ONCE at the
  highest stable level above poll-aware UI (room widgets root). For
  now still mounted by the shim — follow-up PR can move it.
- src/hooks/rooms/widgets/usePollActions.ts (new): the three
  imperative actions. Defensive `?.` on roomSession so a poll action
  during a room transition no longer crashes.
- src/hooks/rooms/widgets/usePollWidget.ts: kept as a deprecated shim
  that composes both — preserves the old `{ startPoll, rejectPoll,
  answerPoll }` shape so existing consumers don't break.
- src/hooks/rooms/widgets/useWordQuizWidget.ts: migrated to import
  usePollActions directly. The word-quiz widget no longer registers
  poll subscriptions transitively — its render no longer has the side
  effect of subscribing to three renderer events.

Doc
- docs/ARCHITECTURE.md "What's already in place": records both god-hook
  splits (doorbell + poll), the now-enabled React Query and Zustand,
  and the test infrastructure. Removes the "not yet enabled" markers
  for #2 and #5.
- "How to pick the next refactor PR": rewritten to reflect that the
  foundations are done. New priority order:
    1. migrate useCatalog's read-only fetches to useNitroQuery,
    2. hoist usePollSubscriptions to room-session level,
    3. split useCatalog along the doorbell/poll lines,
    4. broaden Vitest coverage,
    5. per-tab WiredCreatorToolsView split.

Verification
- yarn eslint on the touched files: 0 errors / 0 warnings.
- yarn test: 22/22 passing, 2 files, ~1.0s.
- Existing useWordQuizWidget consumers (RoomWidgetsView ->
  WordQuizWidgetView) unaffected — they import from the barrel which
  still re-exports the same shape.

https://claude.ai/code/session_01GrR87LAqnAEyKG2ZbmQt5Q
2026-05-11 16:31:53 +00:00
🆙 Init V3
2026-01-31 09:10:52 +01:00
2026-05-07 10:21:48 +02:00
🆙 Init V3
2026-01-31 09:10:52 +01:00
🆙 Init V3
2026-01-31 09:10:52 +01:00
2026-04-08 14:06:25 +02:00
2026-04-08 14:06:25 +02:00

v2.2.0 -Nitro V3 !! Use at Own Risk as it is still in Beta !!

Prerequisites

  • Git
  • NodeJS >= 18
    • If using NodeJS < 18 remove --openssl-legacy-provider from the package.json scripts
  • Yarn npm i yarn -g

Installation

  • First you should open terminal and navigate to the folder where you want to clone Nitro and Nitro-Renderer
  • Clone Nitro (Expl. C:\Github)
    • git clone https://github.com/duckietm/Nitro-V3.git <== For now switch to Dev-RendererV2
    • git clone https://github.com/duckietm/Nitro_Render_V3.git
    • Install the dependencies for the renderer : cd C:\Github\Nitro_Render_V3
      • yarn install
    • Now we will create a Link for the Nitro Renderer : yarn link This will give you a link address yarn link "@nitrots/nitro-renderer"
    • Install the dependencies for Cool UI : cd C:\Github\Nitro-V3
    • yarn install
    • yarn link "@nitrots/nitro-renderer" <== This will link the renderer in the project
  • Rename a few files
    • Copy public/configuration/renderer-config.example to public/configuration/renderer-config.json
    • Copy public/configuration/ui-config.example to public/configuration/ui-config.json
    • Copy public/configuration/client-mode.example to public/configuration/client-mode.json
    • Set your links
    • Open public/configuration/renderer-config.json
      • Update socket.url, asset.url, image.library.url, & hof.furni.url
    • Open public/configuration/ui-config.json
      • Update camera.url, thumbnails.url, url.prefix, habbopages.url
    • yarn build <== the final step to build the DIST folder this is where your browser needs to point / or upload this to your /client if you do the compile on a other machine (preferd)
    • You can override any variable by passing it to NitroConfig in the index.html

Usage

Development

Run Nitro in development mode when you are editing the files, this way you can see the changes in your browser instantly

yarn start

Production

To build a production version of Nitro just run the following command

yarn build:prod
  • A dist folder will be generated, these are the files that must be uploaded to your webserver
  • Consult your CMS documentation for compatibility with Nitro and how to add the production files
S
Description
No description provided
Readme 33 MiB
Languages
TypeScript 88.8%
CSS 8.3%
JavaScript 2.4%
HTML 0.5%