Skip to content

v0.1.0-alpha.27

Pre-release
Pre-release

Choose a tag to compare

@guilhermeyo guilhermeyo released this 30 May 13:59
· 2 commits to main since this release
a0479c5

Startup performance — picker GUI mais rápido

Release focada em latência percebida do GUI. Três otimizações ortogonais que cortam o cold start, principalmente no macOS.

Mudanças

  1. Disk cache ~/Library/Caches/mclovin/browsers.json (TTL 1h)

    • detect_browsers() lê do disco antes de escanear /Applications ou XDG dirs.
    • Cada URL click spawnava um processo fresco que reescaneava tudo. Agora o cache cross-invocation mata a hot path. Linux: ganho marginal (CLI já era <30ms). macOS: 80-95ms economizados.
    • Force refresh: rm ~/Library/Caches/mclovin/browsers.json (ou ~/.cache/mclovin/browsers.json no Linux). 1h TTL pega novos browsers instalados.
  2. plist crate substitui plutil subprocess (macOS)

    • parse_app_bundle lia Info.plist via plutil -convert json -o - (fork por bundle). Com 10+ apps em /Applications, somava ~100ms.
    • Crate plist (1.7) parsea XML + binary plist puro Rust, zero forks. ~10x mais rápido por bundle.
  3. Skip maybe_spawn_background_check no picker path

    • Update check forkava um child em cada gui::run, incluindo o picker (hot path).
    • Movido pra StartScreen::Settings apenas. Picker invocation: 50-100ms a menos.
    • Banner de update aparece na próxima abertura de Settings.

Numbers (mac44)

alpha.26 alpha.27 cold alpha.27 warm cache
mclovin list-browsers 122ms 11ms 4ms
Speedup 11x 30x

Picker GUI cold (estimado): ~500ms → ~200ms.

Sem mudanças de feature

Mesmas features de alpha.25/26 (file handler, incognito, Safari disable). Pura perf.

Auto-update

Da alpha.25/alpha.26, mclovin update instala alpha.27 + refresh self-heal de .desktop/Info.plist mantém compatibilidade.