simoleo89 fd1835ca5d Enable Zustand (proposal #5) + convert isCreatingRoom singleton
Phase 2 of the refactor plan in docs/ARCHITECTURE.md.

Install
- yarn add zustand (^5, matches React 19 peer requirement).

Wiring
- src/state/createNitroStore.ts: replaces the previous prototype
  (which threw on call) with a re-export of zustand's `create` under
  the project-local name `createNitroStore`. Comments document the
  convention (one store per domain, subscribe to slices not the whole
  store).

First migration target
- src/components/navigator/views/navigatorRoomCreatorStore.ts (new):
  a Zustand store with `isCreating: boolean` and `beginCreate()` —
  the latter latches the flag to true, dispatches an internal
  setTimeout to auto-reset after 5s, and replaces any in-flight timer
  on re-entry. The timer handle lives in the store's closure, so a
  remount of the view doesn't reset the lockout and StrictMode's
  double-mount no longer schedules two pending timers.
- src/components/navigator/views/NavigatorRoomCreatorView.tsx:
  removes the two module-level `let` variables that the React Compiler
  was flagging ("Writing to a variable defined outside a component is
  not allowed"). The component now reads `isCreating` via a slice
  subscription and calls `beginCreate()` from the click handler. The
  imperative guard (`if (isCreating) return`) uses
  `useRoomCreatorStore.getState()` so it reads the latest value
  synchronously without being a stale closure.
- Also cleans up `FC<{}>` -> `FC` while touching the file.

Verification
- yarn eslint on the three touched files: 1 pre-existing error
  (the `setCategory(categories[0].id)` set-state-in-effect on the
  categories hook, deliberately left as-is in Phase C — it's the
  "init from late-arriving async data" pattern; baseline matches).
- yarn tsc: clean.

Migration path (per docs/ARCHITECTURE.md)
- This is the smallest possible Zustand pilot (~30 lines), chosen
  because the let-singleton anti-pattern was the most obvious quick
  win and the React Compiler was already complaining about it.
- Next adoption targets (cross-feature UI state): the toolbar's
  active-window state (currently inside scattered Contexts), the
  notification center's open-state, the catalog's currentPage/selection
  state (after the god-hook split).

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%