v0.6.6-beta1
Pre-releaseFate UI v0.6.6-beta1
Important
Child-agent failures are now isolated from the root session. Fate UI no longer queues child reports during Pi's unsafe agent_end → agent_settled gap. A failed or late subagent report is deferred, delivered after settlement, and cannot terminate the main agent with Cannot continue from message role: assistant.
Root-session resilience
- Adds an explicit root turn lifecycle gate for legacy subagents and Agent Teams V2.
- Defers child reports that arrive after
agent_end, appends all pending reports, and wakes the parent only once afteragent_settled. - Falls back to the next direct turn if a child report cannot be attached, while keeping the full child result available in the Agents inspector.
- Adds regression coverage for the exact fatal continuation race and for V2 root-envelope routing.
Performance pass
- Replaces per-stream cloning of normalized 5,000-entry message, reasoning, tool, and timeline records with immutable entity values plus scalar projection versions.
- Stops rescanning the full visible timeline for ordinary tool-output updates; wait-poll grouping now invalidates only on relevant wait-tool lifecycle changes.
- Prunes post-cap timeline entities incrementally instead of rebuilding every normalized record on each overflow.
- Lazy-loads Settings, Command Palette, optional interface fonts, music, terminal, and Monaco surfaces. The unused React Query runtime was removed.
- Ships a purpose-built Monaco runtime with the complete editor interaction surface and Fate UI's supported language set, instead of every Monaco grammar and the unused LSP entrypoint.
- Loads Inter, Montserrat, and Poppins only when selected; Poppins now ships Chromium-native WOFF2 payloads without duplicate legacy WOFF files.
- Coalesces terminal resize work to one animation frame and suppresses unchanged PTY resize IPC.
- Resolves large directory-entry metadata with bounded concurrency while preserving ordering, symlink confinement, truncation, and project-generation checks.
- Extends the repeatable Electron renderer profiler with configurable 600/5,000-entry workloads and post-burst idle CPU sampling.
On the same Windows x64 development machine, five-run production medians versus the pre-pass baseline showed:
- 600-entry live workload: wall time 2,529.75 → 2,053.57 ms (-18.8%), script time 176.28 → 158.75 ms (-9.9%), and heap growth 7.12 MB → 1.98 MB (-72.2%).
- 5,000-entry live workload: task time 988.71 → 854.49 ms (-13.6%), heap growth 14.11 MB → 5.97 MB (-57.7%), and p95 timer lag 11.7 → 5.6 ms (-52.1%).
- The production entry chunk fell from approximately 1.9 MB to 852 KB, while the formerly monolithic Monaco payload was split and reduced from approximately 7.5 MB to 3.85 MB before on-demand language workers.
Exact results vary by hardware, project, model output, and operating system. The profiler reports contained no renderer console errors or long tasks.
Security hardening
- Routes yt-dlp extraction through a loopback-only HTTPS CONNECT proxy that resolves each destination once, rejects any private/local answer, and connects to the validated public IP directly.
- Routes Electron renderer HTTPS traffic through the same public-address gate, closing the DNS-rebinding and redirect gap for remote audio and other renderer media.
- Keeps cleartext proxy requests, non-443 CONNECT targets, credentials, local hostnames, mixed public/private DNS answers, and private IPv4/IPv6 ranges blocked.
- Updates Vite, Vitest, PostCSS, jsdom,
@electron/asar, and vulnerable transitive packages.pnpm audit --audit-level lowreported zero known advisories at release verification time. - Retains SHA-pinned GitHub Actions, least-privilege job permissions, exact artifact-set checks, installer smoke tests, and release checksum verification.
This was a bounded defensive review, not a claim that any non-trivial application is vulnerability-free. Optional standalone Semgrep/gitleaks/pip-audit analyzers were unavailable locally; the release is additionally gated by dependency audit, deterministic candidate scanning, manual trust-boundary review, unit/integration tests, Electron E2E, and the cross-platform CI matrix.
Compatibility and known limitations
- Existing settings, sessions, projects, themes, fonts, music queues, and Agent Team data require no manual migration.
- Public beta installers remain unsigned, so Windows SmartScreen and macOS Gatekeeper may show an unknown-publisher warning.
- Optional fonts and heavy editor workers now load on first use; subsequent opens reuse the cached module and font resources.
Verification and installers
The release is gated by strict TypeScript, the full Vitest suite, Playwright Electron E2E, version/tag validation, dependency audit, production builds, and the GitHub Actions package matrix. CI builds, installs or mounts, and smoke-tests fresh Windows x64, macOS Apple Silicon, macOS Intel, and Linux x64 packages before publishing exactly seven versioned installers plus SHA256SUMS. No prior-release installer is reused.