simoleo89
4621ed62b7
feat(furni-editor): server-side Habbo furnidata import (packet 10049)
...
FurniEditorImportTextEvent (incoming 10049, ACC_CATALOGFURNI): resolves
the classname, fetches the admin-configured furnidata URL via HttpClient
with a TTL cache (furni.editor.import.url / .cache.ms, default habbo.it),
finds name/description by classname and returns them via
FurniEditorImportTextResultComposer (outgoing 10049). URL is DB-configured
only (no client-supplied URL -> no SSRF); serves stale cache on failure.
2026-06-06 17:31:13 +02:00
simoleo89
2b8ce3cd91
feat(furni-editor): server-side sort for the editor search
...
Read sortField/sortDir from the search packet and ORDER BY a whitelisted
items_base column (id/sprite_id/item_name/public_name/type/interaction_type)
with a stable id tie-break, so sorting orders the whole result set instead
of just the page the client received. Column names come from a fixed
whitelist (never raw input) so the dynamic ORDER BY stays injection-safe.
2026-06-06 17:31:12 +02:00
simoleo89
57c36da795
feat(furni-editor): mirror furnidata display name into items_base.public_name
...
On a successful furnidata name update (10046), after the JSON write +
10047 broadcast, also UPDATE items_base.public_name to the new
(sanitized) name and refresh the in-memory Item cache via loadItems()
so Item.getFullName() stays consistent without a restart. Guarded by
name != null (description-only edits never blank the column), runs only
on the success path, outside FurnidataLock, with a parameterized
statement.
2026-06-06 17:31:12 +02:00
simoleo89
17629c210c
feat(furnieditor): search also matches furnidata display names
2026-06-06 17:31:12 +02:00
simoleo89
50444003bb
fix(furnidata): correct revert audit enum, sanitize audit values, config-driven maxBytes
2026-06-06 17:31:12 +02:00
simoleo89
f55b182d8e
feat(furnieditor): make item_name immutable (remove from DB update whitelist)
2026-06-06 17:31:12 +02:00
simoleo89
1416cd7464
feat(furnieditor): FurniEditorRevertFurnidataEvent — restore last furnidata backup + rebroadcast
2026-06-06 17:31:12 +02:00
simoleo89
392d24b9c5
feat(furnieditor): FurniEditorUpdateFurnidataEvent — write furnidata + reindex + broadcast 10047
2026-06-06 17:31:12 +02:00
simoleo89
9dcd58d027
feat(furnidata): audit-log writer for editor furnidata edits
2026-06-06 17:31:12 +02:00
simoleo89
3b85d5fa34
feat(furnidata): expose source kind, maxBytes, reindexFromSource on the provider
2026-06-06 17:31:12 +02:00
simoleo89
43c2c2b0f1
feat(furnidata): split-tier write to winning tier with path-traversal guard
2026-06-06 17:31:12 +02:00
simoleo89
a815c1b99d
feat(furnidata): FurnidataWriter single-file comment-preserving atomic write + backup
2026-06-06 17:31:12 +02:00
simoleo89
caf6ad35fa
feat(furnidata): shared lock serializing watcher reindex and editor writes
2026-06-06 17:31:11 +02:00
simoleo89
258a95a269
feat(furnidata): add furnidata_edit_log audit table + editor write config keys
2026-06-06 17:31:11 +02:00
simoleo89
4944d41410
fix(items): watcher registers split-tier subdirs, real stop()/close, key.reset guard
2026-06-06 17:31:11 +02:00
simoleo89
8fb117ae73
feat(items): furnidata file watcher — debounce, throttle, delta cap to reload-hint, broadcast
2026-06-06 17:31:11 +02:00
simoleo89
7f4f7d6da9
feat(items): reindex returns sanitized furnidata delta
2026-06-06 17:31:11 +02:00
simoleo89
0cf46471f2
feat(items): FurnitureDataReloadComposer (header 10047, delta + reload-hint)
2026-06-06 17:31:11 +02:00
simoleo89
3a505cd559
fix(items): null-safe getDisplayName + log missing items.furnidata.path
2026-06-06 17:31:11 +02:00
simoleo89
f2e0f6e2d5
feat(items): source server-pronounced furni names from furnidata (6 sites)
2026-06-06 17:31:11 +02:00
simoleo89
d73573e7c5
feat(items): Item.getDisplayName() — furnidata name with public_name fallback
2026-06-06 17:31:11 +02:00
simoleo89
efb88e5957
feat(items): construct FurnitureTextProvider after ItemManager load
2026-06-06 17:31:11 +02:00
simoleo89
e7e75a285b
feat(items): config-driven furnidata source resolution + init
2026-06-06 17:31:11 +02:00
simoleo89
28c3e93945
fix(items): Locale.ROOT case-folding + document sanitize cap unit + tighten cap test
2026-06-06 17:31:11 +02:00
simoleo89
5bf1d42cfb
feat(items): FurnitureTextProvider — volatile index, sanitize, toggle
2026-06-06 17:31:10 +02:00
simoleo89
b162b3f4d8
fix(items): guard oversized manifest NPE in FurnidataReader + document JSON5 trailing-comma limit
2026-06-06 17:31:10 +02:00
simoleo89
86498b6b4c
feat(items): FurnidataReader (single + split JSON5, path-guard, size-cap, fail-safe)
2026-06-06 17:31:10 +02:00
simoleo89
964f388594
feat(items): FurnidataEntry record
2026-06-06 17:31:10 +02:00
simoleo89
f9644d83b7
test: add JUnit 5 + surefire harness
2026-06-06 17:31:10 +02:00
duckietm
5094d6ce4f
🆙 Fix the Admin Catalogue stuff
2026-06-05 14:23:05 +02:00
duckietm
85758b53fa
🆙 Updates Mention
2026-06-04 10:43:05 +02:00
DuckieTM
2171b5f2ec
Merge pull request #152 from medievalshell/feat/mentions-hotelwide-figure
...
feat(mentions): hotel-wide @nick delivery + sender figure + disable-m…
2026-06-04 08:50:49 +02:00
medievalshell
46306c8205
feat(mentions): hotel-wide @nick delivery + sender figure + disable-mention persistence
...
- resolveHabbo() falls back to a hotel-wide online lookup so a direct @nick
mention reaches the target even when they are in a different room (was
resolved only within the sender's room).
- HabboMention now carries the sender figure (live from the sender Habbo,
history from a users.look JOIN); MentionReceived/MentionsList composers
append it so the client can render the sender avatar in the notification.
- 009: add users_settings.mentions_enabled / mass_mentions_enabled columns
so :disablementions / :disablemassmentions actually persist.
2026-06-04 01:27:45 +02:00
DuckieTM
e7deea7d9d
Merge pull request #149 from duckietm/main
...
sync to dev
2026-06-03 16:39:01 +02:00
github-actions[bot]
44ea3abd4e
🆙 Bump version to 4.2.34 [skip ci]
v4.2.34
2026-06-03 14:37:38 +00:00
DuckieTM
609cd20ab2
Merge pull request #143 from simoleo89/feat/command-autocomplete-refactor
...
Structure commands alert output
2026-06-03 16:36:33 +02:00
github-actions[bot]
717a7f184f
🆙 Bump version to 4.2.33 [skip ci]
v4.2.33
2026-06-03 14:23:40 +00:00
DuckieTM
2862446686
Merge pull request #148 from duckietm/dev
...
🆙 More updates mentions
2026-06-03 16:22:39 +02:00
duckietm
e97e680006
🆙 More updates mentions
2026-06-03 16:20:02 +02:00
github-actions[bot]
7e59dca192
🆙 Bump version to 4.2.32 [skip ci]
v4.2.32
2026-06-03 12:20:44 +00:00
DuckieTM
1109d53720
Merge pull request #147 from duckietm/dev
...
Dev
2026-06-03 14:19:42 +02:00
duckietm
f12363a5b7
Merge branch 'dev' of https://github.com/duckietm/Arcturus-Morningstar-Extended into dev
2026-06-03 14:17:28 +02:00
duckietm
7d4ffec74e
🆙 Small Fixes mention
2026-06-03 14:17:25 +02:00
github-actions[bot]
281fede58c
🆙 Bump version to 4.2.31 [skip ci]
v4.2.31
2026-06-03 08:56:45 +00:00
DuckieTM
edf152485b
Merge pull request #145 from duckietm/dev
...
Dev
2026-06-03 10:55:46 +02:00
DuckieTM
18a1bfbe90
Merge branch 'main' into dev
2026-06-03 10:55:37 +02:00
duckietm
7c32bbfd2d
🆙 wordfilter to set specific settings to prefix
2026-06-03 10:39:44 +02:00
DuckieTM
4eae206b64
Merge pull request #140 from simoleo89/feat/mentions-system
...
feat(mentions): server-side mention detection, persistence & packets
2026-06-03 09:49:45 +02:00
github-actions[bot]
155b2202c7
🆙 Bump version to 4.2.30 [skip ci]
v4.2.30
2026-06-03 07:48:08 +00:00
DuckieTM
10c291eb9f
Merge pull request #144 from duckietm/dev
...
Dev
2026-06-03 09:47:03 +02:00