Repository navigation
v0.2.18
v0.2.18
Fixed & Changed
- 真正跨帧提交 T0(消除
DispatchQueue.main.async同帧合并阻塞):- 使用
RunLoop.main.common模式 0 秒 Timer(带withTaskCancellationHandler即时取消),严格在当前事件周期kCFRunLoopBeforeWaiting将 T0 帧(左侧选中高亮 + 加载态)提交给屏幕之后再进入 T1,彻底避免 T0 与 T1 被合并到同一次主线程同步事务。
- 使用
- macOS 12 列表加载两阶段渐进挂载(T1 先挂 15 条视口行,T2 补齐全部行):
- 列表挂载首帧仅测量并渲染首屏可见的 15 行(耗时
< 10ms),随后在.task(id: page)下一帧自动放开至全部行(保证滚动条与尾部分页 100% 完整);若在加载或挂载中途切换侧栏,.task自动取消,绝不阻塞新点击。
- 列表挂载首帧仅测量并渲染首屏可见的 15 行(耗时
- 控制器层独占取消未完成的页面网络请求:
GotifySessionController维护唯一activePageLoadTask,切走时立即取消前一个未完成分类的底层网络请求。
- 列表行标题与摘要彻底脱离主线程
AttributedString(markdown:):plainTextSummary与listRowSummaryText采用单遍纯字符流去标记算法(stripInlineMarkdownToPlainText),列表行挂载 0 次调用 CommonMark 富文本解析器。
Checksums (SHA-256)
bab56f66e94e674f9d7223b5383f99f010ef11337c6f8015920adee4c712eaeb GotifyDesktop-macOS-arm64.dmg
ed31f617710c2b5193eabb5ebb1949d91fbbc362f5f37424f5a5f33bef0488f7 GotifyDesktop-macOS-amd64.dmg