multi-claude-cli 0.11.0__tar.gz → 0.11.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/PKG-INFO +4 -4
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/README.md +3 -3
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/__init__.py +1 -1
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/cli.py +6 -1
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/PKG-INFO +4 -4
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_sessions.py +7 -6
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/LICENSE +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/pyproject.toml +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/setup.cfg +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/__main__.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/accounts.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/actions.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/bundle.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/completion.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/config.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/doctor.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/env.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/fsutil.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/history.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/hook.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/identity.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/launcher.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/lock.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/migrate.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/plan.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/platform.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/refresh.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/restore.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/routes.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/sessions.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/shared.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/shellpath.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/statusline.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude/usage.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/SOURCES.txt +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/dependency_links.txt +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/entry_points.txt +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/top_level.txt +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_accounts.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_bundle.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_completion.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_config.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_doctor.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_everyday.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_fsutil.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_handoff.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_help.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_history.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_identity.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_install.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_mcp.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_migrate.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_onboarding.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_packaging.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_plan.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_platform.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_refresh.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_rename.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_routes.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_set.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_shared_exclude.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_statusline.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_usability.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_usage.py +0 -0
- {multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/tests/test_vscode.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-claude-cli
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: Run several Claude Code accounts side by side: separate CLAUDE_CONFIG_DIR directories, launchers, proxies, environment variables and arguments.
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/jakoes-wu/multi-claude
|
|
@@ -342,11 +342,11 @@ multi-claude sessions
|
|
|
342
342
|
multi-claude sessions work # one account
|
|
343
343
|
multi-claude sessions --grep importer # title, directory or session id contains the text
|
|
344
344
|
multi-claude sessions --grep importer --cmd
|
|
345
|
-
# TITLE ACCOUNT CREATED UPDATED
|
|
346
|
-
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42
|
|
345
|
+
# TITLE ACCOUNT CREATED UPDATED CMD
|
|
346
|
+
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42 cd ~/project && claude-work --resume 3c588340-1219-48df-a231-509866789487
|
|
347
347
|
```
|
|
348
348
|
|
|
349
|
-
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
349
|
+
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The `SESSION ID` column is left out, since each command ends with the session id. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
350
350
|
- It shows the 30 most recent sessions; `--limit N` changes that and `--limit 0` shows all. `--json` prints every match with the full fields (`directory`, `created`, `updated`, `title_source`, `file`, `resume`). `conversations` is another name for the same command.
|
|
351
351
|
- The title is the session's name in Claude Code; a session without one shows the beginning of its first prompt, and `-` if it has no prompt at all. Times are local. `UPDATED` is the time of the last message, or the file's modification time when the session has no timestamps.
|
|
352
352
|
- A `~/.claude` that has not been turned into an account is listed as `default`.
|
|
@@ -315,11 +315,11 @@ multi-claude sessions
|
|
|
315
315
|
multi-claude sessions work # one account
|
|
316
316
|
multi-claude sessions --grep importer # title, directory or session id contains the text
|
|
317
317
|
multi-claude sessions --grep importer --cmd
|
|
318
|
-
# TITLE ACCOUNT CREATED UPDATED
|
|
319
|
-
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42
|
|
318
|
+
# TITLE ACCOUNT CREATED UPDATED CMD
|
|
319
|
+
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42 cd ~/project && claude-work --resume 3c588340-1219-48df-a231-509866789487
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
-
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
322
|
+
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The `SESSION ID` column is left out, since each command ends with the session id. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
323
323
|
- It shows the 30 most recent sessions; `--limit N` changes that and `--limit 0` shows all. `--json` prints every match with the full fields (`directory`, `created`, `updated`, `title_source`, `file`, `resume`). `conversations` is another name for the same command.
|
|
324
324
|
- The title is the session's name in Claude Code; a session without one shows the beginning of its first prompt, and `-` if it has no prompt at all. Times are local. `UPDATED` is the time of the last message, or the file's modification time when the session has no timestamps.
|
|
325
325
|
- A `~/.claude` that has not been turned into an account is listed as `default`.
|
|
@@ -291,7 +291,8 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
291
291
|
help="show at most N sessions, 0 for all (default: 30, or all with --json)")
|
|
292
292
|
p_sessions.add_argument("--cmd", action="store_true",
|
|
293
293
|
help="also print the command that resumes each session (a CMD column when the "
|
|
294
|
-
"terminal is wide enough, otherwise a line below each session)"
|
|
294
|
+
"terminal is wide enough, otherwise a line below each session); the SESSION ID "
|
|
295
|
+
"column is then left out, since the command contains the id")
|
|
295
296
|
p_sessions.add_argument("--json", action="store_true", help="print machine-readable JSON")
|
|
296
297
|
return parser
|
|
297
298
|
|
|
@@ -1844,6 +1845,10 @@ def cmd_sessions(name: Optional[str], grep: Optional[str], limit: Optional[int],
|
|
|
1844
1845
|
for line in _aligned([header] + rows):
|
|
1845
1846
|
print(line)
|
|
1846
1847
|
else:
|
|
1848
|
+
# 续聊命令里总有 --resume <会话ID>(目录未知时也有),带 --cmd 时两种排版都去掉 SESSION ID 列,
|
|
1849
|
+
# 免得同一串 ID 在一条会话里出现两次;不带 --cmd 时它是唯一能看到 ID 的地方,必须保留。
|
|
1850
|
+
header = header[:-1]
|
|
1851
|
+
rows = [row[:-1] for row in rows]
|
|
1847
1852
|
# 续聊命令很长:整张表(表头与数据行,不含末尾的截断提示)放得下终端宽度才并成 CMD 列,
|
|
1848
1853
|
# 否则命令在窄终端里会从中间折行,比单独一行更难读、也更难复制。按整张表决定,不逐行切换。
|
|
1849
1854
|
wide = _aligned([header + ["CMD"]] + [row + [command] for row, command in zip(rows, commands)])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-claude-cli
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: Run several Claude Code accounts side by side: separate CLAUDE_CONFIG_DIR directories, launchers, proxies, environment variables and arguments.
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/jakoes-wu/multi-claude
|
|
@@ -342,11 +342,11 @@ multi-claude sessions
|
|
|
342
342
|
multi-claude sessions work # one account
|
|
343
343
|
multi-claude sessions --grep importer # title, directory or session id contains the text
|
|
344
344
|
multi-claude sessions --grep importer --cmd
|
|
345
|
-
# TITLE ACCOUNT CREATED UPDATED
|
|
346
|
-
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42
|
|
345
|
+
# TITLE ACCOUNT CREATED UPDATED CMD
|
|
346
|
+
# Fix the importer work 2026-10-11 16:05 2026-10-11 17:42 cd ~/project && claude-work --resume 3c588340-1219-48df-a231-509866789487
|
|
347
347
|
```
|
|
348
348
|
|
|
349
|
-
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
349
|
+
- `--cmd` puts the resume command in a `CMD` column when the whole table fits the width of the terminal; otherwise each command goes on its own line below its session. The `SESSION ID` column is left out, since each command ends with the session id. The home directory is written as `~`. When the output is piped, the width counts as 80 columns unless `COLUMNS` is set.
|
|
350
350
|
- It shows the 30 most recent sessions; `--limit N` changes that and `--limit 0` shows all. `--json` prints every match with the full fields (`directory`, `created`, `updated`, `title_source`, `file`, `resume`). `conversations` is another name for the same command.
|
|
351
351
|
- The title is the session's name in Claude Code; a session without one shows the beginning of its first prompt, and `-` if it has no prompt at all. Times are local. `UPDATED` is the time of the last message, or the file's modification time when the session has no timestamps.
|
|
352
352
|
- A `~/.claude` that has not been turned into an account is listed as `default`.
|
|
@@ -99,17 +99,18 @@ class ListingTest(SessionsTestCase):
|
|
|
99
99
|
env = {"TZ": "Asia/Shanghai", "COLUMNS": "300"}
|
|
100
100
|
wide = self.ok("sessions", "--cmd", env=env).out.splitlines()
|
|
101
101
|
self.assertEqual(wide, [
|
|
102
|
-
"TITLE ACCOUNT CREATED UPDATED
|
|
103
|
-
"One a 2026-10-01 10:00 2026-10-01 10:00
|
|
104
|
-
"Two b 2026-10-01 09:00 2026-10-01 09:00
|
|
102
|
+
"TITLE ACCOUNT CREATED UPDATED CMD",
|
|
103
|
+
"One a 2026-10-01 10:00 2026-10-01 10:00 cd /w/proj && claude-a --resume " + SID1,
|
|
104
|
+
"Two b 2026-10-01 09:00 2026-10-01 09:00 cd /w/other && claude-b --resume " + SID2])
|
|
105
|
+
# 会话 ID 已在命令末尾,带 --cmd 时不再单列一次
|
|
105
106
|
# 放不下时整张表改成命令单独一行;恰好放得下仍算放得下。标题与目录都是 ASCII,len 就是显示宽度
|
|
106
107
|
widest = max(len(line) for line in wide)
|
|
107
108
|
self.assertEqual(self.ok("sessions", "--cmd", env=dict(env, COLUMNS=str(widest))).out.splitlines(), wide)
|
|
108
109
|
narrow = [
|
|
109
|
-
"TITLE ACCOUNT CREATED UPDATED
|
|
110
|
-
"One a 2026-10-01 10:00 2026-10-01 10:00
|
|
110
|
+
"TITLE ACCOUNT CREATED UPDATED",
|
|
111
|
+
"One a 2026-10-01 10:00 2026-10-01 10:00",
|
|
111
112
|
" cd /w/proj && claude-a --resume " + SID1,
|
|
112
|
-
"Two b 2026-10-01 09:00 2026-10-01 09:00
|
|
113
|
+
"Two b 2026-10-01 09:00 2026-10-01 09:00",
|
|
113
114
|
" cd /w/other && claude-b --resume " + SID2]
|
|
114
115
|
self.assertEqual(self.ok("sessions", "--cmd", env=dict(env, COLUMNS=str(widest - 1))).out.splitlines(), narrow)
|
|
115
116
|
self.assertEqual(self.ok("sessions", "--cmd", env=dict(env, COLUMNS="40")).out.splitlines(), narrow)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{multi_claude_cli-0.11.0 → multi_claude_cli-0.11.1}/src/multi_claude_cli.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|