---
title: "Foxl Blog"
description: "Engineering deep-dives, incident reports, measured tradeoffs, and release notes from the team building Foxl."
date_modified: "2026-07-24"
canonical_url: "https://foxl.ai/blog"
markdown_url: "https://foxl.ai/blog/index.md"
rss_url: "https://foxl.ai/rss.xml"
---

<!-- Generated by scripts/blog-publishing.mjs; do not edit. -->

# Foxl Blog

Engineering deep-dives, incident reports, measured tradeoffs, and release notes from the team building Foxl.

- Canonical HTML: [https://foxl.ai/blog](<https://foxl.ai/blog>)
- RSS: [https://foxl.ai/rss.xml](<https://foxl.ai/rss.xml>)
- Full Markdown corpus: [https://foxl.ai/blog/full.md](<https://foxl.ai/blog/full.md>)
- Articles: 28

## [Foxl v0.4.22: Claude Opus 5 Is the New Default](<https://foxl.ai/blog/v0-4-22-opus-5-day-one>)

Release note | Published 2026-07-24 | Updated 2026-07-24 | 6 min read

Claude Opus 5 is Anthropic's most intelligent model, and it ships as the default across Foxl Agent, Foxl Code, and Foxl Notes on day one - at the same price as Opus 4.8 and half of Fable 5. Auditing every model engine for the launch also turned up a Gemini CLI that returned empty replies to every request, aliases pointing at the wrong generation, and a pricing table in our own docs that was wrong by a factor of nine.

[Markdown](<https://foxl.ai/blog/v0-4-22-opus-5-day-one/index.md>)

## [Five Releases in One Day: The Engine Is Foxl Code Itself](<https://foxl.ai/blog/five-releases-one-day>)

Deep dive | Published 2026-07-22 | Updated 2026-07-22 | 6 min read

On July 22 Foxl shipped v0.4.15 through v0.4.19 - five production releases, each hitting six web surfaces, a notarized macOS build, and iOS TestFlight. This is the story of the loop that made that pace ordinary: Foxl Code working on the Foxl monorepo, with a human supplying taste and one-line bug reports, including a critical incident fixed the hour it was reported and an experiment shipped, disproven on hardware, and reverted the same day.

[Markdown](<https://foxl.ai/blog/five-releases-one-day/index.md>)

## [Foxl v0.4.15: The Tabs That Vanished (and the Phone That Forgot)](<https://foxl.ai/blog/v0-4-15-the-tabs-that-vanished>)

Release note | Published 2026-07-22 | Updated 2026-07-22 | 5 min read

Skills, Channels, and custom MCP tools were all still in the app - just unreachable, orphaned by a moved tab bar. v0.4.15 restores them inside Settings, drops the gradient carousels, and fixes a family of mobile bugs that were all one iOS lifecycle fact in disguise: every launch is a cold start.

[Markdown](<https://foxl.ai/blog/v0-4-15-the-tabs-that-vanished/index.md>)

## [Hearing the Whole Meeting: How an Empty AirPods Transcript Rewrote Two Releases](<https://foxl.ai/blog/hearing-the-whole-meeting>)

Deep dive | Published 2026-07-21 | Updated 2026-07-21 | 11 min read

One bug report - "I recorded a meeting with AirPods and the transcript came back empty" - led through a macOS permission that fails silently, an inaudible test tone, a GPL driver we chose not to bundle, a WebKit limitation with no escape hatch, a native Swift recorder, and a ten-item audit of what makes a phone app worth being an app. The story of v0.4.13 and v0.4.14.

[Markdown](<https://foxl.ai/blog/hearing-the-whole-meeting/index.md>)

## [Foxl v0.4.12: The Quiet Fixes](<https://foxl.ai/blog/v0-4-12-quiet-fixes>)

Release note | Published 2026-07-20 | Updated 2026-07-20 | 4 min read

A batch of small things that were quietly wrong: a single tilde striking through your text, a background reply with no sign it was running, a stuttering mobile keyboard, and phone notifications tied to your desktop settings. Individually minor, together the gap between almost-right and careful.

[Markdown](<https://foxl.ai/blog/v0-4-12-quiet-fixes/index.md>)

## [Foxl v0.4.10: A Mobile-First Redesign](<https://foxl.ai/blog/v0-4-10-mobile-redesign>)

Release note | Published 2026-07-17 | Updated 2026-07-17 | 5 min read

v0.4.10 rebuilds the phone experience around native conventions - a reveal-drawer sidebar, a settings sheet shared by all three products, swipe-to-manage chats, a keyboard the composer follows, and a glass message bar - and closes a set of production bugs around credits, error visibility, and dead tunnel connections.

[Markdown](<https://foxl.ai/blog/v0-4-10-mobile-redesign/index.md>)

## [Designing Connection Ownership for Always-On AI Agents](<https://foxl.ai/blog/one-session-per-device>)

Incident | Published 2026-07-16 | Updated 2026-07-16 | 5 min read

v0.4.7 fixed duplicate device sessions and fenced stale desktop sockets, then v0.4.8 and v0.4.9 exposed the missing distinction between liveness, connection-generation ownership, and in-flight request correlation. This is the full incident sequence and the contract that replaced it.

[Markdown](<https://foxl.ai/blog/one-session-per-device/index.md>)

## [Choosing a Source of Truth for Agent Conversations](<https://foxl.ai/blog/two-stores-one-conversation>)

Incident | Published 2026-07-12 | Updated 2026-07-16 | 5 min read

The UI ledger and the agent snapshot drifted through head trimming, synthetic cancel turns, and interrupted saves. The fix made user-visible SQLite history authoritative on normal cold restores and kept snapshots as derived history or fallback data.

[Markdown](<https://foxl.ai/blog/two-stores-one-conversation/index.md>)

## [Your Meeting Was Transcribed Twice. Deleting Code Fixed It.](<https://foxl.ai/blog/meeting-transcribed-twice>)

Incident | Published 2026-07-12 | Updated 2026-07-16 | 6 min read

Two independent transcription pipelines appended two rows for the same utterance when the microphone re-heard speaker output. Mixing both captures into one ASR stream removed the two-writer failure mode and let us delete the similarity filter.

[Markdown](<https://foxl.ai/blog/meeting-transcribed-twice/index.md>)

## [The Checksum Byte That Ate Your Long Answers](<https://foxl.ai/blog/stream-cutoff-binary-frames>)

Incident | Published 2026-06-26 | Updated 2026-07-16 | 5 min read

Foxl replies were truncating mid-sentence on long answers. The cause was a single byte. Our relay decoded Amazon Bedrock's binary event-stream as if it were text and brace-scanned for JSON - so a CRC32 checksum byte equal to 0x22 (a double-quote) flipped the parser into string mode and silently swallowed the rest of the stream. A captured 32 KB stream dropped 70 of 119 events. Here is the binary-framing parser that fixed it, and the fixture test that keeps it fixed.

[Markdown](<https://foxl.ai/blog/stream-cutoff-binary-frames/index.md>)

## [Foxl v0.3.3: What "Day-One Support" Actually Shipped](<https://foxl.ai/blog/v0-3-3-fable-5>)

Release note | Published 2026-06-09 | Updated 2026-07-16 | 4 min read

A corrected release record for Fable 5: what Foxl integrated on June 9, why provider suspension was a separate state, and how a later Bedrock profile change forced routing to move from global to us.

[Markdown](<https://foxl.ai/blog/v0-3-3-fable-5/index.md>)

## [Building Foxl Mobile from a Shared React Codebase](<https://foxl.ai/blog/v0-3-0-foxl-mobile>)

Deep dive | Published 2026-06-08 | Updated 2026-07-16 | 7 min read

Foxl v0.3.0 reused a shared React source tree across hosted web, Electron, and a Capacitor iOS host, with runtime-specific builds and platform integration. The hard parts were keyboard docking and safe-area ownership without offsetting touch targets.

[Markdown](<https://foxl.ai/blog/v0-3-0-foxl-mobile/index.md>)

## [Foxl v0.2.51: Notes Integration and the Recording Gates](<https://foxl.ai/blog/v0-2-51-foxl-notes-joins-foxl-desktop>)

Release note | Published 2026-06-07 | Updated 2026-07-16 | 5 min read

The Notes shell integration first landed in v0.2.50. v0.2.51 kept it, fixed GPT-5.x routing, and began a microphone repair that required four production gates and was complete only in v0.2.53.

[Markdown](<https://foxl.ai/blog/v0-2-51-foxl-notes-joins-foxl-desktop/index.md>)

## [Designing Durable Coding Agents with Reconciliation Loops](<https://foxl.ai/blog/foxl-code-autonomous-agents>)

Deep dive | Published 2026-05-19 | Updated 2026-07-16 | 10 min read

Foxl Code treats autonomy as a reconciliation loop over approved plans, task state, isolated runtimes, budget-scoped credentials, durable lifecycle events, and eventually consistent GitHub effects.

[Markdown](<https://foxl.ai/blog/foxl-code-autonomous-agents/index.md>)

## [Making foxl.ai Crawlable with Next.js Static Export](<https://foxl.ai/blog/nextjs-seo-migration>)

Deep dive | Published 2026-05-13 | Updated 2026-07-16 | 6 min read

For two months, Google couldn't index our landing page. The fix: swap Vite CSR for Next.js static export. Here's what we learned about Cloudflare Workers constraints, JSON-LD sitelinks, and why "we'll add SSR later" is a trap.

[Markdown](<https://foxl.ai/blog/nextjs-seo-migration/index.md>)

## [Foxl v0.2.27: Trimming the Sidebar, the Skill Library, and the Tray](<https://foxl.ai/blog/v0-2-27>)

Release note | Published 2026-05-09 | Updated 2026-07-16 | 5 min read

Integrations became third-party only, the default skill set was reduced, and redundant built-in tools moved behind the general execution path. The release also simplified the tray and exposed credit usage in the account surface.

[Markdown](<https://foxl.ai/blog/v0-2-27/index.md>)

## [Foxl v0.2.23: Notifications That Actually Do Something](<https://foxl.ai/blog/v0-2-23>)

Release note | Published 2026-05-04 | Updated 2026-07-16 | 4 min read

Action buttons on every banner, resource metadata carried through the existing body-click route, and an intermediate macOS "Install Now" repair. Remaining native failures were fixed in v0.2.29-v0.2.30.

[Markdown](<https://foxl.ai/blog/v0-2-23/index.md>)

## [Foxl v0.2.21: Strands SDK 1.0 and Express 5](<https://foxl.ai/blog/v0-2-21>)

Release note | Published 2026-04-30 | Updated 2026-07-16 | 3 min read

Upgraded to Strands SDK v1.0.0 stable with concurrent tool execution and cancellation hooks, plus Express 5 migration for async error handling and modern routing.

[Markdown](<https://foxl.ai/blog/v0-2-21/index.md>)

## [Foxl v0.2.19: gpt-image-2 on Your ChatGPT Subscription](<https://foxl.ai/blog/v0-2-19>)

Release note | Published 2026-04-24 | Updated 2026-07-16 | 4 min read

This release added image generation through ChatGPT OAuth, corrected GPT model routing, and updated the agent SDK. Later notes clarify provider-controlled eligibility, quotas, and model changes.

[Markdown](<https://foxl.ai/blog/v0-2-19/index.md>)

## [Foxl v0.2.16: Claude Code OAuth, Reborn as a Compatibility Layer](<https://foxl.ai/blog/v0-2-16>)

Deep dive | Published 2026-04-21 | Updated 2026-07-16 | 3 min read

Live probes showed that system-prompt and tool-name shapes changed observed Claude subscription routing. Foxl shipped a compatibility layer, then documented the limits of treating provider behavior as a stable contract.

[Markdown](<https://foxl.ai/blog/v0-2-16/index.md>)

## [Foxl v0.2.11: The Feed - Proactive, Quietly](<https://foxl.ai/blog/v0-2-11>)

Release note | Published 2026-04-18 | Updated 2026-07-16 | 4 min read

Foxl v0.2.11 added an opt-in For You feed powered by a background agent. When enabled, its default cadence was hourly; most items landed quietly and only urgent ones requested notifications.

[Markdown](<https://foxl.ai/blog/v0-2-11/index.md>)

## [Foxl v0.2.13: Pixel Office Redesign, Deep-Linkable Notifications](<https://foxl.ai/blog/v0-2-13>)

Release note | Published 2026-04-18 | Updated 2026-07-16 | 5 min read

A cozy Pixel Office redesign with 2.5D sprites, real-time pet-position persistence, agent-completion notifications that deep-link to the finished agent, and Claude Code OAuth on Windows fixed for real.

[Markdown](<https://foxl.ai/blog/v0-2-13/index.md>)

## [Building Desktop OAuth for Outlook and Slack](<https://foxl.ai/blog/integrations-outlook-slack>)

Deep dive | Published 2026-04-17 | Updated 2026-07-16 | 8 min read

PKCE for Microsoft, relay-proxied secret for Slack, loopback callback servers, and skill-gated tool registration. The engineering behind 37 new agent actions.

[Markdown](<https://foxl.ai/blog/integrations-outlook-slack/index.md>)

## [Foxl v0.2.5: Claude Opus 4.7 Day-One Support](<https://foxl.ai/blog/v0-2-5>)

Release note | Published 2026-04-16 | Updated 2026-07-16 | 2 min read

At its April 16 launch, Foxl v0.2.5 added Claude Opus 4.7 on Bedrock as the default model and expert-routing target, with adaptive thinking and Opus 4.6 retained for existing selections.

[Markdown](<https://foxl.ai/blog/v0-2-5/index.md>)

## [Foxl v0.2.2: New Models, Faster](<https://foxl.ai/blog/v0-2-2>)

Release note | Published 2026-04-15 | Updated 2026-07-16 | 3 min read

Non-Claude AI models on Bedrock, a dedicated browser profile that remembers your logins, message editing with attachments, and a one-click system report.

[Markdown](<https://foxl.ai/blog/v0-2-2/index.md>)

## [Running an Always-On AI Agent on Real Desktops](<https://foxl.ai/blog/desktop-agent-gotchas>)

Deep dive | Published 2026-04-15 | Updated 2026-07-16 | 11 min read

Laptops sleep. Browsers fight over profiles. Cron jobs fire on Saturdays. Everything we learned shipping an AI agent that lives on your actual machine.

[Markdown](<https://foxl.ai/blog/desktop-agent-gotchas/index.md>)

## [Foxl v0.2.0: DB-Backed Agents, Smarter Scheduling](<https://foxl.ai/blog/v0-2-0>)

Release note | Published 2026-04-12 | Updated 2026-07-16 | 3 min read

SQLite-backed auto-continuation prevents duplicate agents, cron scheduler gets weekday support, and the sidebar shows real-time agent timers.

[Markdown](<https://foxl.ai/blog/v0-2-0/index.md>)

## [Designing a Local-First Trust Boundary for AI Agents](<https://foxl.ai/blog/why-local-first>)

Deep dive | Published 2026-03-18 | Updated 2026-07-16 | 11 min read

Local-first is a boundary, not a claim that no byte leaves the machine. Foxl keeps tools, files, credentials, and durable conversation state local while sending only the selected model context through the provider path you configure.

[Markdown](<https://foxl.ai/blog/why-local-first/index.md>)

