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