Skip to content

Releases: E33EPUS/AtomChat

v0.2.5-hotfix

Choose a tag to compare

@github-actions github-actions released this 09 Sep 13:08

v0.2.5-hotfix

修复

  • NeoForge 端在部分整合包里整个 mod 加载失败(本次仅涉及 NeoForge 构建;Fabric 版功能与 0.2.5 完全一致,版本号同步仅为让两个 jar 在同一 Release 中对齐):通知音效原本在客户端构造函数里直接调用 Registry.register 写入原版 sound_event 注册表。某些整合包(实测 NeoForge 21.1.243 + Forgified Fabric API)里 mod 构造时注册表已经冻结,这一步会抛 Registry is already frozen,导致 AtomChat 整个客户端初始化失败;更严重的是 FML 会因此进入 broken mod state,跳过所有 mod 的配置加载并向全包拒绝派发事件,表现为游戏内其它 mod(如 MineMenu、Sus_InstantSwap)读取配置时崩溃。NeoForge 端已改为通过 mod 事件总线的 RegisterEvent 注册(NeoForge 官方路径,跑在注册表解冻窗口内),并额外捕获异常降级为警告——即使音效注册失败也只损失提示音,面板与消息功能不受影响。

Fixed

  • The NeoForge build failed to load entirely in some modpacks (NeoForge-only change; the Fabric build is functionally identical to 0.2.5 and only carries the matching version number so both jars ship in one release): the notification cue registered itself by calling Registry.register on vanilla's sound_event registry straight from the client constructor. In some packs (observed with NeoForge 21.1.243 + Forgified Fabric API) the registries are already frozen by the time the mod is constructed, so this threw Registry is already frozen and took AtomChat's entire client init down. Worse, FML then entered a broken mod state: config loading was skipped for every mod and all subsequent events were refused, which surfaced as other mods (MineMenu, Sus_InstantSwap) crashing when they read their own config in-game. The NeoForge side now registers through the mod event bus RegisterEvent (NeoForge's official path, which runs inside the registry unfreeze window), with the failure additionally caught and downgraded to a warning — a missing cue now costs only the sound, never the panel.

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 09 Sep 06:07

v0.2.5

新增

  • 通知横幅:被 @、被回复、收到私聊时,若 AtomChat 面板处于打开状态(或 4 秒内打开),面板顶部会弹出横幅(发送者头像 + 类型 + 名字 + 内容预览)。点击横幅跳转到那条消息并短暂高亮;最多同时显示 3 条,4 秒后淡出。面板关闭时不绘制 HUD,仅播放音效并累积 @N 未读角标。
  • 通知音效:上述三类事件播放同一个内置气泡提示音;面板关闭时同样生效(2 秒去重,避免刷屏时连续响)。
  • 通知设置:设置 → 聊天 →「通知」分组,含提及横幅、提及音效、私聊横幅、私聊音效四个开关、通知音量滑条与「测试音效」卡片。

修复

  • 部分会话头像完全无法同步:头像请求 3 秒无人应答——恰恰是对方刚加入、内置服务器最忙的时候——客户端就把整个会话判死为「服务器无伴侣」,之后再也不同步;房主侧最容易中招(对方一出现,会话卡立刻发起首个请求)。另外会话内首次头像上传在没有收到过任何应答前会被静默丢弃。现在超时只进入 5 秒冷却重试、不再判死;只有真实的通道协商结果才能标记无伴侣;协商允许后上传立即放行;并为每一步加了 debug 开关控制的 [avatar] 日志。
  • 发送者名字显示为纯白:尖括号行的发送者标签是合成的纯文本,丢掉了行内自带的颜色——其他玩家的名字一律按"界面文字颜色"渲染。已改为按运行段切片保留原样式;当发送者完全不带颜色时,再用记分板队伍颜色兜底(debug 模式下会打 [sender] 日志)。
  • 面板背景颜色不可改:开启模糊时面板叠加色是硬编码(0xFF16191F),改配置里的背景色完全无效。现在模糊/非模糊两条路径都用配置的背景色,并在 外观设置 里新增「背景颜色」调色行。
  • 装饰名在公屏气泡里泄漏尖括号:服务器把整个装饰名包进尖括号时(如 FTB Teams 称号 <[称号]E33EPUS> 453),移植自 e33chat 的解析器只会剥掉名字前的 <,别人看到的发送者成了 <[称号]E33EPUS 且带着服务器的下划线/点击样式。已补回 e33chat cleanNameArea 的整块剥离分支:字符串标签与富文本切片都会去掉外层 <>,并保留内层称号颜色。
  • 自己的气泡显示裸名:本地回显只用真实资料名,看不到自己的称号/队伍前缀。移植了 e33chat 的 ownDisplayName():标签列表名 → 聊天回显中缓存到的装饰名 → 队伍前缀/颜色/后缀 → 裸名,公屏与私聊的自 bubbles 均生效;加入/断开时清空缓存。
  • 会话内换头像对方看不到:头像缓存以会话为生命周期,上传成功后没有任何通知——已缓存旧图的(或刚拿到"无头像"负缓存的)客户端要等重进世界才能刷新。现在上传成功后服务器会向所有客户端广播 avatar_changed,各端丢弃该 uuid 的缓存并在下一帧重新拉取;通道为可选注册,旧客户端自动忽略。
  • 通知设置分组无法折叠:0.2.5 新增的「通知」分组漏了折叠白名单登记,和其它分组不同,它一直保持展开无法收起。
  • 0.2.4 的通知横幅会把整个界面推出屏幕(回退项重做):横幅绘制时 saveLayer 缺少配对的 restore,每帧泄漏一层画布变换;叠加逐帧的密度缩放后变换指数级放大,面板向右下飞出屏幕并表现为"无法再打开面板/按键无响应"。已改为两段 restore,并移除 HUD 绘制路径——横幅只在面板画布内绘制。

更改

  • 通知音效换为原创合成音:横幅提示音替换为本仓库原创合成的气泡音(正弦滑频 + 噪声瞬态),不再使用来源受限的素材,发版无版权负担。
  • 聊天记录自动清理默认 7 天historyRetentionDays 默认值从 0(永久)改为 7;「保留聊天记录」开关本身仍默认关闭,开启后过期记录按周清理,不再无限增长。
  • Skia 画布护栏:每帧绘制结束后强制回退到进入时的画布栈基线。今后任何地方再漏 restore,后果最多影响一帧,不可能再累积成界面飞出。
  • 会话列表只保留在线玩家:离线私聊卡不再常驻列表,避免每次重建都做皮肤解析和排序;离线期间该会话不在列表里(无法从列表打开),对方重新上线时卡片自动恢复,磁盘里的私聊记录不受影响。
  • 别人资料页不再显示会话时长:本地会话计时只对自己有意义,不再把它显示在对方资料下。
  • 标题与标签使用真实粗体:新增 bundled-bold.otf(Noto Sans CJK SC Bold),不再用描边伪粗体。

Added

  • Notification banners: when you are @mentioned, quoted or sent a private message while the AtomChat panel is open (or within the next 4 seconds), a banner drops in at the top of the panel (sender avatar + type + name + content preview). Clicking it jumps to that message and highlights it briefly; up to three stack at once and each fades out after 4 seconds. With the panel closed no HUD is drawn — only the sound plays and the @N unread badge accumulates.
  • Notification sounds: the three events above share one bundled pop cue; it also fires while the panel is closed (2s de-duplication keeps spam quiet).
  • Notification settings: Settings → Chat → Notifications, with four switches (mention banner/sound, whisper banner/sound), a notification volume slider, and a Test sound card.

Fixed

  • Custom avatars failed to sync in some sessions: if an avatar request went unanswered for 3 seconds — exactly what happens when the other player joins and the integrated server is busiest — the client latched "server has no companion" for the whole session and never synced again. The host side was the most exposed, since conversation cards fire the first request the moment the other player appears. On top of that, the first avatar upload of a session was silently dropped unless a response had already come back. Timeouts now simply retry after a 5s cooldown instead of latching; only the real channel negotiation can mark the server companion-less; uploads pass as soon as negotiation allows; and a debug-gated [avatar] log line was added for each step.
  • Sender names rendered pure white: the angle-bracket slice branch synthesised a plain literal label, dropping the line's own run colours — every other player's name displayed in the fallback interface text colour. The branch now slices around the brackets run-wise (styles kept), and when a sender carries no colour at all the scoreboard team colour is applied as a fallback (debug builds log a [sender] line).
  • Panel background colour could not be changed: with blur enabled the panel tint was hardcoded (0xFF16191F), so panelBgColor had no effect at all. Both the blurred and unblurred paths now tint with the configured background colour, and a "Panel background color" row was added to the appearance settings.
  • Decorated names leaked the angle brackets on public bubbles: when the server wraps the whole decorated name in angle brackets (FTB Teams titles, <[称号]E33EPUS> 453), the e33chat-derived parser only stripped the < before the name, so other players saw <[称号]E33EPUS with the server's underline/click styling still attached. The cleanNameArea whole-wrap branch that was dropped in the port is restored: both the string label and the rich-text slice drop the wrapping pair while keeping the inner title colours.
  • Own bubbles showed a bare name: the local echo only used the real profile name, so your own title/team prefix never showed. Ported e33chat's ownDisplayName(): tab-list name → decorated name cached from own chat echoes → team prefix/colour/suffix → bare name, applied to both public and private own bubbles; the cache clears on join/disconnect.
  • Avatar changes never reached the other side mid-session: the avatar cache lives for one session and uploads triggered no notification, so a client that had already cached the old image (or negative-cached "no avatar") kept it until the next join. A successful upload now broadcasts avatar_changed to all clients, which drop that uuid's cache and re-request on the next frame; the channel is optional, so older clients simply ignore it.
  • The notification settings group could not be folded: the 0.2.5 "Notifications" group was missing from the foldable-group whitelist, so unlike every other settings group it stayed permanently expanded.
  • 0.2.4 banners flung the whole UI off screen (the rolled-back feature, rebuilt): drawBanner pushed a saveLayer without a matching restore, leaking one canvas transform per frame; combined with the per-frame density scale the transform compounded exponentially until the panel flew off screen, which also surfaced as "cannot reopen the panel" and unresponsive keys. Fixed with paired restores, and the HUD draw path is gone — banners render on the panel canvas only.

Changed

  • Notification cue replaced with an original synthesized pop: the banner sound is now a synthesized bubble pop (sine glide + noise transient) original to this repository, replacing an asset of restricted provenance — releases carry no copyright baggage.
  • Chat history auto-clean defaults to 7 days: historyRetentionDays changed from 0 (forever) to 7. The "Keep chat history" switch itself stays off by default; when enabled, expired history is pruned weekly instead of growing unbounded.
  • Skia canvas guard rail: every frame now rewinds to the canvas stack baseline it entered with. A future unbalanced save/restore can corrupt at most one frame instead of compounding into a runaway transform.
  • Online-only conversation cards: offline private-chat cards no longer stay in the list (no per-rebuild skin resolve/sort for players you cannot message); while they are offline the conversation cannot be opened from the list, the card returns when they join, and the on-disk history is untouched.
  • Other players' profiles no longer show the session timer: the local session timer is only meaningful for yourself, so it is hidden on other profiles.
  • Real bold headings and labels: added bundled-bold.otf (Noto Sans CJK SC Bold) instead of stroke-smeared faux bold.

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 07 Sep 16:14

v0.2.4

新增

  • 防刷屏:同一发送者连续发送完全相同的内容时合并为一条消息,名字旁显示 xN 次数;开关在设置 → 聊天。
  • 紧凑消息分组:同一发送者 5 分钟内的连续消息只保留第一条的头像与名字,后续气泡间距收紧(Discord/Telegram 式);开关在设置 → 聊天,默认关闭。
  • 跨消息文字拖选:文字选择不再限制在单条消息内,可跨多条消息拖选,Ctrl+C 一次复制多段。
  • 历史保留天数:设置 → 聊天可精确输入保留天数(0 = 永久,1–365 天),到期历史文件在进世界时自动清理;输入框支持 Enter 提交、Esc 取消、点击其他区域自动提交。
  • 数据目录治理与图片缓存压缩:自动下载的聊天图片缓存与 companion 他人头像数据从 config/atomchat/ 迁到 <游戏目录>/atomchat-data/;聊天图片磁盘缓存改为 768px WebP/PNG 压缩缓存,启动和写入时自动清理旧文件(上限 500 文件 / 100 MB),旧版迁移遗留目录自动删除;「关于」页新增「清除图片缓存」卡片(带二次确认),显示当前缓存占用。
  • 设置页可折叠分组与左对齐粗体组标题:所有设置子页的现有分区标题可折叠;组标题改为左对齐粗体并带细分隔线。

更改

  • 历史保留天数由滑条改为右侧输入框:避免滑条无法精确停在 1、3 等小数值;输入框常驻显示,点击即编辑。
  • 紧凑消息分组默认关闭
  • 恢复原版 bundled 字体:撤回 MiSans/Inter 实验,避免部分中文文本粗细不一。

修复

  • 打开聊天屏崩溃:紧凑分组在计算最后一条消息的下一行间距时越界(IndexOutOfBoundsException);边界探针现在在消息列表末尾直接返回 false。
  • 档案退出动画错乱:详情页互推返回时,pageNavDx 把“返回中”的档案页误判成“新页进入”,方向反/叠层;现按 push/pop 标志决定滑动方向。
  • 重复消息计数角标位置与强调色:计数移到气泡外侧垂直居中并跟随界面强调色,不再压住气泡。
  • 头像 companion 协议加固:客户端发送前检查通道是否协商,避免向无 companion 的服务器发未知包。
  • 历史保留天数输入框问题:修复点击后无光标、点其他区域不失焦、单次按键数字翻倍(1 变 11)等问题。
  • 中文文本粗细不一:回退到原 bundled 字体,消除部分字符由 MiSans/Inter 混排造成的字重差异。

Added

  • Anti-spam: consecutive identical messages from the same sender merge into one bubble with an xN counter. Toggle in Settings → Chat.
  • Compact message groups: within a same-sender five-minute run, only the first message keeps the avatar/name row and later bubbles use a tighter gap. Toggle in Settings → Chat, off by default.
  • Cross-message text selection: drag-select text across multiple messages and copy it all with Ctrl+C.
  • History retention days: Settings → Chat now lets you type the exact retention count (0 = forever, 1–365 days); expired files are pruned on world join. The field commits on Enter, cancels on Esc, and commits on outside click.
  • Data-dir cleanup and compressed image cache: auto-downloaded chat-image caches and companion avatar uploads moved from config/atomchat/ to <gameDir>/atomchat-data/; chat images are cached on disk as 768px WebP/PNG, trimmed at startup and after writes (500 files / 100 MB cap), and old marked migration directories are deleted automatically. About page has a confirm-guarded “Clear image cache” card showing current usage.
  • Collapsible settings groups with left-aligned bold headings: every settings sub-page now treats section headings as foldable groups; headings are bold and left-aligned with a divider.

Changed

  • Retention control is an exact input field instead of a slider: it sits on the right side of the row and always shows the current value.
  • Compact message groups default off.
  • Restored the bundled font: the MiSans/Inter experiment was reverted to fix uneven CJK stroke weights.

Fixed

  • Crash when opening the chat screen: compact-group lookahead indexed one past the last message; the edge probe now returns false at the end of the list.
  • Profile exit animation was reversed/overlapped: detail-to-detail pops used destination-rootness instead of the push/pop flag, so the profile page slid the wrong way.
  • Duplicate counter placement/accent: moved beside the bubble, vertically centred, using the accent colour.
  • Avatar companion protocol hardening: the client checks negotiated channels before sending requests/uploads.
  • Retention input issues: no caret, no blur on outside click, and doubled digits (1 became 11) are fixed.
  • Mixed CJK font weights: reverted to the original bundled font.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 07 Sep 06:24

v0.2.3

NeoForge 移植

  • 首次发布 NeoForge 1.21.1 版,功能与 Fabric 0.2.3 对齐。

NeoForge Port

  • First NeoForge 1.21.1 release, feature parity with Fabric 0.2.3.

新增

  • 常用语:输入栏新增第四个按钮(闪电图标),点开输入栏上方浮层。点选一条即插入输入框并聚焦(不直接发送,改完再发);列表底部「添加常用语」行与每行铅笔进入编辑时会借用聊天输入框承载输入——中文输入、IME 组字、光标全部走原生链路,回车保存、Esc 放弃、点面板外自动提交,期间输入栏以强调色描边与专属占位提示;点行右侧 × 直接删除。单条 ≤256 字符(MC 消息硬上限)、上限 20 条(到顶拒绝新增)。数据存 atomchat-client.jsonquickPhrases。与表情面板互斥。
  • 保留聊天记录(默认关):设置 → 聊天新增「保留聊天记录」开关。开启后按服务器/世界分别保存到 config/atomchat/history/<键>_<哈希>.jsonl:单人世界与局域网主机按世界名、多人按服务器列表显示名作键——键里不含端口,重开局域网(端口每次都变)记录不丢;同一服务器列表条目改名会换新文件(旧文件保留)。公屏与私聊都存(私聊按对象分流);重进同一服务器自动恢复,气泡颜色与可点击事件(/tell、Xaero 坐标、FTB 按钮、链接)完整保留;写盘走 30 秒节流的单线程队列,退服/切世界立即保存。historyRetentionDays(默认 0 = 永久)可手改配置,进世界时清理过期文件。
  • 清空聊天记录:设置 → 聊天「保留聊天记录」下方的卡片,复用通用两段确认(红字「确定清除?」3 秒超时)。未开启保存时只清当前会话显示;开启后同时删除本机对应文件——清空后等待中的自动保存不会把记录写回(代次守卫)。

Added

  • Quick phrases: a fourth composer button (lightning) opens a list above the input bar. Tapping a phrase inserts it into the composer and focuses it — it never sends on its own. Adding (the "Add a phrase" row) or editing (the pencil) borrows the composer field for input, so Chinese IME composition, the caret and history all work natively — Enter saves the phrase, Esc discards it, clicking elsewhere commits; the bar shows an accent ring and a dedicated hint while borrowed. Rows delete with the ×. Single phrases are capped at 256 characters and the list at 20. Stored as quickPhrases in atomchat-client.json. Mutually exclusive with the emoji panel.

修复

  • 常用语面板整体错位:面板矩形误用 LTRB 语义构建,导致整块面板反转、各元素散落到不同位置;现按 XYWH 构建。
  • 档案「恢复皮肤」无确认且易误触:改为两段确认(首击行变红「确定恢复?」,3 秒内再击才执行);无自定义头像时该行灰显不可点。
  • 自定义头像在「使用皮肤」后仍显示(重启也在):本地清除后 companion 又把服务端残留的已上传副本端了回来;现在自己的头像只由本机文件决定。
  • 档案头像 hover / 点击反馈缺失:无自定义头像时头像直接开选择器却没有可点的视觉提示;现在 hover 恒有渐变高亮、点头像恒弹管理菜单、编辑角标直达选择器。
  • 关闭常用语面板时界面飞出屏幕:saveLayer 未与 save 成对 restore,每帧泄漏一层矩阵栈;已补齐成对恢复。

Fixed

  • Phrase panel drawn inverted/off-screen: the panel rect used the LTRB constructor instead of makeXYWH, scattering every element; rebuilt as XYWH.
  • "Use skin" ran instantly with no confirmation: it now arms first (row turns red "Use skin?" for 3s) and only clears on the second tap; without a custom avatar the row is greyed out.
  • Custom avatar survived "use skin" (even across restarts): the server companion kept serving the uploaded copy after the local clear; the local player's avatar is now decided by the local file alone.
  • Avatar affordance on the profile page: hover always glows, the avatar tap always opens the change/use-skin menu (greyed row excepted), and the edit badge stays the shortcut to the picker.
  • UI flew off-screen while the phrase panel closed: an unpaired saveLayer leaked one matrix level per frame; the layer now restores before the outer save.
  • Chat history persistence (off by default): a "Keep chat history" switch in Settings → Chat. When on, history is saved per world to config/atomchat/history/<key>_<hash>.jsonl: singleplayer and LAN hosts key by world name, multiplayer by the server-list entry name — no port in the key, so re-opening a LAN world on a new port keeps its history; renaming a server-list entry starts a new file (the old one stays). Both public and private conversations are stored (private lines carry their partner); rejoining a world restores the feed with bubble colours and clickable spans (/tell, Xaero coordinates, FTB buttons, links) intact. Writes go through a 30-second throttled single-thread queue and flush on disconnect/world change. historyRetentionDays (default 0 = forever) can be hand-edited and prunes old files on world join.
  • Clear chat history: a card under the persistence switch, using the generic two-step confirm (red "confirm?" verb, 3s timeout). With saving off it wipes the current view; with saving on it also deletes the world's file, and an in-flight auto-save cannot resurrect it (generation guard).

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 07 Sep 00:20

v0.2.2

新增

  • 次要胶囊配色:系统消息、时间戳、引用胶囊的底色与文字色收拢为「次要胶囊底色 / 次要胶囊文字色」两个配置项(外观 → 气泡颜色组)。引用胶囊底色默认值随统一变更为半透明深色(原为半透明白)。
  • 配色组折叠与组级重置:外观页「气泡颜色 / 界面颜色」两个分组标题可点击折叠展开;展开时右侧「重置本组」一键恢复该组出厂配色(带二次确认)。
  • 颜色项实时预览:每个颜色配置项标题行按目标元素形状(气泡 / 胶囊 / 方块)渲染当前值小样,改色效果一眼可见。
  • 通用二次确认按钮:破坏性操作(清除壁纸等)改为右侧按钮变红「确定清除?」的确认形态,3 秒超时或点击其他位置自动取消。

修复

  • 色板色号输入框:色板打开时键盘事件被模态拦截,现在 hex 输入框支持 Ctrl+C 复制、Ctrl+V 粘贴(自动只保留 hex 字符,#4A90E2 整段可用)。
  • 时间戳从未渲染:首条消息上方现在始终显示时间戳分隔(对齐 e33chat 逻辑;「时间戳间隔」关闭时整体不显示)。
  • 档案返回动画错乱:从他人档案页返回时,滑出动画期间页面不再瞬间变回自己的档案(注入对象在页面真正离开导航栈后才重置)。

Added

  • Secondary capsule colours: the backgrounds and text of system messages, time dividers and quote pills are now driven by two new settings (secondary capsule background / text, under the bubble colour group). The quote pill's default background moves to the shared translucent dark tone.
  • Collapsible colour groups with per-group preview: the two colour groups on the appearance page fold via their headings, and every colour row shows a live preview square of the current value.
  • Generic two-step confirm button: destructive actions (clear wallpaper, etc.) turn the right-hand verb into a red "confirm?" state with a 3-second timeout and click-outside cancel.

Fixed

  • Colour picker hex input: keyboard events were swallowed by the modal; the hex field now supports Ctrl+C copy and Ctrl+V paste (non-hex characters are stripped, so pasting #4A90E2 works as-is).
  • Timestamps never rendered: the first message in a list now always carries a time divider (matching e33chat; turning the interval off disables them entirely).
  • Profile pop animation: returning from another player's profile no longer snaps the sliding-out page back to the local player's profile.

AtomChat 0.2.1

Choose a tag to compare

@E33EPUS E33EPUS released this 06 Sep 10:51
  • Image messages with CICode metadata and receiving toggle
  • New-message entrance animations
  • Emoji / kaomoji / emote panel
  • Settings shell rework with theme service
  • Message list split out of AtomChatScreen into MessageListView (refactor, no behavior change)

v0.1.8

Choose a tag to compare

@E33EPUS E33EPUS released this 05 Sep 14:12

AtomChat v0.1.8

新增 / Added

  • 个人档案页 / Profile page:底部「个人」标签变为真实页面——身份卡(圆形头像 + 编辑角标 + 玩家名)与可复制信息行:名字 / UUID / 延迟 / 身份(OP)/ 在线时长 / 游戏统计(挖掘·击杀·里程)/ 服务器地址。
    The "Profile" tab becomes a real page: an identity card plus copyable info rows (name, UUID, ping, role, session time, stats, server).
  • 本机自定义头像 / Custom avatar:选图后进入 QQ 式裁剪界面(固定圆圈、拖动平移、滚轮缩放、双击重置),确认后裁剪为 256px PNG。本机生效(档案页 + 自己的气泡),未来由服务端 companion 提供跨端同步。
    Pick an image, crop it QQ-style (fixed circle, drag to pan, wheel to zoom), and it applies locally to the profile page and your own bubbles.
  • 颜色配置 / Colour settings:外观页新增「颜色」分组——气泡文字 / 自身气泡 / 对方气泡 / 界面文字 / 强调色。预设色板即点即存,尾部「+」打开 HSV 调色盘(实时预览、hex 复制、hex 输入)。
    A new Colors group in Appearance with preset swatches and a full HSV picker (live preview, copyable hex, hex input).
  • 离线玩家识别 / Offline player memory(移植自 e33chat):记忆曾见玩家(名字↔UUID),机器人桥/中继转发的已下线玩家消息仍解析为真实气泡与头像。
    Players once seen in chat are remembered, so relayed lines from offline players parse as real bubbles instead of gray system capsules.
  • Mod 图标与链接 / Mod metadata:修复 ModMenu/PCL 图标,mod 列表的 website/issues 按钮可跳转 GitHub。

更改 / Changed

  • 次要文字颜色改为从界面文字颜色自动派生(不再单独配置)。
  • 底栏选中 tab 图标、展开的表情按钮取强调色;图片按钮图标重绘为横版。
  • The secondary text colour now derives from the interface text colour; the selected tab icon and emoji button take the accent colour; the image button glyph was redrawn as a landscape photo.

修复 / Fixed

  • 颜文字消息被识别为系统灰字(括号组颜文字在 NCR 服务器上触发解析失败)。
  • Bracket-only kaomoji no longer render as gray system bubbles on NCR servers.

安装 / Install:下载下方 jar 放入 mods 目录(Fabric 1.21.1,需 Fabric API)。
Drop the jar into your mods folder (Fabric 1.21.1, Fabric API required).

v0.1.7 鈥?璁剧疆椤?/ 鑷畾涔夊绾?/ 鐣岄潰缂╂斁

Choose a tag to compare

@E33EPUS E33EPUS released this 05 Sep 08:55

更改 / 修复

  • 设置页上线:底栏「设置」不再是占位页,改为 Win11 风格 2×2 磁贴主页(外观 / 聊天 / 隐私与屏蔽 / 关于),点击进入子页,复用与公屏/私聊一致的全宽 push/pop 转场。
  • 开关与滑块:每个选项卡片右侧带 iOS 比例开关(140ms 滑块);背景不透明度、面板宽度、界面缩放为可拖动滑块,全部选项即时生效并立即写盘,无需重启游戏
  • 自定义壁纸:从本地选一张图片作为面板背景(后台解码 + 自动降采样,不卡帧);与背景模糊互斥,不透明度滑块用于压暗壁纸保证文字可读。
  • 界面缩放:x0.75–x1.50 即时缩放整套 UI,与 MC 自身 GUI 缩放独立。
  • 真实生效的「界面动画」开关:关闭后页面转场、消息入场、面板开合等装饰动效全部跳终态;hover 反馈与滚轮惯性保留。
  • 隐私语义可选:「隐藏被屏蔽玩家的消息」可关,关掉后被屏蔽玩家公屏仍可见,但卡片灰化、私聊保持只读。
  • 聊天页:会话列表按「公屏 → 私聊」分组显示(居中分隔线);无其他玩家时显示图标空态;卡片 hover 淡入淡出。
  • 关于页:Mod logo + 字标 Hero 卡;版本、许可证、仓库与第三方组件(Skija / Skia / FlatLaf)均可点击跳转。
  • 性能:文字测量新增 LRU 缓存、截断改二分查找、设置目录与排序比较器只构建一次。
  • 修复:会话列表滚动后误显示「无在线玩家」空态。

Change / Fix

  • Settings page ships: a Windows 11 style 2x2 tile grid (Appearance / Chat / Privacy & blocking / About) opening into sub-pages with the same push/pop transitions as the chat pages.
  • Switches and sliders: iOS-proportioned toggle switches; background opacity, panel width and interface scale are sliders. Every option applies and persists instantly — no restart.
  • Custom wallpaper: pick a local image as the panel background (decoded off-thread, downsampled automatically); mutually exclusive with blur, and the opacity slider darkens it for readability.
  • Interface scale: x0.75-x1.50 rescales the whole UI live, independent of Minecraft's own GUI scale.
  • "Interface animations" is a real switch: turning it off lands every decorative transition instantly while hover feedback and wheel glide stay responsive.
  • Optional privacy semantics: "Hide blocked players' messages" can be turned off so blocked players stay visible in public chat while the card stays greyed out and private chat stays read-only.
  • Chat page: the conversation list is grouped into Public and Private with centred dividers; an illustrated empty state appears when nobody else is online; card highlights fade in and out.
  • About page: a hero card with the mod logo and wordmark; version, license, repository and the Skija / Skia / FlatLaf components are all clickable.
  • Performance: an LRU cache for text measurement, binary-search truncation, and the settings catalog / sort comparator are built once instead of per frame.
  • Fixed: the conversation list no longer shows a false "No players online" state after scrolling.

安装 / Install: Minecraft 1.21.1 · Fabric Loader 0.16.0+ · Fabric API · Java 21+

AtomChat v0.1.3

Choose a tag to compare

@E33EPUS E33EPUS released this 04 Sep 05:15

中文

  • 富文本聊天渲染:玩家名/正文支持颜色、下划线、点击与悬停;可点击 /tell、Xaero 坐标、FTB 接受/拒绝、外部链接;裸 http(s) 自动识别为可点击链接并在悬停时显示 URL。
  • 原版 HUD 占位[[CICode,...]] 图片代码在原版聊天栏显示为绿色 [图片],不再刷一长串 URL;引用消息显示为蓝色 [引用],保留发送者前缀。
  • 图片消息右键保存:右键图片气泡新增“保存”,通过 FlatLaf 另存为对话框选择位置,后台下载原始 URL 字节(GIF/WebP/PNG 原样保留)。
  • 右键菜单图标:复制 / 引用 / 保存均绘制 20×20 白色线性 SVG 图标。
  • 文件选择器改进:默认“详细信息”视图,图片文件在列表中直接显示内联缩略图,不再依赖右侧预览区。
  • 气泡/UI 修复:多行文本气泡宽度按最长行计算;引用胶囊与气泡外缘对齐;系统消息胶囊颜色与图片加载占位一致并保留半透明;普通网页链接不再被误当成图片消息。
  • 指令不再本地弹气泡:输入 / 指令不再制造自己的聊天气泡,与原版行为一致。
  • 稳定性修复:修复 AWT headless 导致图片选择器打不开;修复 0.1.2 中 HUD 重写未声明 cancellable 导致发送图片后被踢出单人游戏的问题。
  • 消息不被误吞:Xaero waypoint/路径分析等机器协议消息强制走系统通道;无频道身份、仅文本像“自己”的消息不再被 own-echo 误杀,遵循 e33chat“宁可不杀不可错杀”原则。

English

  • Rich-text chat rendering: player names/bodies support colors, underlines, click actions and hover tooltips; clickable /tell, Xaero coordinates, FTB accept/deny and external links work; bare http(s) URLs become clickable links with a hover URL tooltip.
  • Compact vanilla HUD placeholders: [[CICode,...]] image codes now show as green [Image] instead of a long URL, and quote replies show as blue [Quote] while keeping the sender prefix.
  • Save images from the context menu: right-click an image bubble → Save, pick a destination in the FlatLaf save dialog, and the original URL bytes are downloaded in the background (GIF/WebP/PNG preserved).
  • Context menu icons: Copy / Quote / Save now use 20×20 white line-style SVG icons.
  • File chooser improvements: defaults to Details view and shows inline thumbnails directly in the file list.
  • Bubble/UI fixes: multi-line bubble width hugs the longest line; quote capsule aligns with the bubble edge; system capsule uses the image-loading placeholder colour while staying translucent; ordinary web links are no longer mistaken for image messages.
  • No local bubble for commands: slash commands no longer manufacture a local chat bubble, matching vanilla behaviour.
  • Stability fixes: fixed the AWT headless issue that prevented the image picker from opening; fixed 0.1.2 being kicked from single-player when sending an image because the HUD-rewrite mixin was not declared cancellable.
  • Messages are never wrongly swallowed: Xaero waypoint/path-analysis machine protocols are forced to the system channel; meta-less messages that merely look like your own echo are no longer dropped, following e33chat's "rather show than kill" principle.