Repository navigation
Releases: mcraftbbs/ChatSphere
Releases · mcraftbbs/ChatSphere
Release list
v2.5.0
2.5.0
Added
- Link cards under messages: title, description and thumbnail, with three modes (off, text plus card, card only)
- Link previews are fetched only for messages on screen; the server can disable them or restrict the hosts
- Chat images: drag a png/jpg into the chat, or paste an image URL, and they load on demand from the server cache
[Image]stands in wherever an image cannot be drawn, such as the HUD bubble and search results- Client image settings, and a server Images category for size, dimensions, lifetime, cooldown and per-player cap
- Forge 1.20.1 support
Fixed
- Console tabs keep the selected tab after a command is sent, and a tab edit refreshes the view
- The repeats counter sits on the left of console lines instead of running off the right edge
v2.4.1
2.4.1
Added
- Console tabs, off by default: split the console into tabs by regex
- Console tabs can be edited in the settings screen: name, regex, order, hide from All, live match count
Fixed
- Arrow keys in the console cycle the command history again; ctrl+up/down moves through the suggestions
- The sub-channel parent picker listed channels from other trees, and its top entry tried to leave the tree; it now offers this channel plus same-tree parents
- Moving a sub-channel back up to its parent channel was refused, so nesting only ever worked downwards
- Console lines can no longer be quote replied from the right-click menu
- The local emoji list scrolls with the wheel and has a scrollbar
- Console search finds command output
- The item share picker, emoji and mention autocomplete and the quick phrase panel follow the corner style and popup border settings
- Buttons follow the corner style too
v2.4.0
2.4.0
Added
/chatsphere doctor- data status: rows against the caps, file sizes, backups, Discord state/chatsphere backup,backups,restore <timestamp>,purge <channel>,reload- Typing indicator, plus a notification level per conversation (all / mentions / muted), both configurable
- Channel history for players who join mid-session, and unread counts that survive a restart
inviteHistoryEnabledserver option: joining a channel delivers its stored history- Create channel screen: three step wizard (template, basics, sub-channels) with templates that prefill the name and suggest sub-channels
- Client settings for the outside-chat HUD and the character cap per bubble
- HUD bubbles show custom emoji as
[emoji]/[animated emoji]instead of the raw shortcode - Optional Discord bridge: mirror one channel to Discord with a webhook, or both ways with a bot token (off by default)
Changed
- Chat, console and channel writes are batched instead of one disk write per message
- Chat scrollback is never capped below the server's
maxChatHistory - Emoji uploads allow 512 KB, animated GIFs 320x320 / 60 frames, sprite sheets up to 8192 px
- Client settings page: notifications and HUD options have their own groups
Fixed
/chatsphere infoshowed the raw translation key instead of the label- HUD unread badge could render underneath the chat icon while the count refreshed
- Channel info: the invite code no longer overlaps its label in longer languages
- The left rail and the sidebar scroll, so a long channel list no longer pushes the create button off screen
- Channel info: the owner gets a delete button instead of a leave button that did nothing
- Deleting a channel from its config screen no longer leaves the info panel open
- Custom skin API: avatars are fetched properly, and the refresh button updates every known player
v2.3.1
2.3.1
Fixed
- Chat history no longer lost when console output fills up: console/command entries have their own cap (
maxCommandMessages) and can no longer evict channel/private messages - Server history is trimmed to
maxChatHistory/maxCommandMessageson load, and legacy files are split on load - Client console history cap follows the server config instead of a hardcoded 500
- Server config is synced before history on login so the client applies the correct caps
- Voice messages always relay through ChatSphere in every conversation type, so the sender's row and audio upload stay consistent
- A cancelled voice recording can no longer make the next received voice look like your own
v2.3.0
2.3.0
Added
- Custom emoji: local png/gif uploads, animated GIFs, server sharing (public or per-channel), configurable limits
- Channel slow mode
- Per-player command console history
- Server-assigned message UUIDs (
messageId), backward-compatible wire format Uihelper layer (withOpacity,visible,containsRounded,withRoundedClip)ThemeSnapshotfor frame-consistent theming
Changed
- Chat UI reworked to a modern messenger style (channel info, member list, invite/explore/join/create, block list)
- Corner radius follows the corner preset; popup borders work in every style
- Public channels, sub-channels and online status cached with version counters
- Console input/output stored per player
Fixed
- Voice messages sometimes appearing as duplicate rows
- Crash when queued packets ran after disconnect
- Console output shown as player-sent messages
v2.2.1
2.2.1
Added
- Multi-platform build (Architectury): Fabric support alongside NeoForge for Minecraft 1.21.1, plus a Fabric 1.20.1 port
- Bare URLs in messages are auto-linkified and clickable, subject to the URL whitelist config
- Quoting an item-show message now displays the item name instead of the raw slot placeholder
- Server config:
voiceStorageMax(voice retention cap, 16–10000) - Voice history re-delivery: players who join receive recent voice messages from their conversations
Changed
- Voice playback resolution is event-driven (audio arrival registers the playback directly) with a failure short-circuit — no per-frame reflection in the render loop
- Voice uploads deduplicated server-side: multiple recipients uploading the same message are recorded and relayed once
- Config screens debounce per-keystroke saves / config-update packets
- Bundled presets carry a version marker; stale or corrupt presets are reinstalled from the jar automatically
- Date formatters precompiled (removes per-frame allocations)
- Hardcoded UI strings moved to lang keys
Fixed
- Server security: voice packets validated before history writes, private-channel join requires membership/invite, forged command-message UUIDs dropped, config-update ints range-checked, item NBT capped on the server and parsed with a size-limited
NbtAccounteron the client - Corrupted config JSON no longer crashes the game (backed up as
.corrupt, defaults used) - Server data files (channels/messages/voice index) written atomically (tmp + atomic move)
- Lock-order inversion between message history and channel state removed
- Theme
preset-stream.cthemehad invalid 10-digit hex values in its light block, rejecting the whole theme - Malformed voice frames rejected (frame length validated, no OOM)
v2.2.0
2.2.0
Added
- Stream style (4th corner style): icon rail with avatar/channels/console/explore/join/create, flat message rows, avatar right-click menu (@mention / private message), unread indicators, date headers; auto-compact layout for small windows
- Custom theme gallery with live preview cards and load error hints
- Sub-channels: create, rename, delete, drag-to-reorder; inherit parent members and permissions
- Rich text markup in chat messages (bold, color, gradient, links, etc.)
- Configurable voice cache size limit
Improved
- Chat history now respects the configured limit (server was hardcoded to 200)
- Long messages wrap automatically
- Performance: smoother chat rendering, theme previews and emoji panel
Fixed
- Server security: payload overflows could crash the server, forged player identity, channel message leaks
- Longer voice messages no longer dropped
- Corrupt save files are backed up instead of wiping all data
- Anti-spam duplicate label (xN) now displays correctly in Stream style
v2.1.2
v2.1.2
Added
- Custom theme system:
.cthemefiles with dark/light colors, numeric styles and animation settings — strict parsing, validation, and automatic fallback on invalid files colorSeedtonal derivation: unset colors derive harmonized tints from one seed color- Three bundled style presets (original / square / pixel-rounded), auto-installed on first run
- Custom Themes gallery screen (Config → Custom Theme → Browse) with real-color preview cards and an enable toggle
- Config screen linkage — bubble corner radius, bubble colors and corner style cards write through to the active theme file
- Message animations:
messageSlideIn,bubblePopIn,notificationPulsewith configurable duration and easing - Command console unread badge in the sidebar, matching the HUD notification digit count
Changed
- Background blur rewritten as a self-drawn GL blit (Iris-friendly, no global post-effect slot)
- Lying in bed now opens the mod's chat screen instead of the vanilla sleeping chat bar; ESC/dismiss reliably wakes the player
- HUD bubbles now include new command console messages
- Chat background follows the chosen corner style (solid / blurred variants)
- Floating text and inputs follow the theme again instead of being locked to light mode
- Performance: cached message timestamps and unread counts, 1Hz sidebar refresh, cached item NBT parsing, bounded voice playback cache
Fixed
- Chat data no longer falls back to the config folder when the storage context is unresolved
- Emoji panel bottom hint no longer truncated or clipped
v2.1.1
2.1.1
Added
- Corner style system — square / pixel-rounded / original, applied to all UI components in real time
- Dedicated "Corner Style" config category with three selectable cards, each showing a live miniature preview that scales with window size; click to apply immediately
- Background blur toggle for config and list screens (
backgroundBlur) - Pixel-rounded corners via per-pixel coverage rendering (1px transition)
- Pending server config queue — toggling server options (strong hint, anti-spam, enable channels, etc.) from the mod list menu no longer requires a loaded world; changes are staged and applied on joining a world (singleplayer: written to config file; multiplayer: sent via config update packet)
Changed
- Config screen reorganized into 6 categories; advanced settings grouped into collapsible sections
- Original style preserves the UI appearance of versions below this one, kept as a retro option
- Toggle slider shape follows the selected corner style (square in square mode, rounded in pixel-rounded mode)
- Config/list screens use
screenBglayered over the vanilla blur - Popup outlines neutralized (no longer purple solid line)
- Floating text on the chat screen (title, time separators, empty search result) and chat/search inputs locked to light colors so they stay readable in light mode
- Config page option rows fully clipped to the content area — scrolling can no longer draw rows above the category bar or below the action buttons
- Pixel-rounded corners use a cached corner alpha table — per-pixel distance math replaced with table lookup, fully transparent pixels skipped
- Chat data file saved atomically (temp file + atomic move, cross-platform fallback) — interrupted saves can no longer corrupt data, recovery on next launch
Fixed
- Crash when toggling server-side options from the mod list menu before joining a world
- Option labels/buttons rendering outside the clipped content area
- Voice message parsing crash — invalid/non-UUID message IDs no longer crash the chat screen (PR #1)
- File stream leak in backup pruning —
Files.listnow closed properly (PR #1) - Channel config screen registered a duplicate config change listener on reopen (PR #1)
- Multi-codepoint emoji (ZWJ sequences etc.) now parse correctly — parser advances by full Unicode sequence, not single code point (PR #1)
- Corner style picker cards overflowed the content area on small windows — card height/preview bounds fixed
Credits
v2.1.0
2.1.0
Added
- Command console message persistence —
ServerboundCommandMessagePayloadsends command input/output to server, stored inmessages.json, restored on reconnect viasendMessagesToPlayer()/applyServerMessages() - Color/formatting preservation across reconnect — Components serialized as JSON via
Component.Serializer.toJson(component, RegistryAccess.EMPTY), restored viaComponent.Serializer.fromJson(json, RegistryAccess.EMPTY) - Multi-line command output — server no longer splits by
\n; client renders each line separately with properCommandHitregistration (click/hover events work per-line) - System message grouping — 150ms buffer in
ModClientEventscoalesces consecutive system packets (e.g./help) into a single multi-line entry - HUD unread count badge — red badge on chat icon (top-right) showing total unread across all conversations, with flashing animation
- Configurable badge toggle —
notificationBadge(default on) in settings → Sound section - PlasmoVoice room localization keys —
pv.activation.chatsphere_room/pv.source_line.chatsphere_room - Voice message offline delivery — undelivered voice persisted to
voice_undelivered/index.json, delivered onPlayerLoggedInEvent - Local voice message cache — received voice cached to
voice_cache/index.jsonfor replay after restart - Voice message animation fix —
voicePlayerCachereusesPlaybackPlayeracross frames,puthook registers Playback undervoiceMessageId ChatComponentMixin— chat component mixin for enhanced interactionsChatDataStore.commandMessages/blockedPlayersstorage fields
Changed
- System messages use event sender UUID (
Util.NIL_UUID) instead oflocalUuidfor server sync — fixes green"> "prefix on system output sendMessagesToPlayernow allowsNIL_UUIDcommand messages to sync to all playersaddChatMessageskipslearnPlayerNameforNIL_UUIDto avoid junk entriesaddCommandMessageno longer splits content by newlines — multi-line output stored as single entry- HUD overlay command rendering uses
guiGraphics.enableScissor()to clip text within bubble bounds - HUD badge rendered inside
drawIcon()after icon blit, ensuring it appears on top - Chat icon unread badge reduced in size (padding +3, height 8, tighter positioning)
- Banned words editor width clamped to screen bounds (
Math.min(btnW * 3, width - inputX - 10)) - Voice messages routed through ChatSphere custom packets — VM used as recording/playback library only
voiceMessageId(UUID) propagated throughServerboundVoicePacket→ClientboundVoicePacket→ModVoiceStorage- Version bumped to 2.1.0
Fixed
- Command console messages all showing green
"> "prefix after server sync (wrongisOwndue tolocalUuidbeing used for system output) - Color codes lost on reconnect — Component now serialized/deserialized as JSON through the server persistence pipeline
- Text overflow outside bubble in narrow windows (scissor clip applied)
- Missing PV addon localization causing key display in voice room UI
- Banned words input extending past right screen edge