Commit Graph

461 Commits

Author SHA1 Message Date
duckietm cdf962a7d2 🆙 Small fixing alphablend 2026-06-05 17:21:53 +02:00
duckietm fff4c0bca6 🆙 Take #3 desktop view catalog is now 100% 2026-06-05 16:31:59 +02:00
duckietm f4d41dd3c9 Take #2 Desktop cacta 100% 2026-06-05 14:32:55 +02:00
simoleo89 d73656bbfe chore: update react player and frontend deps 2026-06-04 22:15:12 +02:00
duckietm 59ed27b727 Revert "🆙 Bug fixed in localstorage"
This reverts commit 47453db5ee.
2026-06-04 13:43:29 +02:00
duckietm 47453db5ee 🆙 Bug fixed in localstorage 2026-06-04 13:43:04 +02:00
duckietm 7007752e91 🆙 Mention Now in UI-Config and UITexts and not hardcoded 2026-06-04 11:32:55 +02:00
DuckieTM a4137af4fe Merge branch 'main' into Dev 2026-06-04 10:45:59 +02:00
duckietm 5a330be30e 🆙 Updates Mention 2026-06-04 10:41:36 +02:00
medievalshell 0df810c556 feat(mentions): @ autocomplete, blue @nick, avatar notification toast
- Chat input @ autocomplete: typing @ shows online users (room users +
  online friends + room aliases) with avatars; arrows/Tab/Enter to pick.
- Any valid @nick token is highlighted blue in chat bubbles (like @all),
  giving visual feedback that it is a recognised mention.
- Side notification toast on a received mention: sender avatar (from the
  new senderFigure wire field) + message + dismiss; dismiss marks it read
  so the toolbar unread badge updates. Auto-hides after 8s.
- IMentionEntry/parsers carry senderFigure end to end.
2026-06-04 01:18:26 +02:00
DuckieTM c76fbf7ea8 Merge branch 'main' into feat/command-autocomplete-refactor 2026-06-03 16:33:58 +02:00
DuckieTM 0cf45197d8 Merge pull request #187 from simoleo89/pr/mentions-system
feat(mentions): complete @-mentions system (inbox, in-bubble highlight, notifications)
2026-06-03 11:03:39 +02:00
duckietm 4c70fc90c0 🆙 Updated Prefixes 2026-06-03 09:39:25 +02:00
duckietm 0c694820f7 🆙 Visual updates Group Forums 2026-06-03 07:46:28 +02:00
Life 7b69fb3df0 Merge branch 'main' into feat/command-autocomplete-refactor 2026-06-02 20:55:28 +02:00
Life fd126a3d2c Merge branch 'duckietm:main' into feat/command-autocomplete-refactor 2026-06-02 18:38:47 +02:00
simoleo89 f506b83387 feat(chat): improve command autocomplete and command alerts 2026-06-02 18:34:50 +02:00
duckietm 03066abf54 🆙 Updated Group buy 2026-06-02 18:01:45 +02:00
duckietm c9ac6806dd 🆙 Updated infostand & userpofile now mobile friendly and cards as background 2026-06-02 15:12:51 +02:00
simoleo89 2d126a7b9a feat(mentions): wire Remove action to server-side delete packet 2026-06-02 15:04:12 +02:00
simoleo89 49d3bde50a feat(mentions): richer inbox — filters, date groups, type badge, relative time, per-row actions, highlighted preview 2026-06-02 15:04:12 +02:00
simoleo89 22e28a31ab feat(mentions): highlight own mentions inside room chat bubbles 2026-06-02 15:04:12 +02:00
simoleo89 cdabdedfbf feat(mentions): dedicated toolbar icon sprite 2026-06-02 15:04:11 +02:00
simoleo89 c1085aa4b1 fix(mentions): add en/nl translations for mention strings 2026-06-02 15:04:11 +02:00
simoleo89 c67c90d4c1 feat(mentions): inbox window, toolbar badge, chat-history tab, ui-config + i18n 2026-06-02 15:04:11 +02:00
duckietm 76ec66932b 🆙 Small fix User Settings 2026-06-02 12:56:48 +02:00
duckietm d73f51f61a 🆙 Update Texts 2026-06-02 12:04:39 +02:00
medievalshell 1b3744a891 Merge remote-tracking branch 'upstream/Dev' into Dev 2026-06-01 19:33:49 +02:00
duckietm 827c17dc8b 🆙 Small fix toolbar 2026-06-01 14:44:33 +02:00
medievalshell 5a437b7eda feat(fortune-wheel): add wheel-card and wheel-slice-icon class hooks
Lets a runtime theme scope the wheel card background and scale the slice
prize icons without touching defaults (the hooks add no styles on their own).
2026-05-31 17:28:46 +02:00
medievalshell dc5b1e694d feat(fortune-wheel): expose wheel colors as CSS custom properties
The slice/rim/divider/hub colors are now read from --wheel-* CSS variables
with the current values as fallbacks, so the stock look is unchanged while a
runtime theme can recolor the wheel without rebuilding.
2026-05-31 17:16:23 +02:00
DuckieTM 67d53fde3a Merge pull request #181 from simoleo89/feat/fortune-wheel-improvements
feat(fortune-wheel): celebration reveal, spin animation & prize editor add/remove
2026-05-31 15:44:42 +02:00
DuckieTM c6a1ab9c9a Merge pull request #180 from simoleo89/feat/radio-ui-config-toggle
feat(radio): make the radio widget toggleable from ui-config
2026-05-31 15:44:22 +02:00
DuckieTM 7e0d70a7e6 Merge branch 'Dev' into Dev 2026-05-31 15:43:52 +02:00
medievalshell 8097344561 feat(theme): runtime custom theme ecosystem (graphics-only)
Runtime-loaded visual re-skin system (no client rebuild, real themes never
hit git). A theme = a folder on the server (theme.base.url) with a manifest +
CSS "pieces"; each piece is toggled from Settings > Themes (checkboxes). A
broken/404 piece auto-falls back to the default (per piece). Hotel-wide default
via ui-config theme.default (+ theme.default.pieces), per-user override in
localStorage (same pattern as the catalog style toggle).

- api/theme/ThemeManager: fetch index/manifest + inject/remove <link> + fallback
- hooks/theme/useThemes: state + persist + default-from-config + live apply
- components/theme/ThemeApplier: applies on boot (mounted in MainView)
- UserSettings: General/Themes tabs with theme selector + per-piece checkboxes
- custom-themes/: reference template (demo theme "Neon Viola" + README)
- .gitignore: public/custom-themes/ (real themes are never committed)
2026-05-31 14:39:59 +02:00
Life f25b103101 Always render RadioView in MainView component 2026-05-31 11:26:11 +02:00
simoleo89 ccebcad8a8 feat(fortune-wheel): celebration reveal, spin animation, prize editor add/remove
Player experience:
- Tiered win celebration overlay (WheelWinReveal): quiet message for the
  "nothing" slice, lighter reveal for common prizes, full confetti +
  jackpot glow for rare ones. Rarity classified client-side by type +
  amount (wheelPrizeTier), shared icon rendering (wheelPrizeIcon).
- Three-phase spin motion (wind-back -> overshoot -> settle) with a
  reduced-motion fast path; responsive wheel scaling via ResizeObserver.

Reveal-timing fix:
- The server pushes the refreshed winners list (which already contains the
  just-won prize) the instant it answers the spin, ~5s before the wheel
  stops. useFortuneWheel now buffers that update mid-spin and flushes it in
  finishSpin so the prize is no longer spoiled in the winners panel.
- handleTransitionEnd only reacts to the wheel's own transform transition,
  so a child icon's bubbling transitionend can't advance the spin phase
  machine early.

Prize editor (admin):
- Add/Remove prize buttons in FortuneWheelSettingsView. New rows carry a
  negative temp id collapsed to 0 on the wire (server inserts); removed rows
  are simply omitted (server soft-disables). Requires the matching emulator
  change to WheelManager.savePrize / WheelAdminSavePrizesEvent.

i18n: wheel.win.* and rarevalues.editor.add/remove in en/it/nl.
2026-05-31 10:47:51 +02:00
simoleo89 a33bbb3448 feat(radio): make the radio widget toggleable from ui-config
Move the radio on/off switch out of renderer-config (where it sat next
to asset/data URLs) into ui-config, alongside the other UI feature
toggles (game.center.enabled, guides.enabled, …) — the natural home for
a widget switch — and rename it to the dotted convention `radio_ui.enabled`.

The MainView gate now defaults to `false`, so the radio is opt-in: an
absent key keeps it hidden; set `"radio_ui.enabled": true` in ui-config
to show it. The radio.url data source stays in renderer-config.
2026-05-31 09:34:25 +02:00
simoleo89 c9df2d8765 style(navigator): unify room-settings tabs with section cards
Introduce a reusable NavigatorRoomSettingsSectionView card (rounded
bg-gray-100 panel with a bold-small title) and apply it across the
Access, VIP/Chat, Moderation and Rights tabs so every room-settings
screen matches the Base and Misc tab styling. Pure visual restyle —
handleChange wiring, events, composers and validations are unchanged.
2026-05-31 09:20:35 +02:00
simoleo89 5bc3c4ef34 fix(navigator): render delete-room link as a real flex row
The previous fix put 'flex' on the Text component, but Text forces
display:inline as its base class, so the flex never applied and the X
icon dropped onto its own line. Use a Flex container with the icon and
a Text child instead, so icon + label sit on one centered row.
2026-05-31 09:09:00 +02:00
simoleo89 3b8bccfee9 fix(navigator): keep room delete link on a single line
Add whitespace-nowrap to the 'delete room' link and shrink-0 to its X
icon so the label no longer wraps in the narrow room-settings panel.
2026-05-31 09:00:52 +02:00
simoleo89 e8373ea610 feat(navigator): stacked-label layout for room-settings Base tab
Replace the cramped horizontal label/control rows with a vertical
stacked-label layout (bold label above each full-width control),
matching the sibling Access tab. Fixes multi-word labels wrapping in
the narrow panel. Tags share one label with the two inputs side-by-side.
Drops the now-unused Base spacer elements. Layout-only: no change to
handleChange, validation thresholds, save-on-blur, or field order.
2026-05-31 08:48:58 +02:00
medievalshell 7745c5f66b feat(chat): 39 nuove chat bubble (253-291) + paginator soundboard
- 39 bubble custom con relativo pointer colorato (colore campionato dal
  fondo di ogni bubble) + regole CSS in Chats.css (resa in-stanza border-image
  + anteprima nel selettore)
- selezionabili via chat.styles dell'ui-config (lato server)
- soundboard: paginazione 9/pagina (griglia 3x3) con frecce + indicatore,
  cosi la card non cresce a dismisura
2026-05-31 04:01:04 +02:00
simoleo89 ee5e864842 fix(navigator): replace dead Bootstrap classes in room-settings tabs
The Base tab labels used col-3 and the delete row used
d-flex/justify-content-center — Bootstrap utilities that don't exist
in this Tailwind 4 build, so labels collapsed and wrapped. Swap to
w-1/4 shrink-0 and flex/justify-center/items-center, and drop the
dead col-4 on the Access-tab password inputs. Also fix a missing
break in the tag save-error switch (invalid-tag always showed the
non-choosable message) and a && / || precedence bug in saveTags
that checked the wrong tag field.
2026-05-31 01:28:14 +02:00
simoleo89 d447f9941d feat(navigator): convert search input to a React 19 form action
Replace the onKeyDown Enter handler + onClick button with a
<form action={submitSearch}>. Enter submits natively; the search
button (a styled div, not a real <button>) triggers form submission
via formRef.requestSubmit(), so both paths run the single
FormData-driven handler. The 300ms debounced filter push is kept.
2026-05-31 01:18:10 +02:00
simoleo89 e610cfeef4 feat(navigator): reactive favourites via fine-grained store (P3)
Move favourite room ids out of the useBetween navigator store into a
dedicated Zustand store. useNavigatorFavourite(roomId) subscribes only
to s.ids.has(roomId) (a boolean), so a FavouriteChangedEvent for one
room no longer re-renders every favourite-aware view. apply() returns
the same state reference when membership is unchanged.
2026-05-31 01:03:31 +02:00
simoleo89 641593c3ef feat(navigator): responsive layout + saved-search refinement (P4 wave 1c)
- Stack sidebar above results below sm; cap card width to viewport
- Fix tab-bar wrap overlapping content on narrow screens (max-height/height/flex reset)
- Saved-search rows: whole row opens search, hover-reveal delete (no layout shift), bolt icon, empty state
- Hover affordance on navigator grid items and saved-search rows
2026-05-31 00:55:45 +02:00
Life b17cd891b3 Merge branch 'duckietm:main' into feat/navigator-p4-visual-wave1 2026-05-30 09:38:44 +02:00
DuckieTM fa71e8eb4a 🆙 Toolbar fix in rare cases the room-tools container 2026-05-30 07:18:05 +02:00
medievalshell f7e78674c6 fix(client): catalogo mobile, BC/navigator/profilo/amici
- Catalogo Hippiehotel responsive su mobile (finestra 96vw/72vh, rail
  tappabile, sotto-pannelli ristretti); duckie ripristinato come entita
  separata (revert modifiche scrollbar sul suo CSS)
- BC e catalogo normale seguono entrambi il toggle tema; il duckie non
  duplica piu il logo nelle pagine info_duckets
- Navigator: highlight della tab segue currentTabCode (era bloccato su
  Pubblici mentre il contenuto cambiava)
- Inventario: link inventory/show/<tab> per deep-link a una scheda
- User Profile: avatar visibile e allineato a bg/stand, finestra piu
  grande, bordi puliti, Created/Last login mostrano il valore, bottoni
  Change Looks/Rooms/Change Badges/Add friends/Achievement funzionanti
- Amici: header non piu sovradimensionati e teste avatar inquadrate
  (regole flat: quelle annidate .nitro-friends{&...} non si applicavano)
2026-05-30 05:49:04 +02:00