Repository navigation
v0.3.3
v0.3.3
控制台不再被刷屏冲爆:同类输出自动折叠、行数按万/百万/亿缩写、
还能往上翻更早的日志(内存之外的磁盘历史)。
[0.3.3] — 2026-09-26
Added
- 控制台可以往上翻更早的日志了(内存窗口之外的历史):列表顶部出现
「加载更早的日志」条目,点一下就从实例目录的console-output.log往前读一段
(读到头会接着读轮转的console-output.old.log)。- 实现:
ConsoleArchive从文件尾部按 256 KB 分块往回读,不把几 MB 日志整个读进内存。 - 边界处理(都是被测试抓出来的真 bug):块边界切断行时要把半行交给下一次调用
(只放在局部变量里会跨调用丢失,丢的往往正是要找的报错);提前凑够行数时偏移量
必须落在块内部(写成块起点会重复读同一块,表现为"翻不动");整块落在一行内部时
也要推进(否则死循环 → OOM)。回退偏移按字节数算 —— 中文一行 3 字节,用字符数会错位。 - 界面列表上限放宽到 6 万行(
CONSOLE_DISPLAY_MAX):否则回读的历史会被下一条
实时日志挤掉,表现成"点了加载没反应"。 - 用 LazyColumn 的 key 保持滚动位置,前插历史不会让视图跳走。
- 已知限制(已写进 KDoc):单行超过 128 KB 会被截断并标记 —— 往回读必须把逻辑行
拼完整,超长行会让中间状态膨胀(测试里直接 OOM)。真实日志行都在 1 KB 以内。 - 可回读的总量是磁盘上的约 16 MB(
console-output.log8 MB + 轮转的.old.log8 MB,
更旧的会被删)≈ 12 万行 —— 内存 5 万行 + 磁盘 16 MB,再早的确实不存在了。 - 新增
ConsoleArchiveTest6 例:分块拼回与原文逐行相同 / 每块 1 行也不漏 /
轮转前后都能读 / 读到文件头后 hasMore=false / 无日志文件安全返回 / 末行无换行符也能读。
- 实现: