Commit Graph

415 Commits

Author SHA1 Message Date
duckietm 53b208e7b0 🆙 IT ==> ENG and Remove the base path (this should a user do manual) 2026-05-19 10:28:09 +02:00
DuckieTM 76fb571efe Merge pull request #134 from medievalshell/Dev
feat: interactive JSON / JSON5 mode selector at build time
2026-05-19 09:55:46 +02:00
medievalshell 8200132b1f feat(scripts): add split-gamedata.mjs CLI splitter
Companion tool for the split-aware gamedata loader added in
@nitrots/utils. Takes a legacy single-file gamedata JSON/JSON5 and
produces the directory layout the loader expects:

  <out>/
    manifest.json5          (root manifest, tier order)
    core/
      manifest.json5        (file list in load order)
      <part>.json5 ...

The tool auto-detects the gamedata type from top-level keys and applies
the right split strategy:

- EffectMap            -> one file per effect type (dance, fx, ...)
- FigureData           -> palettes + one file per setType
- FigureMap            -> chunked libraries (default 500/file)
- FurnitureData        -> floor/wall, chunks of furnitype (default 300)
- HabboAvatarActions   -> grouped by state
- ProductData          -> chunked products (default 500)
- ExternalTexts/UITexts-> grouped by key prefix

Only the core/ tier is generated; custom/ and seasonal/ are operator-
owned and the loader auto-discovers them when their manifest.json5
exists.

Flags: --input, --output, --type, --chunk-size, --json (legacy emit),
--force, --help.

README extended with a 'Splitting gamedata' section covering the layout,
the strategy table, CLI usage and the renderer-config migration step.
2026-05-18 21:20:13 +02:00
medievalshell 0028b03b6a feat: cross-platform installer with JSON-mode integration
Adds install.bat / install.sh / install.mjs at the project root for a
one-shot setup: prereqs check, renderer clone & link, dependency install,
config copy, JSON parser mode selection, URL prompt with validation, and
the production build.

- install.bat / install.sh: thin OS-specific wrappers around install.mjs
- install.mjs: 9-step installer with --help, --non-interactive,
  --skip-build/clone/link and per-URL override flags
- new step 6 'Choose JSON parsing mode': prompts the operator (json5
  recommended) or accepts --json-mode=json5|legacy|auto in CI; writes
  .nitro-build.json so the final 'yarn build' picks it up directly
- summary now reports the selected JSON mode and its source
- .gitattributes: force LF on install.sh / install.mjs so the shebang
  stays valid on Linux/macOS after a Windows checkout
- install.sh marked executable in the index (100755)
- README: new 'Quick install' section with interactive and CI usage,
  plus a complete --non-interactive example
2026-05-18 20:54:29 +02:00
medievalshell 2fded7bc79 feat: interactive JSON / JSON5 mode selector at build time
Lets the operator pick between strict JSON (legacy) and JSON5 for every
configuration file consumed by Nitro and the renderer.

- scripts/configure-json.mjs: interactive prompt (JSON5 recommended),
  with --if-missing and --non-interactive flags for CI use
- package.json: yarn configure / prestart / prebuild hooks
- vite.config.mjs: reads .nitro-build.json (or NITRO_JSON_MODE env) and
  injects the compile-time constant __NITRO_JSON_MODE__ via define
- src/bootstrap.ts: routes client-mode.json parsing through the
  selected mode
- .gitignore: ignore the per-deployment .nitro-build.json
- README: full usage and override section
- public/configuration assets regenerated by the updated prebuild flow

The renderer side (@nitrots/utils JsonParser) is updated in the
companion Nitro_Render_V3 commit on the dev branch.
2026-05-18 20:38:26 +02:00
duckietm b2318b9e7c 🆕 Added support for JSON5 2026-05-18 16:13:09 +02:00
DuckieTM e209146f47 🆙 Update About screen (needs a emu change as well) 2026-05-17 09:58:38 +02:00
DuckieTM 54884835b1 Merge pull request #128 from RemcoEpicnabbo/dev
Simplify offer selection and activation logic
2026-05-15 14:33:17 +02:00
Remco Epicnabbo 35385ffdd0 Simplify offer selection and activation logic
Always call applySelectedOffer(offer) and consolidate activation into a single conditional. Removed the separate non-lazy branch and now only call offer.activate() when offer.isLazy && offer.offerId > -1, reducing duplicated logic and simplifying the flow.
2026-05-15 13:55:56 +02:00
DuckieTM 123c2fca7b Merge pull request #127 from duckietm/Dev
Dev
2026-05-15 13:16:04 +02:00
duckietm 0199437a82 🆙 Small fix login screen 2026-05-15 13:15:30 +02:00
duckietm 8b54a3ab92 🆙 Small fix when client is other paths like /client 2026-05-15 10:34:15 +02:00
DuckieTM 52b0c90982 Merge pull request #126 from duckietm/Dev
Dev
2026-05-12 10:54:23 +02:00
duckietm 53f41cdbe9 🆙 Fix wear badge in popup 2026-05-12 10:54:01 +02:00
duckietm cdf8d929e1 🆕 Added Reset password / Email and chenge username in user settings 2026-05-11 18:07:54 +02:00
DuckieTM 2137d23ac0 Merge pull request #125 from duckietm/Dev
🆙 Fixed the commands
2026-05-08 16:45:02 +02:00
duckietm d88defb4a5 🆙 Fixed the commands 2026-05-08 16:44:45 +02:00
DuckieTM 98e250e49a Merge pull request #124 from duckietm/Dev
Dev
2026-05-08 11:58:48 +02:00
duckietm 6124610736 🆙 Small fix Avatar loading & moved news to path wich you can enter
The example data has been provided in /Content-Gamedata so you could place it in /gamadata or anything you like.
Do not forget the render-config.json to update :

"login.health.method": "GET",
"login.news.url": "${asset.url}/news/news.json",
2026-05-08 11:58:32 +02:00
DuckieTM fa3bb7b9ac Merge pull request #123 from Lorenzune/merge-duckie-main-2026-05-06
Refine mobile avatar widgets and login flow
2026-05-08 07:45:28 +02:00
DuckieTM 71725b7f67 Merge branch 'Dev' into merge-duckie-main-2026-05-06 2026-05-08 07:45:17 +02:00
Lorenzune 57b83c1097 Refine mobile avatar widgets and login flow 2026-05-07 21:19:15 +02:00
DuckieTM 83ee05957d 🆙 Fix font colors in chat 2026-05-07 20:49:50 +02:00
DuckieTM 247ada2fb5 Merge pull request #121 from duckietm/Dev
🆙 Fix when using : --base=/client/ in package.json
2026-05-07 15:17:12 +02:00
duckietm 3d88ec8cfc 🆙 Fix when using : --base=/client/ in package.json 2026-05-07 15:16:54 +02:00
DuckieTM 72fea20e0b Merge pull request #120 from duckietm/Dev
🆙 Small update
2026-05-07 10:24:16 +02:00
duckietm 5e26514143 🆙 Small update 2026-05-07 10:21:48 +02:00
DuckieTM 4da1af605d Merge pull request #119 from duckietm/Dev
Dev
2026-05-06 12:50:29 +02:00
duckietm dbf5ae875c 🆙 Small update in building 2026-05-06 12:50:00 +02:00
duckietm 7396413f11 🆙 Fixed Multiple SCSS-isms ended up inside plain .css 2026-05-06 10:48:09 +02:00
duckietm f6b7a3c9d7 🆙 Update Render example 2026-05-06 10:38:55 +02:00
duckietm aa20b0acbe 🆙 Small fix Background to load from json 2026-05-06 08:57:44 +02:00
duckietm a243640741 🆙 News windows in UI login update 2026-05-06 08:48:17 +02:00
duckietm 793c260fc5 🆙 Small update to the login texts 2026-05-06 08:32:36 +02:00
duckietm 606afa7792 🆙 Small fix login page 2026-05-06 08:21:08 +02:00
DuckieTM c4cd29e709 Merge pull request #118 from Lorenzune/merge-duckie-main-2026-05-06
Merge live runtime configuration updates into Dev
2026-05-06 07:07:37 +02:00
Lorenzune 851d82f93f Document secure runtime configuration 2026-05-06 06:27:40 +02:00
Lorenzune 71171dc205 Merge remote-tracking branch 'duckie/main' into merge-duckie-main-2026-05-06
# Conflicts:
#	index.html
#	public/UITexts.example
#	public/renderer-config.example
#	src/App.tsx
#	src/components/login/LoginView.tsx
#	src/components/room/widgets/avatar-info/infostand/InfoStandWidgetUserView.tsx
#	src/components/toolbar/ToolbarView.tsx
#	src/components/user-profile/UserContainerView.tsx
2026-05-06 04:23:15 +02:00
DuckieTM db2985d763 Merge pull request #116 from duckietm/Dev
🆙 Small fix for the badge selector in the infostand view
2026-05-04 15:59:26 +02:00
duckietm 5857362d61 🆙 Small fix for the badge selector in the infostand view 2026-05-04 15:59:08 +02:00
DuckieTM 938ecb4816 Merge pull request #115 from duckietm/Dev
🆙 Updated Background profiles
2026-05-04 15:38:06 +02:00
duckietm 6fce62fb47 🆙 Updated Background profiles
Please make sure you change your UI-Config !!!
2026-05-04 15:26:29 +02:00
DuckieTM 1821b2df08 Merge pull request #114 from duckietm/Dev
Dev
2026-05-04 10:32:02 +02:00
duckietm da9e394901 🆙 Small fix Badge tooltip view 2026-05-04 10:24:02 +02:00
DuckieTM 182654f308 Merge pull request #113 from simoleo89/feat/full-box-background
Feat/full box background
2026-05-04 08:03:25 +02:00
DuckieTM 00bcfd7173 Merge pull request #112 from simoleo89/fix/toolbar-face-vertical-align
fix(toolbar): align face button with other toolbar icons
2026-05-04 08:03:13 +02:00
DuckieTM 6e50cb180c Merge pull request #111 from simoleo89/fix/me-menu-popup-position
fix(toolbar): anchor Me menu popup to face button instead of fixed of…
2026-05-04 08:02:53 +02:00
DuckieTM fad1243774 Merge pull request #110 from simoleo89/feat/edit-furni-permission-gate
Feat/edit furni permission gate
2026-05-04 08:02:38 +02:00
simoleo89 72bc4da3c0 feat(profile): add full-box card background tab and rendering
Adds a "Cards" tab to the Profile Background picker (BackgroundsView)
that selects a pattern applied to the entire user info card and the
extended profile container, in addition to the existing avatar-pad
background/stand/overlay layers.

- AvatarInfoUser/Utilities: propagate cardBackgroundId from RoomUserData.
- InfoStandWidgetUserView: stateful cardBackgroundId, applied as
  .profile-card-background.card-background-{id} on the outer Column
  with bg-color suppressed when active.
- UserContainerView: same class on the wrapper of the extended profile.
- BackgroundsView: 4th tab "cards" backed by cards.data config
  (falls back to backgrounds.data); sends 4-id message via the
  extended sendBackgroundMessage signature.
- ui-config.example: cards.data dataset (15 entries).
- BackgroundsView.css: 188 .card-background-{N} rules cloned from
  background-{N} (repeat-tiled) plus 15 CSS-pattern overrides for the
  provisional dataset (gradients, stripes, dots, grid, checker).
2026-05-03 22:09:12 +02:00
simoleo89 017e780e74 fix(toolbar): align face button with other toolbar icons
The face avatar (headOnly LayoutAvatarImageView) sits in a 63px-tall
box (44px on mobile) while sibling toolbar icons are smaller, so its
head sprite rendered visually higher than the other icons. Bumped
marginTop from 2px → 12px (desktop) and 4px → 9px (mobile) so the
head sits on the same horizontal axis as the rest of the toolbar.
2026-05-03 20:49:15 +02:00