Skip to content

Releases: mcraftbbs/ChatSphere

v2.5.0

Choose a tag to compare

@mcraftbbs mcraftbbs released this 08 Oct 06:13

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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 30 Sep 11:28

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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 16 Sep 06:03

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
  • inviteHistoryEnabled server 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 info showed 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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 08 Sep 16:54

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/maxCommandMessages on 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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 22 Aug 08:13

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
  • Ui helper layer (withOpacity, visible, containsRounded, withRoundedClip)
  • ThemeSnapshot for 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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 12 Aug 11:50

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 NbtAccounter on 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.ctheme had 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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 08 Aug 18:40

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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 04 Aug 07:47

v2.1.2

Added

  • Custom theme system: .ctheme files with dark/light colors, numeric styles and animation settings — strict parsing, validation, and automatic fallback on invalid files
  • colorSeed tonal 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, notificationPulse with 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

Choose a tag to compare

@mcraftbbs mcraftbbs released this 31 Jul 17:17

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 screenBg layered 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.list now 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

  • Special thanks to Spagles for contributing PR #1 — voice message parsing crash fix, file/listener leak fixes, and emoji rendering glitch fixes

v2.1.0

Choose a tag to compare

@mcraftbbs mcraftbbs released this 30 Jul 23:20

2.1.0

Added

  • Command console message persistence — ServerboundCommandMessagePayload sends command input/output to server, stored in messages.json, restored on reconnect via sendMessagesToPlayer() / applyServerMessages()
  • Color/formatting preservation across reconnect — Components serialized as JSON via Component.Serializer.toJson(component, RegistryAccess.EMPTY), restored via Component.Serializer.fromJson(json, RegistryAccess.EMPTY)
  • Multi-line command output — server no longer splits by \n; client renders each line separately with proper CommandHit registration (click/hover events work per-line)
  • System message grouping — 150ms buffer in ModClientEvents coalesces 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 on PlayerLoggedInEvent
  • Local voice message cache — received voice cached to voice_cache/index.json for replay after restart
  • Voice message animation fix — voicePlayerCache reuses PlaybackPlayer across frames, put hook registers Playback under voiceMessageId
  • ChatComponentMixin — chat component mixin for enhanced interactions
  • ChatDataStore.commandMessages / blockedPlayers storage fields

Changed

  • System messages use event sender UUID (Util.NIL_UUID) instead of localUuid for server sync — fixes green "> " prefix on system output
  • sendMessagesToPlayer now allows NIL_UUID command messages to sync to all players
  • addChatMessage skips learnPlayerName for NIL_UUID to avoid junk entries
  • addCommandMessage no 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 through ServerboundVoicePacket → ClientboundVoicePacket → ModVoiceStorage
  • Version bumped to 2.1.0

Fixed

  • Command console messages all showing green "> " prefix after server sync (wrong isOwn due to localUuid being 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