Releases: dacez/yimsg
Release list
Yimsg 0.1.4
Yimsg 0.1.4
0.1.4 是一次以前端分层与未读一致性为主的版本:把 BoundedList 组件里不属于它的三样东西交还宿主,修掉一批「判据放错地方」引发的未读红点与新消息提示条缺陷,并让组织展示名的刷新时机真正跟上用户操作。
BoundedList 组件边界收敛
- 提示条移出组件:组件只报
state.stale/state.failed并提供唯一追平入口catchUp(),提示条 DOM 由宿主的views/list-pill.ts接线。顺带修掉一个隐藏缺陷——十二个实例全配了重试文案,其中七个因为关闭了提示条而永远不显示,首屏失败后用户根本没有重试入口。 - 搜索防抖移出组件:改由宿主的
views/utils.ts提供debounce(含flush/cancel),四处搜索框各自接线;消息搜索关闭面板时一并cancel,旧关键字不会在 300ms 后把结果填回来。 - 本地切片数据源移出组件:移到
views/local-page-source.ts,并删掉它的order选项——首页取哪一端改由请求携带的freshEdge决定,消除「两处 order 必须一致、不一致就静默取错端」的隐式契约。 reachPx负值魔法值改为显式的autoLoad开关:reachPx只管「多近算触界」,要不要自动补页单独表达。beforeRender空批次也调用,宿主不再需要非空断言去赌组件的调用顺序。- 组件从 1912 行降到 1788 行,文件 11 → 10,顶层选项 24 → 23。
未读红点与新消息提示条
- 上翻阅读时点「有新消息」追平后,会话列表红点与导航红点当场消失,不再要等下一条消息在贴底状态下到达才顺带清掉。清未读的判据统一为「消息窗口追平到新鲜端」,点提示条、自己滑回底部、切走视图后贴底切回来都走同一条路径。
- 「有新消息」提示条改为悬浮在消息列表底部,不再被定位进输入框里,也不随输入框高度变化漂移。
- 切到通讯录 / 设置视图期间收到的消息,切回聊天视图后会补进消息列表并清掉红点。此前聊天视图不可见时事件入口直接早退,通知被整条吞掉,切回来消息不在列表里、滚动也补不回来。
- 清未读不再依赖「打开会话那一刻的会话快照」。该快照此后永不更新,用它判断「现在有没有未读」完全看运气:打开时有红点的会话每次切回都白清一次,打开时没红点的会话则永远清不掉。
- 「某个主视图是否可见」的判据从六处各写一遍收敛为
utils.ts的isViewVisible()一处。
组织与通讯录
- 组织 / tag 展示名改为点击驱动强刷:点开组织条目、切换面包屑、下钻子部门、打开管理弹层、弹层内切换节点以及每次写操作成功后都绕过 TTL 重取,改名后发起端不再在缓存有效期内一直显示旧名。
display:updated驱动的重绘保持普通读,避免强刷回环。 - 组织被删除或本人被移出后,已经打开的组织详情会自动收起,不把陈旧的面包屑与管理入口留在屏幕上;判据同时覆盖「服务端返回失效错误码」和「通讯录入口已消失」两种情况,网络抖动不会被误判成组织已消失。
- 新增
docs/architecture/展示资料缓存刷新策略.md,集中记录四类展示资料的 TTL、三条刷新通道、强刷场景全表与回环规则。
测试与工程
- 新增 BoundedList 提示条、本地切片源、防抖的宿主侧单测,以及打开中会话刷新契约的单测(覆盖「视图隐藏时照样 invalidate」「不读未读快照」两条回归)。
- 新增端到端用例:追平后红点消失、提示条位于输入框上方、切走视图收消息再切回补齐并清红点、切走时正在读历史则只点亮提示条。
- 修掉两处与负载相关的脆弱超时:UIKit 单测显式
testTimeout: 20s(冷缓存下动态 import 本身就要 20s 量级),清数据用例的 toast 断言放宽到 60s。
下载
- Windows x86-64:
yimsg-0.1.4-windows-x86_64.zip - Linux x86-64:
yimsg-0.1.4-linux-x86_64.tar.gz - Linux ARM64:
yimsg-0.1.4-linux-arm64.tar.gz - macOS Apple Silicon:
yimsg-0.1.4-macos-arm64.tar.gz
每个发行包包含 yimsg、yimsg-cli、yimsg-agent、完整 Web 产物、配置示例、中英文快速开始和许可证文件。请使用 SHA256SUMS.txt 校验下载内容。
Yimsg 0.1.3
Yimsg 0.1.3
0.1.3 是一次以前端列表基础设施为主的版本:新增并落地统一的 BoundedList 有界列表组件,把会话、消息、通讯录、群成员、转发、搜索等 13 处列表收敛到同一套分页、滚动与追平实现;同时重构测试分层、补齐独立测试入口,并修复一批移动端与文字渲染问题。
BoundedList 有界列表组件
- 新增
packages/uikit/src/app/bounded-list/组件:调用方只提供「怎么取一页」和「怎么画一行」,分页、窗口裁剪、渲染复用、滚动保持、背景追平、本端写入、选中态、错误态与释放全部由组件负责。 - 内存与 DOM 是与后端总量无关的常数:渲染行数恒等于
pageSize × maxPages(权威窗口)+pageSize(本地层上限)+ 调用方钉住的条目数。 - 采用「权威窗口 + 本地层」模型:本端发送、乐观插入和撤回通过
upsertLocal/removeLocal立即可见,权威响应落地时不再闪动。 - 轻通知按身份定向刷新;窗口未追平新鲜端时改为提示条,提示条只表达「有 / 没有」新内容,不再展示会漂移的待追平计数。
- 会话切换、筛选和关键字变化会作废旧世代请求,旧响应不会覆盖新窗口。
- 全部 13 处生产列表迁移到该组件:会话列表、消息列表、通讯录好友、待处理 / 已发出好友请求、群成员详情、转发会话与通讯录候选、建群候选、添加群成员候选、提及群成员、会话内消息搜索。
- 修复历史遗留的 25 条已确认缺陷,并归档到
docs/archive/BoundedList缺陷列表.md;新增packages/uikit/docs/boundedlist/专题文档(导读、功能说明、组件设计、生产集成、测试方案、缺陷列表)。
Web 与 UIKit
- 修复消息气泡与输入框中文文字顶部被裁切的问题。
- 优化移动端消息输入区的布局与交互。
- 会话列表加号按钮改为下拉菜单,建群支持默认群名称;移除会话列表顶部冗余头像入口。
- 转发弹窗支持直接从通讯录选择联系人。
- 设置页顶部增加浅蓝渐变导航栏,与联系人页保持一致。
测试与工程
- 重构测试分层,拆出 unit / integration / E2E / component / performance 五个独立入口(
./tools/run_unit_tests.sh等),./tools/run_all_tests.sh按 unit → integration → E2E → component 顺序调用,性能门禁保持独立。 - 新增 BoundedList 浏览器组件用例与性能回归用例,单元测试覆盖率补到 100%。
- 消除 friends 分页、消息顺序、消息翻页锚点等用例在并行套件下的偶发竞态,隔离并发测试与清理竞态。
- 增强文档一致性检查工具,补齐其自身的测试用例。
官网
- 修复官网一键部署 Windows 命令的解压路径错误。
下载
- Windows x86-64:
yimsg-0.1.3-windows-x86_64.zip - Linux x86-64:
yimsg-0.1.3-linux-x86_64.tar.gz - Linux ARM64:
yimsg-0.1.3-linux-arm64.tar.gz - macOS Apple Silicon:
yimsg-0.1.3-macos-arm64.tar.gz
每个发行包包含 yimsg、yimsg-cli、yimsg-agent、完整 Web 产物、配置示例、中英文快速开始和许可证文件。请使用 SHA256SUMS.txt 校验下载内容。
Yimsg 0.1.2
Yimsg 0.1.2
0.1.2 聚焦真实即时通讯体验、移动端交互和资料同步策略,补齐搜索、提及、Markdown、群管理与消息发送反馈,并修复多项线上真实操作测试发现的问题。
消息与搜索
- 新增全局聊天搜索、通讯录搜索和消息内容搜索,支持从搜索结果跳转并高亮目标消息。
- 新增群聊
@成员与@全体成员,协议、SDK 和 UIKit 使用统一的 Mention 消息结构。 - 新增 Markdown 撰写模式和安全渲染,支持常用格式与 1-4 级标题。
- 引用、单条转发和多选合并转发支持点击查看完整内容。
- 文字、Markdown、引用、提及、图片和文件消息接入乐观发送状态;图片发送完成后预加载真实资源,减少闪烁。
- 补齐新消息提示、自动滚动和历史消息定位,避免阅读旧消息时被强制拉回底部。
群聊、资料与多端同步
- 群详情支持成员添加和群主移出成员;普通成员可以邀请自己的好友,但不能移出群成员。
- 用户和群资料采用按需强制刷新:不向全部好友或群成员广播头像、昵称变化;重新进入会话或打开详情时从服务端刷新并更新本地缓存。
- 完善多设备未读、会话列表和好友状态同步,补充被移出群聊后的明确错误提示。
Web 与 UIKit
- 改进移动端会话、通讯录顶栏和返回交互,修复输入框占位文字及多种窄屏布局问题。
- 统一业务错误的本地化提示,修复撤回、群聊、联系人和多选工具栏中的中英文显示问题。
- UIKit 嵌入、多实例、移动端和持久存储模式增加真实浏览器回归覆盖。
Agent
- DeepSeek 模型更新为
deepseek-v4-flash,API Key 使用独立系统文件管理。 - 自动回复统一使用 Markdown 消息,知识库与线上部署流程继续随版本构建。
下载
- Windows x86-64:
yimsg-0.1.2-windows-x86_64.zip - Linux x86-64:
yimsg-0.1.2-linux-x86_64.tar.gz - Linux ARM64:
yimsg-0.1.2-linux-arm64.tar.gz - macOS Apple Silicon:
yimsg-0.1.2-macos-arm64.tar.gz
每个发行包包含 yimsg、yimsg-cli、yimsg-agent、完整 Web 产物、配置示例、中英文快速开始和许可证文件。请使用 SHA256SUMS.txt 校验下载内容。
Yimsg 0.1.1
Yimsg 0.1.1
在 0.1.0 的基础上,发行包新增两个独立命令行工具,并扩大 Apache-2.0 许可证覆盖范围。
发行包新增内容
yimsg-cli:供 AI 调用的命令行客户端,登录后可增量同步消息、按游标查询待处理消息、查询联系人/群资料、收发消息。yimsg-agent:多账号自动回复常驻进程,调用 DeepSeek API 自动回答消息,支持私有 + 共享知识库。
两者与 yimsg(服务端)一起打包进同一个平台压缩包,用法示例见包内 README.zh-CN.txt / README.en.txt,完整方案见仓库 cli/README.md、agent/README.md。
许可证变更
cli/** 与 agent/** 现在与 Protocol、SDK、UIKit、官网代码一样使用 Apache-2.0;Server 与官方 Web App 仍为 AGPL-3.0-only。详见 LICENSING.md。
下载后直接运行
- Windows x86-64:
yimsg-0.1.1-windows-x86_64.zip - Linux x86-64:
yimsg-0.1.1-linux-x86_64.tar.gz - Linux ARM64:
yimsg-0.1.1-linux-arm64.tar.gz - macOS Apple Silicon:
yimsg-0.1.1-macos-arm64.tar.gz
解压后在目录中运行 yimsg(Windows 为 yimsg.exe),无需配置文件。默认访问地址是 http://127.0.0.1:38081/;需要让其它设备访问时,运行 yimsg --listen 0.0.0.0:38081。
每个发行包都包含中英文快速开始、完整 Web 产物、配置示例和许可证文件。可使用 SHA256SUMS.txt 校验下载内容。
Yimsg 0.1 是单机、单进程架构:一套部署可同时服务多个地点、终端、网站和业务系统,但不属于多机集群。
Yimsg 0.1.0
Yimsg 0.1.0
第一个可下载发行版,提供完整私有 IM 服务、Web App、UIKit 和官网静态资源。
下载后直接运行
- Windows x86-64:
yimsg-0.1.0-windows-x86_64.zip - Linux x86-64:
yimsg-0.1.0-linux-x86_64.tar.gz - Linux ARM64:
yimsg-0.1.0-linux-arm64.tar.gz - macOS Apple Silicon:
yimsg-0.1.0-macos-arm64.tar.gz
解压后在目录中运行 yimsg(Windows 为 yimsg.exe),无需配置文件。默认访问地址是 http://127.0.0.1:38081/;需要让其它设备访问时,运行 yimsg --listen 0.0.0.0:38081。
每个发行包都包含中英文快速开始、完整 Web 产物、配置示例和许可证文件。可使用 SHA256SUMS.txt 校验下载内容。
Yimsg 0.1 是单机、单进程架构:一套部署可同时服务多个地点、终端、网站和业务系统,但不属于多机集群。