コンテンツにスキップ
すべてのリリース

v0.2.7

にリリース。

Highlights

Click-to-restart updater (Zed-style)

The in-app updater now silently downloads + installs in the background as soon as a release is detected, then parks at a ReadyToRestart pill. The click that used to kick off "download + 2 s analytics flush" now only invokes cx.restart() — perceived restart latency drops to GPUI's ~100 ms relauncher poll. Externally-managed installs (Flatpak, Snap, distro packages, or any binary built with PANEFLOW_UPDATE_EXPLANATION) get a copy-the-upgrade-command toast instead of an unwanted download. Mirrors crates/auto_update from Zed.

Pixel-perfect terminal rendering parity with Zed

PRD terminal-rendering-parity (US-001..US-008) delivered:

  • PANEFLOW_PIXEL_PROBE instrumentation + opt-in cell-bounds overlay (debug-only, zero release cost).
  • Cell width / line height snapped to integer pixels at measurement time (WezTerm convention).
  • Glyph X/Y snap before ShapedLine::paint.
  • Shared-boundary background-rect alignment via per-frame cell_x_boundaries / cell_y_boundaries arrays.
  • block_char_coverages extended with 11 codepoints — ▔ ▖ ▗ ▘ ▝ ▙ ▚ ▛ ▜ ▞ ▟ (single + multi-quadrants). Required for Claude Code's banner robot.
  • Single shared cursor-blink phase across every pane (replaces N per-pane smol::Timer loops).
  • APCA-validated selection_foreground recomputed at theme load against an opaque selection background.
  • Opt-in ligatures via paneflow.json terminal.ligatures, hot-reloaded through the existing 500 ms font-config cache.

Plus Codex CLI compatibility fixes the pixel probe surfaced:

  • OSC 10/11/12 now respond synchronously with the correct NamedColor index (256/257/258 instead of the OSC code itself). Previously crossterm's query_background_color() in Codex timed out and never painted its input-bar tint.
  • Background rects no longer extend horizontally into the gutter — matches Zed and prevents Codex's input bar from leaking across the widget width.

Cross-platform AI hooks for Claude Code + Codex

Run claude or codex inside a PaneFlow terminal and the workspace card in the sidebar now shows Thinking / WaitingForInput / Finished badges in real time. End-to-end implementation of prd-ai-hooks-cross-platform across all six target triples (Linux x64/aarch64, macOS aarch64, Windows x64).

  • New paneflow-shim crate intercepts claude / codex on PATH, idempotently injects hook configs, captures SIGINT for ai.stop events, sends ai.session_end on clean exit.
  • New paneflow-ai-hook crate is a tiny blocking JSON-RPC client invoked from the AI tool's hook commands — maps each event to one of six IPC methods (ai.session_start, ai.prompt_submit, ai.tool_use, ai.notification, ai.stop, ai.session_end).
  • Both binaries embedded via rust-embed, atomically extracted on first PTY spawn with SHA-256 idempotent fast-path (now re-verified after write so antivirus tampering doesn't poison the cache).
  • Shell integration (zsh precmd, bash PROMPT_COMMAND, fish --init-command, pwsh -NoExit) re-prepends $PANEFLOW_BIN_DIR to PATH after user rc files run.
  • 6 bug fixes uncovered during live testing: PATH-prepend race, stale .codex regular-file blocking create_dir_all, missing $PANEFLOW_AI_TOOL on the child env, missing ai.session_end on /exit, Ctrl+C killing the shim before notification, and false-positive notification badges from informational events.
  • Notification events whitelisted to permission_prompt + elicitation_dialog; everything else now logs to $PANEFLOW_HOOK_LOG instead of going into the void, so the whitelist can iterate from real telemetry.
  • Refactor: typed AiTool enum replacing &'static str, consolidated HookConfigGuard + CodexHookConfigGuard into shared install/cleanup helpers, orphan-config sweep at startup if a previous SIGKILL'd session left stale entries.
  • paneflow-shim ships with 24 unit tests + integration tests against a mock IPC server.

Security & supply chain

  • rustls-webpki 0.103.12 → 0.103.13 for RUSTSEC-2026-0104 — reachable panic in from_der on a syntactically-valid empty BIT STRING in the onlySomeReasons CRL extension, before signature verification. Pulled transitively via ureq and GPUI's http_client.
  • cargo-deny pin bumped from ^0.14 to ^0.19 so CI accepts modern deny.toml syntax (unmaintained = "workspace", [[licenses.exceptions]]).
  • License allow list widened for 0BSD, MPL-2.0, CC0-1.0, CDLA-Permissive-2.0, bzip2-1.0.6, NCSA (all OSI-approved or public-domain-equivalent, present in GPUI's transitive tree).
  • Per-crate exceptions added for Zed's zlog, ztracing, ztracing_macro (GPL-3.0-or-later, dev-deps of GPUI only — never reach the shipped binary).
  • All sub-crates under crates/ now inherit license.workspace = true (closes three "unlicensed" cargo-deny errors).

Polish

  • Privacy/telemetry settings tab translated from French to English (no behavior change).
  • Title bar SystemHint pill now uses cursor_pointer so every interactive pill state feels like a button.
  • **/target/ added to .gitignore so multi-MB build artifacts in crates/* and src-app/ aren't accidentally staged.

CI

  • macOS x86_64 quality-gate leg disabled until v0.3.0 — macos-13 runner queue times of 30–60 min were leaving release runs stuck in in_progress despite continue-on-error: true. macOS aarch64 (Apple Silicon) still covers day-to-day cross-compile signal. Re-enable when Intel-Mac signing posture (Apple Dev secrets, codesign + notarytool) lands in v0.3.0.
  • Windows clippy dead_code for Codex symbols silenced via #[cfg(unix)] gates on symbols only reachable from Unix code paths.

Full Changelog: https://github.com/ArthurDEV44/paneflow/compare/v0.2.6...v0.2.7

ノートは GitHub のリリース から直接同期されています。