Commit Graph

564 Commits

Author SHA1 Message Date
github-actions[bot] 7128f4553b Merge remote-tracking branch 'upstream/main' 2026-06-03 10:15:33 +00: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
simoleo89 f84103d18f Merge remote-tracking branch 'fork/main' into feat/messenger-groups-receipts 2026-06-02 22:11:18 +02:00
simoleo89 dd7d504be2 Merge remote-tracking branch 'origin/Dev' into feat/messenger-groups-receipts
# Conflicts:
#	public/configuration/UITexts.example
#	src/css/friends/FriendsView.css
2026-06-02 21:52:59 +02:00
simoleo89 dc7012794e fix(messenger): send typing-stop to peer when switching conversations 2026-06-02 21:25:21 +02:00
simoleo89 7d89ce14d0 feat(messenger): send typing status + show 'is typing' indicator 2026-06-02 21:15:53 +02:00
simoleo89 361ab27853 feat(messenger): incoming typing state + outgoing typing action 2026-06-02 21:11:03 +02:00
Life 7b69fb3df0 Merge branch 'main' into feat/command-autocomplete-refactor 2026-06-02 20:55:28 +02:00
simoleo89 8ae48005f3 fix(messenger): reliably send mark-read on thread focus via latest-value ref 2026-06-02 20:37:20 +02:00
simoleo89 775e8b27af feat(messenger): render sent/read checkmarks on own messages 2026-06-02 20:25:03 +02:00
simoleo89 ef60aa8ebd feat(messenger): send mark-read on focus, mark own messages read on receipt 2026-06-02 20:19:38 +02:00
simoleo89 f5e179f6c9 feat(messenger): SENT/READ status on thread chats + mark-read helper 2026-06-02 20:16:08 +02:00
simoleo89 db050b99e7 feat(messenger): show 'sent while offline' marker in thread 2026-06-02 19:11:05 +02:00
simoleo89 83140de98b feat(messenger): offlineDelivered flag on thread chat 2026-06-02 19:07:56 +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
simoleo89 9441847818 style(friends): group chips, category manager, assign-group dropdown 2026-06-02 18:32:01 +02:00
simoleo89 1af038806b feat(chat): improve command autocomplete and command alerts 2026-06-02 18:31:49 +02:00
simoleo89 2291d3cfa8 feat(friends): per-friend assign-to-group control 2026-06-02 18:26:44 +02:00
simoleo89 860ec07dfd feat(friends): group chip-filter row over online/offline list + manager wiring 2026-06-02 18:20:31 +02:00
simoleo89 7913952f71 fix(friends): reset stale edit state on category refresh + localize manager labels where keys exist 2026-06-02 18:12:53 +02:00
simoleo89 39bcfdb0cd feat(friends): category manager modal (create/rename/delete groups) 2026-06-02 18:07:40 +02:00
duckietm 03066abf54 🆙 Updated Group buy 2026-06-02 18:01:45 +02:00
simoleo89 5be38e7df3 feat(friends): category CRUD + assign actions in friends store 2026-06-02 17:59:13 +02:00
simoleo89 f9320b4582 feat(friends): pure category filter + count helpers 2026-06-02 17:54:30 +02:00
duckietm 9900bc8aaa 🆙 Small fix for the room link 2026-06-02 15:33:48 +02:00
duckietm c9ac6806dd 🆙 Updated infostand & userpofile now mobile friendly and cards as background 2026-06-02 15:12:51 +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
duckietm f98f8ff0bc Merge branch 'Dev' of https://github.com/duckietm/Nitro-V3 into Dev 2026-06-02 10:25:35 +02:00
duckietm ef23526bf7 🆙 Fix avatar in friends and profile 2026-06-02 10:25:33 +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
duckietm f45e2c3ada 🆙 More mobile optimizeing for catalog 2026-06-01 08:20:26 +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 cbd63220bd fix(chat): slice border-image per-bubble (253-291) per stretch pulito
Le bubble custom ereditavano la slice base (centro largo) -> con repeat si
duplicavano, con stretch si allungavano troppo/storte. Ora ogni bubble ha
border-image-slice/width calcolata dalla sua immagine: il taglio cade nella
zona centrale del corpo, sulla colonna piu uniforme (colore pieno), con un
filo stirabile di ~2px e border-image-repeat: stretch. Cosi il corpo si stira
pulito e i cap restano intatti. (Le bubble con decoro su tutto il corpo, senza
una fascia piena, restano un compromesso: limite intrinseco del 9-slice.)
2026-05-31 06:07:30 +02:00
medievalshell bd24002b93 fix(chat): stretch (non repeat) sulle bubble custom 253-291
Ereditavano border-image-repeat: repeat dalla regola base, quindi il centro
delle nuove bubble (con grafica) si duplicava invece di allungarsi. Override
border-image-repeat: stretch per le 253-291 cosi il corpo si stira come le
originali (che avevano il centro a tinta unita).
2026-05-31 05:23:40 +02:00