feat(pool): one board of pools with split/merge by drag; plan names from tier and seat

- The Users page account pool is one board: a column per pool holding its
  Claude Code, Codex and Cursor accounts (plan, quota, live panes) and its
  members. Accounts sit in one pool; drag moves them. Drop on New pool to
  split one off; drag a pool's only account into another pool to merge
  (members follow, the emptied pool is deleted on Save). One password Save.
- Claude plan label (planLabel in cc-profiles.js) reads rateLimitTier and
  seatTier: Max 5x/20x, Team Standard/Premium — subscriptionType alone said
  'pro' after an upgrade and 'team' for both seats. Shown on profiles, the
  status bar quota badge and pool cards; Codex pool cards show the ChatGPT plan.
This commit is contained in:
2026-10-28 11:47:19 +07:00
parent 9d07f64154
commit 26aabd6660
18 changed files with 1638 additions and 642 deletions
+23 -1
View File
@@ -595,7 +595,7 @@ agenthub accounts pin cursor-team mia --tool cursor
## Account pool groups
By default every user shares every pool account. **Groups** split the pool
by team (Users page → **Account pool → Groups**, server mode only,
by team (Users page → **Account pool**, where a group is called a pool, server mode only,
`server/lib/pool-groups.js`):
- A group has a name, members and accounts of every pool tool (Claude, Codex,
@@ -613,6 +613,28 @@ by team (Users page → **Account pool → Groups**, server mode only,
an account takes it out of every group; deleting a group sends its members
back to the shared pool and removes no account.
On the Users page a group is shown as a **pool**: the **Account pool** card
is one board with a column for the shared pool and one per pool, each
holding its accounts of every tool (grouped by tool, each a card with its
plan — "Max 5x", "Team Premium", a ChatGPT plan —, live panes and quota) and
its members. Drag an account or a member from one
column to another — in the UI an account sits in ONE pool, so a drop moves
it (onto the shared pool takes it off every pool). Dropping one on the
trailing **New pool** column SPLITS it off into a new pool of its own;
dragging a pool's ONLY account into another column MERGES that pool there —
its members come along and the emptied pool is deleted on save. A column's **+ Move an
account or saved profile here** menu does the same without dragging and also
lists the saved login profiles, which are moved into the pool on save; **Pick
members** ticks members by role (Admin / Developer / Analyst) or **No pool**
in a dialog; **Add account** in the card's header adds a new account for a
chosen tool (it lands in the shared pool). Nothing is sent until **Save**,
which asks for the password once and applies every change (profiles moved
in, then new pools created, then each changed pool set exactly, then merged
pools deleted); a failed
step keeps the board so a retry resumes where it stopped. Tools with no pool
(Oh My Pi, any other installed tool) keep a tab each under **Other AI
tools**. An account's Edit (pencil) uses the same role / No pool list.
### A user's own pool account
When the pool holds more than one account a user may use, they pick which one