Repository navigation
Releases
0.4.4
AI Juggler 0.4.4 is a round of fixes.
Fixed
-
One time for when an account has room again. An account out of room on both its five-hour window and its week said three different times: its five-hour reset on the rail and Home's apps, its weekly reset in Needs you, and the five hours again under Runway by account. It can't work until the later one, so every place now says that time: the rail, Home's apps and Runway, Needs you, New session, the account's page, the limit window and the Floor. When that time truly isn't known, each says so.
-
Measure its limits measures. On Home, in Accounts, on an account's page and on a session's usage, "Measure its limits" only opened another page. It now asks the tool for the account's limits right there, says "Measuring…", and shows the reading where the button was. If the check fails, it says why. If asking is turned off for that app, it says so, with Turn on. For a tool that can't be asked, it says the limits show once a session on it reports them.
-
A limit hit stays with the account it happened on. After you moved a conversation to another account, a limit it had hit before the move could count against the new account, which then showed as out of room as soon as you moved there. Each limit hit now counts for the account it happened on.
-
Past limit hits move back too. Limit hits that earlier versions counted against the account a conversation was moved to are put back on the account they happened on, once, when 0.4.4 first starts. A hit from an account you've since removed counts for no account.
-
An app you added is kept. An app or profile you added, or one on your accounts, was forgotten after 90 days without running, with the name you gave it. Now only apps AI Juggler found running and you never added are forgotten.
-
Codex threads under the right app. A long Codex thread could appear under Codex CLI for a moment before moving under the Codex app, where it started. It now appears in the right place straight away.
-
A finished session shows what it kept. Reopening a session that ended said "scrollback replayed" over an empty terminal. It now shows the terminal only when its output was kept, and otherwise the conversation itself; with neither, it says no output was kept and offers to search History.
-
Ended times carry their day. "Finished 4:22 PM" on a session that ended days ago now reads "Thu, Nov 5 4:22 PM", or "yesterday 6:24 PM". Home's "In the last 12 hours" writes its times the same way, without a weekday for today.
-
Newest first, by project too. Grouped by project, a project's ended sessions listed the oldest first. They now list the newest first, as by app and by account.
-
Projects say what they count. The Projects list's "This week" column was tokens and read "None" beside a project with 14 sessions, and its Sessions column counted only the open ones. The columns now read "Tokens this week" and "14 · 3 open". A project whose sessions recorded no token use says so on its Usage tab, rather than "once a session has run".
-
The rail holds still. A Needs you notice that arrived late moved the rail's rows by about 90 px under the pointer when the rail was mostly empty. The row under the pointer now stays put, with "1 new above".
-
An app's state reads whole. An app that runs with nothing open says "nothing open" on its header at the rail's usual width, where the words used to give way to the app's name. An app whose own list has no sessions says so, not "once AI Juggler has seen them".
-
Needs you on Home names the app that owns it. Home's Needs you list now names a session's app as the rail does ("Claude Code CLI · Work"), not the folder it ran in.
-
Search and filters by project find every app's sessions. Grouped by project, searching or showing one account only hid other apps' sessions in that project. They now show.
-
A pinned session that ended stays in sight by account. Grouped by account, a pinned session that had ended showed nowhere. It now shows under its account, or under Pinned when that account has nothing open.
-
A session's header stays readable in a narrow window. Its name, account and app gave way to the buttons beside them, down to "Keep th…" and "· W". The buttons now go down a line first, and the chips shorten in steps, the app's name last.
-
Esc returns to where you were. Closing "Continue in another app…" with Esc could leave the keyboard in the session's terminal instead of on what opened it.
Known issues
- Going back to 0.4.3 works as before (Settings › About & updates).
- The Floor is on macOS only. Windows gets it in 0.6 and Linux in 0.7.
0.4.3
AI Juggler 0.4.3 makes every running app open to its sessions and mark its account when it is out of room, even with nothing open in it.
Fixed
- A running app with nothing open shows its sessions. Under Open now, an app or profile that runs with no session open used to show only its name, and its arrow opened nothing. It now lists its last three sessions under it, then "Show all" to open the app's page with the rest. An app with sessions open lists just those; point at its name to see how many earlier ones it has ("+5 recent"), and click that to show them in place.
- An arrow only where there is something to show. An app with no sessions at all says "nothing open" and has no arrow. Folding an app now hides everything under it, its pinned sessions too.
- Folds you didn't mean are undone. In 0.4.2, clicking the arrow of an app with nothing open was saved as folding it. Those folds are cleared once, so those apps open as you asked.
- The Out mark follows the app's account. An app whose account is out of room, or low, shows the mark under Open now, under Inactive apps, on Home's app cards and in Accounts' Apps, whether or not anything is open in it. Before, the mark came from the app's first open session, so an app with nothing open never showed it, and an app could show another account's mark. Screen readers now hear the mark too.
- An app's sessions are the ones it lists. A Claude app profile's sessions in AI Juggler are now the sessions its own Code sidebar has. Sessions you deleted in the app are no longer counted under it, so its count matches the app. They are still in History. A profile you don't have open now hides the sessions you archived in it, as one that's open did already.
- Counts stay right after an update. AI Juggler keeps a list of your sessions so it starts fast. After 0.4.2 changed how it tells a desktop session from a terminal one, sessions it had listed before kept the old answer, so some terminal apps counted sessions they never had. The list is now read again whenever the way sessions are read changes.
- A forked conversation is its own session. A conversation forked from another in the Claude app used to merge with its parent into one row. Each is now its own row, as in the app.
- Search and filters find past sessions. Searching, or showing one app only, now also finds the earlier sessions of an app that is running, under that app.
- Script runs stay in History. Runs of
claude -pandcodex execfrom scripts are no longer counted as an app's sessions, and no longer make a terminal app appear on their own, as in both tools' own session lists. They are still in History. - Codex counts match Codex. Each Codex thread is under one app, the Codex app or Codex CLI, by where it was started, and together they list exactly the threads Codex itself lists.
- A profile on the right account. A Claude app profile that once ran on a different folder could stay linked to it, showing that account's sessions and Out mark. It now follows the sessions its own sidebar lists.
- A wrong Out mark after an early reset. When an account's room came back before its stated reset time, AI Juggler kept it marked out until then. It now follows the account's newest reading.
Known issues
- The first start after updating reads all your sessions again, once. The window opens as usual and the lists fill in as they're read.
- Going back to 0.4.2 works as before (Settings › About & updates).
- The Floor is on macOS only. Windows gets it in 0.6 and Linux in 0.7.
0.4.2
AI Juggler 0.4.2 shows exactly the apps that are running: every open app or profile is under Open now, whether or not it has a session, and a desktop app is never confused with a terminal tool on the same account.
Improved
- Open now is what's open. Every app and profile that is running is under Open now, even with no session in it. Inactive apps lists only the ones that aren't running, and no app is ever in both.
- Running, not added. An app AI Juggler recognises that is running but that you haven't added has its own row with Add. It is never added for you.
- Desktop or CLI, at a glance. Every app has a mark beside its icon: a window for a desktop app,
>_for a command-line tool. A terminal tool's name says CLI ("Claude Code CLI · work"), so the Claude app and Claude Code on the same account never look like one app shown twice. - Names stay readable. In the narrow rail, an app's profile name keeps its room. When it has to be cut, it's cut in the middle, so the part that tells two profiles apart stays visible ("acme-east"). The full name shows when you point at it.
- The Codex app. Codex in ChatGPT.app is now the app of your Codex account, and its threads are listed under it rather than under the Codex CLI.
- Every session under the right app. A session belongs to the app its process runs in. A finished one belongs to the app it was last seen in, or the app it was started from. A terminal session is never filed under a Claude app profile.
- Pinned sessions. A pinned session that has ended stays pinned under its app, but it no longer makes the app count as open.
- "N accounts out" shows which. The header's count opens Accounts filtered to the accounts that are out, each with when it's back and the account with room to use instead. Clear the filter with ×. Every other count in the header opens the exact view it names.
- Launches and quits show at once. An app you open or quit shows in AI Juggler within two seconds.
- The Floor matches the rail. Each room is named as the rail names its app, with the desktop or CLI mark, and a room is lit while its app runs. A Mac alert is now one small chip, no longer a red scene.
Fixed
- Running Claude app profiles no longer show under Inactive apps as "Running", and the running default profile no longer shows twice.
- A profile that shares the default profile's folder goes by its own name instead of "Default".
- The Codex app was missing from Open now and from Accounts while it ran.
Known issues
- Going back to 0.4.1 from 0.4.2 works as before (Settings › About & updates).
- The Floor is on macOS only. Windows gets it in 0.6 and Linux in 0.7.
0.4.1
AI Juggler 0.4.1 can move a Claude conversation to another account, shows the Floor as a building you see one floor at a time, and adds a round of fixes to Apps, Accounts, pools and tasks.
New
- Move a Claude conversation to another account. Switching between two Claude accounts now moves the conversation by default instead of copying it. The same conversation continues on the other account: every message, the sessions it started (archived ones stay archived), the agents it ran and its rewind points. Nothing is copied and no extra disk is used. The original account no longer lists it. Copy and the other choices stay on the switch screen.
- Move is checked and can be undone. AI Juggler keeps checked backups that take no room until something changes, writes down each step before it takes it, and checks every byte before and after the app reopens. Undo the move puts both accounts back exactly and keeps anything done since aside. A list of your moves shows each one.
- What Move covers. It works between two Claude app profiles and between two Claude Code folders used in a terminal. It does not work between the app and a terminal yet: Copy carries those. Both app profiles quit and start again, so anything running in them stops. The switch screen says so and won't start while a session in either is working. Move never touches a sign-in and never sends a message for you. Whether the other account answers is yours to check.
- The Floor is a building. The new building view is a cross-section of the building on its street. You see one floor at a time and take the lift to the others. Labels change with zoom, apps that have been idle a while sit apart, and the lighting follows day and night on your clock.
- A new look for the Floor. Rooms have better light and soft shadows. People have faces that show their state. It is the default look now, in both Pixel art and Full resolution.
- The View menu on the Floor. It sits top right and lets you choose what the Floor shows. Hover a person to see what they asked or did last and where to answer. The whiteboard opens Tasks on that App's tasks, and an Account's door opens its page.
- Out and Low say what they mean. An Account or App that is out of room carries one clear Out mark everywhere: Home, the rail, the header, every switch target, and the Floor. Out says when it resets, in your own clock. Low shows how much is left. There is no banner across the top of a page for it any more.
- Run in AI Juggler. An ended session now offers Run in AI Juggler beside Resume, so after you've worked in its terminal you can carry the same conversation on without one. For Claude Code this is Beta (Settings › Sessions › Run without a terminal). A session running without a terminal points you at its earlier turns until it has new ones.
- Go to it opens the exact session. For a Claude app session, it opens that session in its own profile and starts the profile first if it is closed.
- Back and Forward. ⌘[ and ⌘] (and the ‹ › buttons) go back and forward between pages. A session's App chip opens its page in one click.
- Apps and Accounts know each other better. One Account can have several Apps. An App page shows where it runs and the room it shares with other Apps. A CLI App's launch settings are a tab of their own, and Settings has Show in the rail for each App. Every name opens its own page.
- Pools can move and be tidied. A node's menu moves it to another pool. Option and an arrow nudge a node 8 px, and Shift makes it 32. A pool's card has a menu to open its canvas, rename it or delete it, and says where its sessions go.
- Subagents show more. A quiet one says when it last did something. A session's Usage names the three subagents that used most, each a link. Esc goes back one step on a subagent's page.
- A tool's own words about a wait. A Codex in a terminal that is waiting on a call now says so.
- Keep a project apart. A project's menu has Keep it apart…: it sets up a sealed pool on that project in one step, so its sessions stay out of every other pool and nothing leaves it through AI Juggler.
- OpenCode and Grok Build in pools. Their sessions now get AI Juggler's pool tools when AI Juggler starts them: messages, tasks and the roster, with no prompt for AI Juggler's own tools. They are full members instead of "Shell only". A Grok Build App that uses your own
~/.grokstays Shell only and says why: AI Juggler only sets up tools in a Grok home it made. - Always use an App for a project. New session's Change app offers Always use for the project (for example "Always use for web"): new sessions there then start on that App ("your default here"). Clear it from the same picker. If its Account is out of room, New session still says so and offers an App with room.
- View › Only › Pool. Once you have pools of your own, the rail can show just one, and search takes
pool:.
Improved
- Tasks. To do, Done and Cancelled are one click away on the board. A task waiting on your review also shows in Needs you. A card names its App, and a card in review has Approve and Send back… on it. Search reads each task's brief. You can filter by an App.
- Move around the plan with the keyboard. The task plan works like a tree: ↑ and ↓, → to open or go in, ← to close or go up.
- Projects have their own menu. Each row has ⋯, right-click and ⇧F10 with Open its page, Show in Finder, Rename… and Forget…, the same in the rail. An empty Projects screen says how a project appears and offers New project….
- A pool's page and the rail. The window's title says the screen, and a pool's page says Pools › its name. Pool shows in the rail once a pool of yours has members.
- Menus take type-ahead. Type a few letters in any menu to jump to an item.
- Settings pages say what they do. Every Settings pane has a short footer for each section.
- Tasks with no project. The Tasks screen's project filter has No project, so a task written outside any project, in a pool that spans several, is always one click away.
- A pool says who left. When an App signs in to another Account, a pool its session leaves says so in its Live list, "… left: its account is now …", and the pool it joins says it joined.
- An Account keeps the name you brought it in under. If every App of an Account came in under one name in first run, say Work, and the Account has no team or plan to go by, it is called Work instead of its email. A name you give the Account always comes first.
- Pickers show suggested first, then all. An empty option is never in the top group; it stays last.
- New session says why. A first guess says why it is a guess, the folded options say "the defaults" when nothing is set, and an App that is out of room offers another Account's App.
- Starting is quicker. The conversation list is saved and read again at the next start, so only transcripts that changed are read. It builds after the window shows. Session folders are watched for changes instead of listed again; a file change the Mac reports late or not at all still shows within 5 seconds (30 for the apps' own session records).
- The window rests when hidden. Its own polling stops while it is hidden, and an answer that hasn't changed redraws nothing.
- Profiles are clearer. A profile's page lists each session once, by the app's own title. Add brings in its folder and sessions too. Start says when the app is up. Forget says why it can't when the app is running.
- Notifications for limits. Usage levels work on measured or estimated windows, and estimates say "about".
- Subagent pages are honest about their source. Each says where its details come from, and a read that fails says so with Try again instead of an empty table.
- Names are never cut. Your apps cards line up and keep a name whole, and the Keyboard shortcuts sheet no longer clips keys.
- Better tidy-up after a crash. A helper a session started in its own process group is cleaned up after a crash. Cleanup history filters by project and pages back with Show older.
- Stronger security. Web views are locked down, commands only take ids or paths you chose, a task's private brief is removed once its session has read it, and the updater has a standby signing key.
Fixed
- Clicks on the Floor landed where it drew them, and one press opens one Floor, not several.
- Nothing in the Floor's office covers its controls. Flags keep clear of the alert banner and the lift's number.
- A logo the Floor's cache lost is drawn again, and a closed Floor window releases its memory.
- Quitting AI Juggler with a log out or a kill is no longer counted as a crash.
- Apps could be started by a door that didn't start them. Start and Restart now work from every door, and only you add an App.
- A Claude app profile was told to sign in in a terminal and called signed out. It no longer is.
- Sign-ins read again when the window comes back, and Usage says Not signed in when it is so.
- An App no longer drops out of its Account when its sign-in can't be checked for a moment, say while the tool is writing its file. It stays with its sessions and pools, says "Couldn't check its sign-in" and why, and AI Juggler checks again. It keeps its name and email meanwhile. Only signing out, signing in to another account, or switching to an API key moves it.
- A Codex first start in a new folder asked its trust question where you couldn't see it, and Start hung on "Starting…". It now asks in view.
- First run offers every tool Home says it found. A tool that is installed with nothing set up gets its own group, unticked, to set up fresh with a sign-in after; the desktop apps' profiles are offered there too, or it says where they come from.
- A setup with no conversations reads "Not used yet", not "Archive candidate · 0 d".
- A folder named for a word comes in by that word:
~/.claude-workis brought in as W...
0.4.0
AI Juggler 0.4 adds the Floor, a live office in its own window that shows all your AI work at a glance and takes you to what needs you in one click.
New
- The Floor. Open it with the Floor button in the header, Window › The Floor, the menu bar icon or ⌘⇧M. Each app is an area of an office, each session a person at a desk, each subagent a helper beside them, with your accounts and your Mac in the lobby. It opens on the floor with the app that most needs you.
- Everything on the Floor means something. Someone waving with a
!is waiting on you; a?is probably stuck; smoke is a crash; someone asleep has hit a limit. A small fire marks an app using too much of the processor, a battery on an area's sign shows its account running low, and the lobby's rack shows how hard your Mac is working. Every state also has a symbol and a word, never colour alone. Click a person, a sign, the rack or the notice board and AI Juggler opens it. - Areas you can find again. Each app's area has its own look, chosen once and kept, with the tool's logo and the account's initials printed on its floor and the app's name on its sign. Areas stay where they are: they grow with their sessions and only move forward when an app before them changes size. Each pool has a meeting room.
- Move around from the trackpad or the keyboard. Drag to pan, pinch to zoom, twist or use Q and E to turn. Tab moves between areas, N jumps to the next session waiting on you, Enter opens it, and 1 to 9 pick a floor.
- Two looks for the Floor. Settings › The Floor › Look: Pixel art, the Floor's own look drawn in big pixels (the default), or Full resolution, the same 3D office at your screen's own pixels with smoothed edges. It changes at once and is remembered. Labels never print over each other or under a balloon, and each stays over its own floor.
- Settings › The Floor: open it when AI Juggler starts, keep it on top, how many apps fit on a floor, how much it moves, which apps it leaves out, and Re-create the office… for a new look, which says first what changes and what stays. The Floor button's small arrow opens the Floor, its list and these settings.
- The Floor list in the main window shows the same in words, by floor and app, from the Floor button's menu or ⌘K. Every control is labelled for screen readers and reachable from the keyboard, and a session that starts waiting on you is announced once.
- Report a bug from wherever it went wrong. Help › Report a bug…, your menu, Settings and a failed switch open one sheet: your words first, then what goes with them (what AI Juggler showed, the versions, the last switch's steps, recent errors), each scrubbed on this computer and readable in full, each yours to leave out. Open the bug form fills in GitHub's form in your browser, where you can still change it before you submit. Nothing is sent by AI Juggler itself.
- Debug mode. Settings › Advanced › Debug mode writes down every step of each switch and launch (sizes, timings, the tools' own errors, never what's in a conversation) so a bug that comes and goes can be caught. It keeps at most 16 MB, turns itself off after seven days, and clears in one click.
Improved
- An ended session's page picks up where it left off. Resume continues the same conversation on the same account, beside Relaunch for a fresh start; when it can't, it says why. Its ⋯ menu also has Replay, Archive and Copy the conversation's id, as History's rows do.
- Cost you can act on. Usage now shows what a finished task costs on average, what went on sessions that crashed or were probably stuck (with those sessions a click away), and each account's cost with the project it went on most. Last week's review puts last week beside the week before in one sheet, with the five costliest sessions and an export of just that week. Every estimate names the price list it uses and its date.
- How an account's sessions went. An account's page now says, for the last 7 days, how many errors and retries its sessions hit out of how many turns, how often they were probably stuck, how full their context was when they finished (where the tool reports it), and the tokens a finished task took — each with where the figure comes from, and no made-up overall score. An ended session's details add its context at finish and how often it got stuck.
- Notifications when you'd want them. Settings › Notifications › When to tell me: a waiting session becomes a notification once it has waited 5 minutes (or 2, 10, 15, 30, or right away); Needs you and the bell still show it at once. An account warns you at 80 % used and again at 95 %, each once per window, or at the levels you choose. Send test shows one notification now, so you can check your system lets them through. If you relied on being told of a wait right away, choose Right away.
- ⌘K does things, not only goes places. Before you type it shows what you opened last and the things you do most (New session, Settings, and Processes or Notifications when they have something). Type loosely — "wrk bil" finds the billing session on Work — across sessions, apps, projects, accounts (with their room left) and settings. → shows a preview beside the list, ⌘↩ goes to the app or starts a session on the account, and See all results opens History.
- Settings you can search, keys you can change. A search field heads Settings' sidebar (press
/): type "mute" or "quiet hours" and it opens that setting. The new Keyboard pane lists every shortcut. Change… takes the next keys you press and refuses ones already taken, saying who has them; Reset puts one back, Reset all puts back every one, with Undo. The ? sheet, ⌘K and the tooltips show your keys. - Home shows only what you pick. Chips over Needs you narrow it to Asks you, Probably stuck, Limits, To review or Sign-in. On a row, R opens what it asks, H continues it in another app, S snoozes it and E archives an ended one. Mark all reviewed clears Pick up where you left off in one go.
- A switch moves the whole conversation, sessions it started included. Side sessions a Claude app conversation started, and the subagent threads of a Codex one, now move with it in the same switch: twenty of them, their own subagents and archived ones too, each resumable on the new account. In the Claude app they sit under the conversation as they did; if that app is open, they appear once it restarts, and the switch offers Restart. If any one can't move, nothing moves.
- What runs by itself moves too, so nobody tidies up afterwards. If the conversation fixes a pull request by itself (the Claude app's Auto-fix) or works on a Codex goal, the switch says so first, hands it to the new copy and turns it off on the original. In the Claude app the original is put away in the archive, so it doesn't resume when its usage comes back either; switching back brings it out again with its Auto-fix. A switch into a terminal leaves Auto-fix with the original and says so before you switch.
- Leave out the start of a very long conversation when you switch. Continue in another app has "Very long conversation? Leave out its start": carry only the turns from a day on, or only the last few. Everything is still the default, and the original conversation is never changed.
- First run says how sure it is. Each setup it finds says Found, Likely or Guessed, and where it came from ("Claude Code's usual folder", "set in your shell's settings"). ▸ Details shows how each part was worked out, a sign-in that may have expired says so, and Look again scans once more whenever you like, keeping your ticks.
- Pools say what they cover and what's sealed. A pool's card says which projects it covers; a pool can be sealed or unsealed after it's made, saying first what changes; your paired Macs are offered as members; and a member that can only run commands says so.
- Switch into a Claude app profile you use in its Code tab. Such a profile signs in through the Claude app, so a switch into it continues there; it's no longer held back for a terminal sign-in it never needed.
- Resize the list from the keyboard. Tab to its edge and use ← and → (with ⇧ for bigger steps), Home and End. A screen reader hears its width.
- The Floor costs next to nothing. It draws only when something changes or moves, stops drawing when it's covered or minimised, and frees its memory when you close it. Nothing runs for it until you first open it.
Fixed
- A switch could move a different conversation from the one you picked (0.3.9). Every switch now names the conversation it moves, and from which account, before anything moves, and a notice at the top of the window says which conversation it is about.
- Switching a Codex conversation whose file Codex had compressed, or one spread over several days, could fail its final check.
- Esc now closes New project, even right after ⌘⇧N.
- The bell's key hint said ⌘⇧N (New project); the bell's key is ⌥⌘N.
Known issues
- The Floor is on macOS only. Windows gets it in 0.6 and Linux in 0.7.
- Going back to 0.3 from 0.4. 0.4 updates AI Juggler's own data. The copy it keeps on the way makes going back possible: Settings › About & updates › Go back to an earlier version. That copy is from before the update, so what changed in 0.4, such as the Floor's layout, isn't in it. Your Claude and Codex folders aren't affected either way.
- Still open: a switch run by hand from AI Juggler's window into a Claude app profile. Its parts are checked in the real Claude app (a family nesting under its conversation, the original put away and brought back) and by automated tests; the full hand-run walk from the window comes in a later release.
0.3.9
AI Juggler 0.3.9 switches long conversations, says how much disk space a switch uses before it starts, shows how far it has got, and says why one stopped.
Fixed
- Long conversations switch. A conversation long enough that its history passed about 500 MB (common for a Claude app conversation used for weeks) couldn't be switched: every try ended in "Something went wrong… Try again". Now a conversation of any size is copied whole, and quickly: in a test, an 800 MB one switched in about 5 seconds, with its subagents, tool results and file history, and AI Juggler's memory use stays small. Long Codex conversations, compressed or not, switch too.
- A conversation still open in its app switches. The Claude app keeps writing to a conversation that's open in it, and AI Juggler took that as the original being changed, so the switch failed after the new session had started. Now it checks that everything it carried is still exactly there in the original; a reply written meanwhile is fine, and stays in the original.
- A switch says how much disk space it uses, and never fills your disk. Before you switch, the switch screen says how big the conversation is, how much disk space the copy takes and how much is free. On a Mac the copy is usually a clone, which takes almost no space; switching back to an account that already has the conversation, or a packed Codex conversation, takes its full size. When space would run low it says so and suggests what to free; when there isn't enough, Switch waits until there is, with Check again. A switch always leaves at least 4 GB free, checking again as it copies in case something else is filling the disk.
- You see how far a switch has got. The switch window shows each step as it happens (copying the conversation, checking the copy, starting the new session, confirming), with a bar and, for a long conversation, the seconds so far.
- A switch that stops says why. Instead of "Something went wrong", it says what happened and what to do: the disk is full, AI Juggler wasn't allowed to write to the account's folder, the original is still writing its reply, the conversation is too large, or its file is gone. Try again shows only when trying again can work. Copy details copies what happened, for a bug report.
- Sessions started from another sit under it. In the Claude app, a session you start from another one sits under it in the sidebar. Open now showed them side by side; now they sit under the session that started them, one step in per level, as in the app.
Known issues
- Switching to another Mac still carries a conversation only up to 512 MB.
0.3.8
AI Juggler 0.3.8 recovers an app or profile that lost its window when macOS restarted its display, and counts once the usage of a conversation copied into a second account.
Fixed
- An app that lost its window can be restarted from AI Juggler. When macOS restarts its display (its window server; you see the login screen again, or the screen flashes and every window is gone), an app can keep running with no window, out of reach of the Dock and ⌘-Tab. Open used to try to bring it forward and say it "isn't open now", and starting it again would have put a second copy on the same profile. Now Settings › Desktop apps and Home say Lost its window when the system restarted the display, and Open, Go to it and Open in {app} ask "Restart it?". Restart quits it the way ⌘Q does, waits for it to end, and starts it again on the same profile and the same account. Restarting stops anything still working in it, so it only happens when you click Restart. If it doesn't quit within 10 seconds, AI Juggler says so and starts nothing; quit it in Activity Monitor, then start it from AI Juggler. AI Juggler treats an app this way only when macOS no longer lists it among the running apps and it started before your current login session, so an app started since you logged in never is; if it can't tell either, it assumes the app is fine.
- Keep alive restarts it on its own. An app or profile with Keep alive on that lost its window counts as stopped: AI Juggler quits it and starts it again, with Keep alive's usual limits (at most 3 times in 10 minutes, never while the screen is locked, in AI Juggler's first minute or while it quits). It waits while a session in that app is still working, and its notice says the app lost its window and was restarted.
- A switch to Desktop won't hand a session to a profile that lost its window. It says what happened and where to restart it, then you can switch again.
- Usage counts a conversation copied into another account once. When a conversation reaches a second account without an AI Juggler switch (a folder copied by hand, a test build's switch, a copy from another Mac), its history was counted under both accounts. Each call was billed once, so it now counts once: the history under the account it was spent on, and anything done in the copy since under the copy's account. On one Mac, 264 calls (726K new tokens) that two accounts both counted now count once; every other account's figures stay exactly the same. After the update AI Juggler reads your history once more, so the figures settle within a few minutes.
Known issues
- Only on macOS: Windows and Linux builds don't check yet whether an app lost its window.
- A Codex conversation copied into another account counts once, but under whichever account AI Juggler read first; Codex's records don't say which copy is the original.
0.3.7
AI Juggler 0.3.7 makes Usage's numbers mean what they say: costs priced the way each call is billed, tokens counted the same way for every tool, Codex's sessions counted as conversations, and a limit's reading kept apart from any estimate.
Fixed
- Estimated costs are priced the way each call is billed. A Codex call with more than 272K tokens of input pays OpenAI's long-context rates (about twice the input price and one and a half times the output price), and Claude's 1-hour cache writes cost twice the input price instead of the 5-minute rate. Both were priced at the standard rate, so costs read low: on a heavily used Mac by about 5% overall and 18% for Codex. Claude Haiku 5.5 now has its price (higher for prompts over 100,000 tokens), and fast mode and US-only inference are priced at their own rates when Claude Code uses them. After the update AI Juggler reads your history once more to price every call, so the figures settle within a few minutes.
- Usage counts new tokens for every tool. The first tile is now New tokens: input, cache writes, output and reasoning, with what was re-read from the cache shown under it. "Tokens in and out" left out the cache writes that carry nearly all of Claude's new input, and Codex's reasoning, so Claude looked about five times smaller than its real use. The charts, the splits by tool, model and project, the top lists and the session pages count the same way.
- Codex: automatic reviews and subagents count under their conversation. Each automatic code review and each subagent runs in a thread of its own, and every one was counted as a session (on one Mac, 2,285 of 2,779). Their tokens and cost now count under the conversation that started them, and a conversation's page includes them.
- A limit shows the tool's own reading, and when it was taken. The percentage beside "Measured" used to add a projection of the use since the reading. It now is the reading, "as of" its time, and when you've worked since, an estimate of what's left now is shown apart and called an estimate.
Known issues
- Codex's
codex-auto-reviewmodel has no published list price, so its tokens aren't in the estimated cost, and the cost tile says "at least". - History whose files are no longer on your Mac keeps the price it had, at the standard rate.
0.3.6
Nightly build from the latest code, 2026-11-03. Expect rough edges.
No user-facing changes since the last nightly build.
0.3.5
AI Juggler 0.3.5 lets a switch continue where you choose, in the Claude app (Desktop) or in a terminal (CLI), keeps the switch screen short with the details a click away, follows a conversation as it grows instead of reloading it, draws Claude app sessions the way the Claude app does, and names your Claude app profiles the way you named them.
New
- Continue a switch in Desktop or CLI. The switch's last step asks where it continues: Desktop, the target account's Claude app profile ("Claude app · Work Max"), or CLI, Claude Code in a terminal. The one where the session already ran is chosen first and marked "Same as the original". The button says where ("Switch to Desktop"). In Desktop, AI Juggler hands the session to that profile's own window, starting the profile first if it's closed, and says "switched" only once the Claude app has taken it, with all its messages. When an account has no Claude app profile yet, Desktop shows why. On the first hand-off macOS may ask whether AI Juggler may send Claude a link: that's this.
Improved
- The switch screen is short. It shows where it continues, one coloured line for what goes along ("Everything goes along · 8 items", click to see them), and only the choices you need to make. Explanations and the full details are folded until you open them. What goes along has an icon and a colour for each kind.
Fixed
- A conversation no longer empties or jumps while you watch it. With a session's page open while you talk in the Claude app or ChatGPT, the conversation used to vanish for a moment and redraw from the top every few seconds, and on a long session it could show nothing at all. The page now follows the conversation: new messages and work are added at the end as they're written, what you've read stays where it is, and your scroll position is kept. Scroll up and earlier turns load a page at a time, however long the session.
- A Claude app session looks like it does in the Claude app. 0.3.4 folded each finished turn into one "Worked for 4 min" row. That's how ChatGPT's Codex draws a turn, not the Claude app. A Claude app session now shows what the Claude app's Code tab shows: every message in full, and each run of work between two messages as one line titled the way the app titles it ("Edited a file, ran 3 commands", "Opened a page", "Captured page"), one click from its steps. A message you send while Claude is working starts a new turn where you sent it. Sessions in ChatGPT keep ChatGPT's "Worked for" row.
- Your Claude app profiles have the names you gave them. The rail and Home called a profile by the name of the app's own folder ("b-work") while the Accounts page called it by its Claude Code folder ("work-max"). They now use the same name everywhere. A session you started in the Claude app is always listed under that app's profile, even if AI Juggler never saw it open. An extra "Claude Code" app you never use no longer appears with those sessions under it.
- Starting a Claude app profile keeps it on its account. Open, Keep alive and the switch start a profile the way your own launcher does, with the Claude Code folder its sessions use. Before, a profile AI Juggler started put its new sessions in the default folder, on another account.
- You can switch from a Claude app profile again. 0.3.4 held back every Claude app profile with "Claude Code hasn't done its first-run setup in a terminal", because sessions in the Claude app never answer Claude Code's first-run questions. Those profiles are offered again, saying "Its first-run setup is done as it switches". As it starts the session, the switch marks Claude Code's first-run setup as done in that profile (one setting in its own file; nothing else changes), with nothing to do in a terminal. A profile that was never signed in is still held back, with why.
- A session's subagents and the sessions it started read as a tree. The column beside a conversation now starts at This session (its main conversation) and branches with lines, like the Claude app's sidebar: Subagents running, Sessions it started and Finished subagents, each with how many. It also shows when the page is narrow; before, it could shrink to a thin strip there.
Known issues
- A profile you've never opened while AI Juggler was running isn't listed yet. 0.4's Apps finds them (with your OK).