Skip to content

v0.3.3

Choose a tag to compare

@0Sakura721 0Sakura721 released this 26 Sep 11:19
· 126 commits to main since this release

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.log 8 MB + 轮转的 .old.log 8 MB,
      更旧的会被删)≈ 12 万行 —— 内存 5 万行 + 磁盘 16 MB,再早的确实不存在了。
    • 新增 ConsoleArchiveTest 6 例:分块拼回与原文逐行相同 / 每块 1 行也不漏 /
      轮转前后都能读 / 读到文件头后 hasMore=false / 无日志文件安全返回 / 末行无换行符也能读。