# Changelog

What changed in each release of Claude Session Manager, newest first.

Written for the person using the app, not for the person who wrote it: entries
say what you can now do, or what stopped going wrong. Versions follow
[semver](https://semver.org) — a **minor** bump adds something, a **patch** fixes
something. Every release is published to <https://dl.minhdevtree.tech>, and the
app checks there for updates.

---

## 2.83.0 — 2026-09-10

- **Run two sessions on two Claude accounts at once.** Right-click a project → **New session on ▸** and pick one. That session runs as that account for life, so switching accounts, by hand or automatically, leaves it alone.
- **Each pinned session says which account it is on.** The name sits on its row, and turns red if that account can no longer sign in.
- **Move a session to another account, or back.** Right-click it → **Runs as ▸**. It restarts and keeps its conversation, and CSM refuses instead when the conversation would not survive the restart.
- **Remove an account from Settings.** **Settings → Usage → Accounts → Remove…** asks once, then deletes that account's stored sign-in for good. Sessions that ran as it are unpinned, so they start on your default login rather than not starting.
- **You cannot pin the account you are signed in to.** `claude-swap` cannot isolate that one, so CSM offers to move your default login to another account first, and says what that changes.

## 2.82.0 — 2026-09-10

- **Use one Claude subscription on a second machine, with a setup token.** **Settings → Usage → Accounts → Add a token…** takes one from `claude setup-token`, or an older one you already have. Unlike a normal sign-in it has nothing to refresh, so the two machines stop taking the account from each other.
- **What it gives up is on the form.** A setup token is inference-only, so it reports no usage and has no auto-switch setting. You switch to it from the accounts list like any other.
- **Names with spaces or capitals work.** `claude-swap` accepts only lower-case letters, digits and `- _ .` in a name, so CSM converts what you type: **claude acc 1 demo** becomes `claude-acc-1-demo`, and accents are transliterated rather than dropped, so **máy chủ** becomes `may-chu`.
- **Name it, because it cannot name itself.** That same limit means `claude-swap` invents an address for the slot, so the name you give becomes what the popover and ⌘K show.
- **Export the accounts you choose, not one or all.** **What to export** in **Move accounts between machines** ticks any number of them, which is how you hand your setup tokens to another machine without sending your sign-ins along. One kind per file: ticking a sign-in greys out the tokens, and the other way round.
- **The Accounts list says what the two kinds are.** A sign-in reports usage and works on one machine at a time; a setup token works anywhere and reports none. Keeping both is fine, and auto-switch uses the sign-ins.
- **An account that cannot be used now says why.** Every one of them read **Unavailable. Sign in again**, which is the wrong advice for the most common case. `claude-swap` tells seven of them apart, and the panel passes its words through.
- **The usual cause is named.** An account signed in on two machines keeps one sign-in: Claude moves it to whichever machine refreshes first, and the other goes quiet until you switch to it. Signing in again on the losing machine only restarts that.
- **Moving accounts between machines says so too.** The warning sits at the button that puts the second copy in place.

## 2.81.0 — 2026-09-09

- **A full export of setup tokens carries your settings too.** `claude-swap` keeps a slot's settings only once you have switched away from it, so a token had none. CSM adds this machine's settings on the way out, keeping each token's own identity, so the other machine gets your model choice as well.
- **An export now carries Claude's settings, not only the logins.** Your model choice travels with your accounts, which is why one picked on this machine did not turn up on the other. **Include Claude's settings** under **Move accounts between machines** turns it off.
- **Those settings replace, rather than merge.** The export takes the whole of Claude's config, caches and machine-specific values included, so the machine importing it takes on the exporting machine's settings.

## 2.80.0 — 2026-09-09

- **Auto-switch is now `claude-swap`'s own, not a copy of it.** CSM ran a copy of that tool's policy, down to its default numbers. It runs `cswap auto` once a minute instead, gaining per-model weekly limits as a trigger, the `consume-first` strategy, API-key accounts kept out, and a strike count.
- **`claude-swap`'s switching settings are in Settings → Usage.** **Switch at**, **Count model limits** and **Which account to move to**, written straight to its settings file, so the dialog and `cswap config` can no longer disagree. Naming a model is what makes that model's spent week trigger a switch.
- **A switch you make in a terminal shows up in the app.** `claude-swap` calls nobody back, so the account list used to keep marking the old account active while the header figures had already followed the new one. CSM now notices, while auto-switch is on.
- **The cooldown is shared with your terminal.** It lives in `claude-swap` now, so a switch you make yourself restrains the next automatic one, and a restart no longer forgets when the last switch happened.
- **Name an account, or keep auto-switch off it, without a terminal.** **Settings → Usage → Accounts** lists every account `claude-swap` holds: give one a short name and the usage popover and ⌘K use it instead of the address. Turn **In auto-switch** off and rotation leaves that account alone, while you can still switch to it yourself.
- **Move your Claude accounts to another machine.** **Settings → Usage → Move accounts between machines** exports every account to one file and imports one back, with **Save to…** and **Open…** for picking it in Finder. A phone can press these too, and the file is always written on the machine running CSM, never sent to the device.
- **The panel says what is in that file.** It holds your Claude logins unencrypted, which is `claude-swap`'s own design, so the words are there before the button rather than after the surprise.
- **Reset times say how long is left, not a date.** A weekly window read **resets Tue 12:59**, so you had to work out how long that was. It now reads **resets 5d 3h**, as `claude-swap` writes it, with the date on hover.
- **The account list says more.** Rows show the short alias you gave an account in `claude-swap`. An account CSM can no longer read shows the last figures it did read, with their age, instead of two dashes.
- **The usage switch is now called Usage.** The old name said Claude, but the gauge also covers Codex and Antigravity sessions. The two account settings below it are the Claude-only ones, and now say so.

## 2.78.2 — 2026-09-07

- **Long lists in a dialog scroll again.** The Prompts and Runbooks lists ran past the bottom of the box and could not be scrolled or reached at all. Every panel in the app that scrolls is fixed by the same change.

## 2.78.1 — 2026-09-07

- **Quitting a session takes it out of the phone header count.** The counter and the swipe now hold only the sessions that are running. You stay on the terminal you quit, so you can read the last of it.

## 2.78.0 — 2026-09-07

- **Your prompt library can move between machines.** **Export** in Settings →
  Prompts or Settings → Runbooks copies prompts and runbooks to the clipboard,
  and **Import…** pastes them in. A library built on your laptop no longer has
  to be retyped on the server.

## 2.77.0 — 2026-09-07

- **Plugins keep running when you look away.** A panel now runs while its tab
  is open, even when another tab is in front. A plugin can also ask to run with
  no panel on screen at all.
- **You are asked before a plugin runs unseen.** The dialog says so before you
  turn it on, its row says when it is running, and turning it off stops it at
  once.
- **Plugins can be told more.** Beside a session changing status, a plugin can
  now hear when one is created or closed, and when a project moves to another
  branch.
- **Writing a plugin got shorter.** A panel gets a small built-in client, so it
  no longer hand-writes a message bridge. **Settings, Plugins** also has a
  **Create starter plugin** button that writes a working one for you.
- **Restarting a session no longer breaks the command that starts it.**
  Reopening a quit session replayed its old output, and the terminal answered as
  though a live program had asked. Those replies landed in front of the launch
  line, so nothing started.
- **A session opened on a phone shows the right screen again.** After the phone
  had dropped the page, a long-running Claude came back as torn, repeated text
  with its footer scrolling away. The terminal now opens on the screen the host
  says the program is using, and asks for a fresh frame.
- **A phone can get back to the newest output.** One drag up used to strand the
  view there while the session went on printing below it. A **Jump to latest**
  button now appears over the terminal, and the key bar's keys bring the view
  back too, the way typing does at a keyboard.

## 2.76.0 — 2026-09-07

- **Antigravity sessions now show usage.** While `agy` runs, the usage panel
  shows each model group's weekly and five-hour limits, as `agy`'s own `/usage`
  does, and your Google AI tier. Each model's quota is one click away, and
  nothing is sent to Google.

## 2.75.3 — 2026-09-07

- **Tapping the prompt box on an iPhone no longer zooms the page.** Safari and
  Chrome on iOS now get a viewport that forbids the focus zoom. Pinch-to-zoom
  still works there, and Android is unchanged.
