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 校验下载内容。