You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
All accounts limited
Floating revival countdown. When every account is limited, a small
always-on-top panel shows who recovers first, a live countdown and
the sessions waiting to resume. Settings → Display to turn it off.
Forecast
"Binds at", "all accounts out" and the battle plan no longer drift
later between polls.
Phone
Continue a stopped session from the phone — one button, whatever
stopped it (a limit, a crash, a closed terminal). It shows only when
the turn ended without a final answer; after one, the composer is
the way on.
The whole conversation stays readable. A pasted screenshot no
longer pushes everything before it out of a session's chat.
Sessions is home. The app opens on what's waiting for you, with a
badge for how many; the Fleet tab opens with the active account, who's
next and how many sessions are working.
Safer approvals. A permission request is a card pinned above the
composer with the full command; Allow asks once more, Deny is plain,
and the phone taps back when it lands. Questions pick, then send.
Pairing starts on screen: the empty Fleet tab scans the Mac's QR
code, and says so when it's paired.
Cleaner feed: tighter tool rows with errors in red, a loading and an
empty state, "offline" up top where you can see it, and an ⓘ button
to the session's details. Plain words for status; no process ids.
Honors Reduce Motion; bigger tap targets and labels for VoiceOver.
Dictate a message. A mic in the composer; on-device, no server.
Dictate in any language. Long-press the mic (or Settings →
Dictation) to pick the language — Vietnamese included. A non-English
take is translated on the phone (iOS 18, nothing leaves it) into an
editable English draft, with a chip to peek at what you said; or send
it as spoken with a note asking for an English reply, so the session
stays English. The recognizer is handed the session's names and
tools so "commit", "PR" and file names survive a Vietnamese take.
Paste an image from the clipboard, straight into the chat — the
keyboard's "Paste from Screenshots" chip and the edit menu both work.
Notifications straight to the phone (issue #3) — every alert the
Mac posts, no Slack or Telegram in between. Ships once the phone
build can register for them.
Idle sessions show their names, not just the busy ones.
Pictures in the feed. An image pasted in the terminal or sent
from the phone shows as a thumbnail in the message; tap for full
size. Images inside tool results stay text.
Tool runs stay grouped through errors, with an error count on the chip.
The theme names the phone. Tab bar icons and names, the screen
titles and every session's status word come from the theme — RPG
sessions are Questing, Resting at camp or Awaiting orders under
Quests / Party / Inventory. Custom themes set sessionWords, tabLabels and tabIcons; Off keeps the plain words.
Unnamed sessions get a name. Claude Haiku titles any session you
haven't named from what it's working on, and re-titles it as the work
moves on — in the sessions list on the Mac and the phone. One short
Haiku turn on the active account; Settings → Display to turn it off.
Snappier chat. A sent message shows in the feed at once, marked
until the session reads it; a reply that streams in lands as it is
written instead of up to two seconds late; coming back to the app
refreshes the feed immediately; and on the Mac a message being typed
into a terminal no longer holds up every other phone request.
A header of its own on a session's chat. Back, the session's name
and state (tap for its details), and the account's own Fleet row —
glyphs, gauges, the per-model window, the plan badge — on the theme's
tint; the Sessions list header shows the theme's glyph. The Off theme
keeps the plain lines.
Stats
Your engineering week, in numbers. Settings → Stats: commits,
lines, PRs, messages (keyboard, phone, agents), sessions, tool calls,
time spent waiting on you, switches and limits, cost — today, this
week, month or year, each with its trend. On the phone and the wall
too; infinitusctl stats for scripts.
Agents
infinitusctl events — the app's switch/death/revival log, so a
"why did it switch?" question has a record to read.
infinitusctl stats — the same numbers as JSON for a period, for
scripts and agents.
Linux tray
Sessions that need an AWS login say so; the footer names the
connected phone.
Site
infinitus.run reads well on phones: no sideways scroll, better
contrast, feature cards grouped by what they do.
Settings
The Codex slots tab is gone. The manual auth.json slot switcher
never grew usage tracking or auto-switch; Codex accounts still show
as fleets through CLIProxyAPI and 9Router.
AWS sign-in
Your phone hears when a session needs an AWS login — one push per
session and profile (Notifications → "A session needs an AWS login"),
so the need no longer waits for you to open the app.
One login, every session. When two sessions are stuck on the same
sign-in, or one profile's login signs another in underneath (a broker
profile over its anchor), every stuck session is told to continue and
its "needs login" clears — the app checks the other profiles with the
CLI instead of guessing from the config.
Fixes
A phone message no longer reads to the session like a note from
another Claude session: it answers you in its own transcript instead
of "replying" to a session named Infinitus.
No more phantom permission cards: a tool running in a session that
needs no approval was shown as "wants to run this" until the turn
ended.
Sessions moved into a git worktree show their feed again (the
transcript stays under the repo's own folder).
Keys and typed messages reach sessions inside cmux, where the
terminal reports no process ids — matched by the session's name.
The pop-out no longer freezes the app when it and its content
disagree on size (a fractional height, a screen clamp, or content
that measures differently in two window sizes kept the resize loop
spinning on the main thread).
Bright apps behind the popup, and window-only captures (CleanShot),
no longer wash the glass out: it caps at a legible level at every
transparency setting, and dark backdrops pass through untouched.
The popup no longer burns CPU (and stops answering infinitusctl)
while an account sits in the 90s.
An engine that refuses to start no longer shows as a crash.
"All accounts down" no longer appears while the active account is
fine and only the spares are limited — the countdown panel, the popup
banner, the wall, the phone and the Linux panel all wait for the
account you're actually on to hit its limit.