---
title: "Foxl v0.4.10: A Mobile-First Redesign"
description: "A mobile-first Foxl release: reveal-drawer sidebar, native settings sheet, swipe actions, keyboard-synced composer, glass message bar, plus credit, error-banner, and tunnel-timeout fixes."
author: "Foxl Team"
date_published: "2026-07-17"
date_modified: "2026-07-17"
canonical_url: "https://foxl.ai/blog/v0-4-10-mobile-redesign"
markdown_url: "https://foxl.ai/blog/v0-4-10-mobile-redesign/index.md"
image: "https://foxl.ai/blog/one-session-per-device.png"
social_image: "https://foxl.ai/blog/social/v0-4-10-mobile-redesign.png"
content_type: "Release note"
topics: ["Mobile UX","Design system","Reliability"]
products: ["Foxl Agent","Foxl Code","Foxl Notes"]
---

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

# Foxl v0.4.10: A Mobile-First Redesign

> 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.

- Author: Foxl Team
- Published: 2026-07-17
- Last reviewed: 2026-07-17
- Reading time: 5 minutes
- Canonical HTML: [https://foxl.ai/blog/v0-4-10-mobile-redesign](<https://foxl.ai/blog/v0-4-10-mobile-redesign>)

![The redesigned Foxl mobile app: a reveal-drawer sidebar, a glass composer the conversation scrolls behind, and a settings sheet that slides up as its own layer.](<https://foxl.ai/blog/one-session-per-device.png>)

Foxl v0.4.10 is a mobile-first release. The web app at [app.foxl.ai](<https://app.foxl.ai>) and the iOS build were rebuilt around the conventions people already expect from a phone: a reveal-drawer sidebar, a settings screen that slides up as its own layer, swipe actions on chat rows, a keyboard that the composer rides smoothly, and a glass message bar that the conversation scrolls behind. The same release also closes a set of production bugs that were quietly breaking chat for some accounts.

## Why this release

Foxl runs the same React bundle on the desktop app, the web app, and iOS. That is efficient, but it meant the phone inherited desktop patterns: a sidebar that floated on a black scrim, a settings page that lived in the content column, chat rows that needed a long-press, and a composer that stuttered as the keyboard rose. None of those are wrong on a laptop. All of them feel wrong on a phone. This release keeps the desktop untouched and gives the phone its own treatment where it matters.

## What changed on mobile

### A reveal-drawer sidebar

Opening the sidebar no longer floats a panel over a dark overlay. The sidebar is now a base layer pinned to the left edge, and the app content is a glass card above it. Tapping the menu slides the content card to the right and scales it back a touch, so the sidebar underneath is revealed - the content is a lid that slides off, not a panel that pops up. The card recedes evenly from a left-center origin, so it reads as pushed back rather than shrinking in height.

### Settings is a native sheet, shared by all three products

On the phone, Settings slides up from the bottom as its own glass layer over the app - the sidebar stays put beneath it, the way an iOS modal leaves the screen behind it visible at the top. It has a single round back button and a centered title, and sections push in from the right and pop back like a native settings app. Your Account, Integrations, Mobile/Web connection, and Usage all moved inside it, and Foxl Notes and Foxl Code settings are sections here too - one Settings screen for all three products instead of three scattered menus. Each section loads on demand, so the sheet opens instantly. The desktop keeps its familiar two-pane Settings page unchanged.

### Swipe to manage chats

Chat rows in the mobile sidebar now swipe left to reveal Rename and Delete, replacing the long-press menu that was easy to miss. The row tracks your finger as you drag and settles with a spring; tapping an open row closes it. On desktop the right-click menu and hover actions are unchanged.

### A keyboard the composer follows

Tapping the input used to stutter as the composer rose, because the layout transition ran on a different curve than the iOS keyboard and every animation frame fired scroll events that re-rendered the chat mid-animation. The shell now animates on the keyboard's own timing curve, and scroll-state updates pause until the keyboard settles, then reconcile once. The chat also follows a long answer as it streams again - when a single reply or thinking block grows tall, the view stays pinned to the bottom, and it still hands control back the moment you scroll up.

### A glass message bar

The composer is now a translucent glass card that the conversation scrolls behind, with a crisp hairline edge and a soft shadow that lifts its top and bottom edges evenly. In dark mode it is a soft gray card rather than the near-black it had become. Foxl Code's composer - both the task-launch bar and the in-task chat - matches the same treatment, and its scroll-to-bottom control is now a round button on the right, like Foxl Agent.

## The production fixes

### Free accounts locked out with credits showing

A single oversized agent turn could overdraw the internal balance by more than a month's grant, and that debt silently carried across months. Every later request then failed with "Credits exhausted" while the Account page still showed credits available. Monthly free credits are use-it-or-lose-it, so the refill now also clears any carried overdraft, and affected accounts were reset.

### Chat errors are visible again

A regression had dead-wired the persistent error banner, so a failed send - out of credits, a plan-gated model, a relay error - produced no feedback at all; the reply simply never came. The banner is rewired: credits and plan issues show the upgrade prompt, other errors show the real message.

### Gateway timeouts from a dead desktop link

When a desktop's tunnel socket died silently - sleep, wake, a network switch, with no close event ever arriving - the relay kept writing every request into the dead socket for up to two minutes. Each one waited its full ten-second timeout and failed with a 504 while the dashboard still showed the desktop as green. A live desktop always answers within eight seconds, so the relay now treats one full request timeout as proof the socket is dead: it closes it and flips the desktop offline immediately, and the desktop redials within about a second. Read requests that land exactly on the dying socket retry once after that redial, so the healing is invisible instead of an error flash.

### Chat-complete notifications on mobile

Send a message from the phone, switch apps or lock the screen, and Foxl now delivers a system push when the response is ready; tapping it opens that conversation. The push only fires when the app actually stopped watching the stream mid-turn - foreground chats never notify.

## Upgrading

The web app updates automatically. The desktop app updates itself, or you can download the latest build from the [Foxl homepage](<https://foxl.ai/#download>). The full list of changes is in the [changelog](<https://foxl.ai/changelog>).

## References and further reading

1. [Foxl v0.4.10 changelog](<https://foxl.ai/changelog>) - Release
2. [Download Foxl](<https://foxl.ai/#download>) - Reference