Bare -r/--resume now opens a numbered picker merging jsonl (source of
truth) with the xiaohe hosted-session index, deduped by cli_session_id
and sorted by real content activity (not jsonl mtime, which the xiaohe
projection re-touches). -l gains a Src column (xiaohe/cli); -r <id> and
-c stay passthrough. Adds read-only xiaohe_sessions data layer + tests.
- Standalone my* wrappers pass offer_install=True so a missing backend CLI
triggers the interactive 'Install now? [y/N]' prompt (was a bare not-found).
- Add backend_available()/ensure_backend() to expose the backend registry
(binary/env_bin/install_cmd) for xiaohe init / ensure-deps to reuse.
Cursor/Claude session listing now scans only the head of each jsonl for a
title (aiTitle/customTitle/first user prompt), caches by (path, mtime, size),
and filters local-command protocol rows. COLUMNS=120 pinned in the table test.
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
- Add MYCLAUDE_WORKSPACE_ROOT env var, default ~/workspace
- Auto-create workspace directory if it does not exist
- Move workspace/CLAUDE.md + .gitignore to workspace_template/
- Remove hardcoded symlink paths from workspace template
- Update get_workspace_root() with env-var priority logic
- Update metabot bots.json defaultWorkingDirectory to ~/workspace
New `myclaude mail` group with:
- config: interactive account setup
- inbox: list recent messages
- read: show message by UID
- send: send email with attachments
- reply/forward: reply to or forward messages
Replace manual ctx.args parsing with a proper @click.option using
is_flag=False and flag_value='.'. This enables tab completion for
the --cwd / -C option and directory-only path completion after it.
Also bump click dependency to >=8.3.2 to avoid the optional-value
regression in 8.3.0/8.3.1.
Add _install-completions and _uninstall-completions targets to Makefile:
- Detect shell (zsh/bash) and generate appropriate completion files
- Install to ~/.local/bin/completions/ on make install
- Remove completions on make uninstall
- Integrate with existing update/upgrade commands
--cwd was defined as a Click option but also parsed manually from ctx.args,
which caused conflicts when --cwd was followed by another flag (like
--dangerously-skip-permissions). Now --cwd is parsed entirely manually,
allowing:
--cwd alone -> use current directory
--cwd /path -> use specified path
(none) -> use myclaude project root (default)
- Remove git-proxy-clone from skills table (it's a custom local skill)
- Add appendix section explaining FastGithub setup
- Include copy-paste prompt for Claude to create the skill
- Add manual alias configuration as fallback
Move documented and skill paths to knowledge/memories and knowledge/files
(project root, mappable to @knowledge) to reduce sandbox issues on .claude/.
Update CLAUDE.md memory protocol, update-mykb-* skills, and settings.local.json
bootstrap check for core.json.
Made-with: Cursor
- Adjust .gitignore to track .claude/settings.local.json and .claude/skills/** while keeping other .claude content local.
- Add rag-files (knowledge retrieval + .claude/files notes), rag-memories, and mywebpage-update skills with PDF/Excel references.
- Fix settings.local.json hooks (SessionStart schema) for Claude Code.
- Update CLAUDE.md for rag-files paths and memory/file pool notes.
- Remove tracked .claude/plans and sessions placeholders no longer used.
Made-with: Cursor