uv run injects VIRTUAL_ENV, which silently selects the uv pip branch and
broke test_uses_break_system_packages_on_externally_managed. Both tests
now delete VIRTUAL_ENV to pin the plain-pip branch; new test pins the
uv branch via mocks.
Nothing in the codebase ever read templates/workspace/; workspace
bootstrap is handled by the xiaohe runtime sync (MANAGED_PATHS).
README/AGENTS.md structure trees and the first-run claim updated.
Wraps the backend in 'tmux new-session -A' with a per-backend, per-directory
session name, so agent sessions survive SSH drops and re-running the same
command reattaches. Falls back to a direct run when already inside tmux,
and errors clearly when tmux is not installed.
Hermes -r/--resume requires a session id and has no -c shorthand, so
bare 'myhermes -r' failed with an argparse error. Translate
myagents-style flags like the codex backend:
- bare -r/--resume -> 'hermes sessions browse' (interactive picker)
- -r/--resume <id> -> '--resume <id> --no-restore-cwd'
- -c/--continue/--last -> '--continue --no-restore-cwd'
--no-restore-cwd keeps resumed sessions in the launch cwd, matching
myclaude semantics instead of jumping to the session's original cwd.
Tests still imported and patched the old bin.* package (renamed to
myclaude.* earlier), breaking collection. Point them at myclaude.* and
add coverage for the new claude-flag passthrough and --list session
listing.
Bare `myclaude` already launched claude, but a leading unknown flag
(`--resume`, `-r <id>`, `--continue`) made click raise "No such command"
because it was parsed as a subcommand name. click 8.3 raises this before
the group callback runs, so it can't be intercepted there.
- Add LaunchGroup overriding resolve_command: any non-subcommand leading
token routes the raw args to a hidden `__run__` passthrough that forwards
them to claude, run in the resolved cwd (--cwd, default workspace/).
- Add `--list/-l` to list resumable sessions (id, mtime, first prompt) for
the working directory, read from ~/.claude/projects/<munged-cwd>/.
- Recommend official install script over npm
- Pin npm fallback to 2.1.118 due to Kimi compatibility
- Update Windows install notes and first-run auth hint
- Stop tracking settings.local.json; commit base settings.json instead
- Scope file permissions to workspace/ and .claude/ as safer default
- Add .gitignore entries for .claude runtime files (scheduled_tasks, keybindings)
- Annotate _LINK_MAP in init.py as user-customizable
- Strip personal references from workspace CLAUDE.md template
Always forward --dangerously-skip-permissions to claude binary without
requiring the user to pass the flag manually. Removes the option from
help output and CLI signature.
- Remove --dangerously-skip-permissions click option
- Always append the flag to the claude command
- Update tests to assert default behavior and help output
- Extend .gitignore with desktop build/release directories
Reverts an earlier incorrect cleanup: click.option with
is_flag=False + flag_value="." is valid click syntax that
allows --cwd to work both with and without an argument:
--cwd → cwd="." (current directory)
--cwd /path → cwd="/path"
--cwd=. → cwd="."
--cwd --flag → cwd=".", flag=True (correctly parsed)
Without these parameters, --cwd requires a value and
--dangerously-skip-permissions would be misread as the cwd.
- get_myclaude_project_root() now expands ~ in MYCLAUDE_PROJECT_ROOT
(was resolving to ./~/path instead of $HOME/path)
- Extract hardcoded 16/8 depth limits as _MAX_WALK_DEPTH / _MAX_SOURCE_DEPTH
- Remove redundant cwd= from _run_pip_editable (already specified via -e)
- Add test_cwd_invalid_directory and test_env_var_expands_tilde
- Remove incorrect test_extra_args_forwarded (click.Group does not
support forwarding arbitrary args; ctx.args is always empty)
- Reduce README from 530+ lines to ~110 lines, focusing on CLI core
- Separate ecosystem extensions (cc-switch, Metabot, Skills) into
an optional section
- Add unsupported shell hint in install_completion.sh
- Remove is_flag=False + flag_value="." combination which has no effect
on click option with is_flag=False (default)
- Create dedicated click.Command for upgrade instead of raw alias
assignment, so help shows correct command name