Skip to content

feat: add unified session timeline, main-thread blocking watchdog, and graceful Zone fallback - #107

Merged
AmisKwok merged 5 commits into
mainfrom
feat/1.12.0-session-timeline-watchdog
Sep 17, 2026
Merged

AmisKwok merged 5 commits into
mainfrom
feat/1.12.0-session-timeline-watchdog

Conversation

@AmisKwok

@AmisKwok AmisKwok commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Summary / 摘要

Add a unified session timeline and a main-thread blocking watchdog, and make runAppWithInspector degrade gracefully instead of crashing on a pre-initialized binding. / 新增统一会话时间线与主线程阻塞看门狗,并让 runAppWithInspector 在 binding 已初始化时优雅降级而非崩溃。

Changes / 变更

  • Unified session timeline (TimelineViewer) merges network / logs / errors / routes / alerts into one time-ordered stream, with per-source filtering and a ±N-second focus-around-any-event mode (TimelineService). It sits after the Routes tab and before the Widgets tab. / 统一会话时间线(TimelineViewer)把网络 / 日志 / 异常 / 路由 / 告警归并为一条时间流,支持逐来源筛选与「聚焦任意事件前后 ±N 秒」模式(TimelineService);Tab 位于 Routes 之后、Widgets 之前。
  • Main-thread blocking watchdog (BlockingWatchdogCard in the FPS tab) detects UI-isolate stalls invisible to FPS via a 100ms heartbeat (off by default, own switch). / 主线程阻塞看门狗(FPS 页内 BlockingWatchdogCard)用 100ms 心跳捕捉 FPS 看不见的 UI isolate 卡死(默认关闭、独立开关)。
  • runAppWithInspector no longer throws "Zone mismatch" when the binding was pre-initialized; it degrades to a plain runApp (debugPrint still captured). / runAppWithInspector 在 binding 预初始化时不再抛 "Zone mismatch",降级为普通 runApp(debugPrint 仍捕获)。
  • Release version-consistency check (tool/check_release.dart + test/version_consistency_test.dart) plus a CI step; InspectorVersion.value and all version strings bumped to 1.12.0. / 发版版本一致性自检(tool/check_release.dart + 测试)与 CI 步骤;InspectorVersion.value 及各版本串升至 1.12.0。
  • Fix timeline card paint crash (non-uniform border with borderRadius); the kind accent is now an inner bar. / 修复时间线卡片圆角 + 异色边框的绘制崩溃,kind 色条改为卡片内竖条。

Context / 背景

The panels were siloed across data sources, real stalls produced zero frames (so FPS read idle), and the "Zone mismatch" assertion was the most common first-run crash for newcomers. A recurring version-drift mistake also motivated an automated guard. / 各面板数据源彼此割裂,真实卡死时零帧导致 FPS 显示空闲,而 "Zone mismatch" 断言是新手最常见的首跑崩溃;反复出现的版本漂移也催生了自动化校验。

Checklist / 检查项

  • Title follows Conventional Commits / 标题符合约定式提交
  • CI checks pass after merge / 合入后 CI 通过

Test plan

  • flutter test is green (283+ tests, incl. new timeline / watchdog / version tests) / flutter test 全绿(含新增时间线 / 看门狗 / 版本测试)
  • Build and open the inspector on a device: verify the Timeline tab renders between Routes and Widgets, and toggle the blocking watchdog in the FPS tab / 在设备构建并打开检查器,确认 Timeline 位于 Routes 与 Widgets 之间,并在 FPS 页开关看门狗

🤖 Generated with Zero Buddy

@AmisKwok
AmisKwok merged commit 7608d86 into main Sep 17, 2026
7 checks passed
@AmisKwok
AmisKwok deleted the feat/1.12.0-session-timeline-watchdog branch September 17, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant