perfetto-analyzer 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.5] - 2026-07-09
4
+
5
+ ### Adicionado
6
+ - **`parse_perfetto_pb.py`** — Nova função `extract_thread_states()` que analisa a tabela `thread_state` do Perfetto: detecta I/O síncrono (estado `D` — uninterruptible sleep com `blocked_function`) e contenção de locks Java (slices de Monitor) por thread do app. Dado ausente nos traces anteriores que agora resolve o padrão "app travou mas o profiler não mostra nada".
7
+ - **`parse_perfetto_pb.py`** — Nova função `extract_cpu_megacycles()` usando o stdlib module `linux.cpu.utilization.process` (Android 12+). Retorna `[]` silenciosamente em versões anteriores.
8
+ - **`scripts/configs/oom.textproto`** — Novo tipo de trace `oom`: captura heap dump automaticamente ao momento do `OutOfMemoryError` via trigger `android.java_hprof.oom`. Aguarda até 1h o crash acontecer.
9
+ - **`analyze_metrics.py`** — Nova função `analyze_thread_states()` que gera issue `critical` quando a main thread está em I/O síncrono >10ms e `warning` para contenção de lock >5ms.
10
+ - **`generate_report.py`** — Nova seção **"Contenção de Threads"** na seção CPU com tabelas separadas para I/O bloqueante e Monitor contention.
11
+ - **`generate_report.py`** — Nova seção **"CPU Megacycles por Processo"** exibida quando disponível (Android 12+).
12
+ - **`collect_trace.py`** — Suporte ao tipo `oom`: modo especial sem countdown, aguarda o crash via Ctrl+C para cancelar.
13
+
14
+ ### Referências (cookbooks do Perfetto que inspiraram estas melhorias)
15
+ - [Android Trace Analysis](https://perfetto.dev/docs/getting-started/android-trace-analysis)
16
+ - [Android OOM](https://perfetto.dev/docs/case-studies/android-outofmemoryerror)
17
+
3
18
  ## [1.0.4] - 2026-07-09
4
19
 
5
20
  ### Adicionado
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perfetto-analyzer",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "AI skill for Android performance analysis using Perfetto — works with Claude Code, Cursor, GitHub Copilot, Codex, Antigravity and Devin",
5
5
  "bin": {
6
6
  "perfetto-analyzer": "bin/cli.js"
@@ -0,0 +1,25 @@
1
+ buffers: {
2
+ size_kb: 524288
3
+ fill_policy: DISCARD
4
+ }
5
+
6
+ data_sources: {
7
+ config {
8
+ name: "android.java_hprof.oom"
9
+ java_hprof_config {
10
+ process_cmdline: "__PACKAGE__"
11
+ }
12
+ }
13
+ }
14
+
15
+ # Dispara automaticamente ao detectar java.lang.OutOfMemoryError
16
+ # no processo monitorado. Para o trace 500ms após a detecção
17
+ # para garantir que o heap dump seja capturado.
18
+ trigger_config {
19
+ trigger_mode: STOP_TRACING
20
+ triggers {
21
+ name: "com.android.telemetry.art-outofmemory"
22
+ stop_delay_ms: 500
23
+ }
24
+ trigger_timeout_ms: 3600000
25
+ }