|
12 | 12 | {"id":"claude_code_bridge-4a","title":"Auto-session: start new session on lock contention","description":"Enable a convenience workflow: if a user runs `cq claude codex` (no `--session`) and the **default** session is already running/locked for that directory, `cq` should automatically select a new session name and continue launching instead of exiting with the lock error.\n\n## Goals\n- Make `cq claude codex` \"just work\" even when default is already running.\n- Preserve explicit intent: do not change behavior for `cq --session X ...` or when `CQ_SESSION` is already set.\n- Race-safe under concurrent launches (no directory scanning).\n- Provide clear UX telling the user which session was chosen and how to target it later.\n\n## Non-goals\n- Auto-routing across directories.\n- Pane scraping or any protocol changes.\n\n## Proposed behavior\nTrigger auto-session only when:\n- `--session` not provided (args.session empty)\n- `CQ_SESSION` env var unset/empty\n- resolved session is `default`\n- default session lock is held\n\nSession naming algorithm:\n- Try acquiring locks for `default-2`, `default-3`, ... up to `default-N` (N configurable, e.g. 50).\n- Use lock acquisition as source of truth (race-safe).\n\nUX messaging:\n- Print selected session name (and pid if available) and a copy/pasteable hint for `ask --session \u003cname\u003e ...`.\n\nOpt-out:\n- Add `--no-auto-session` and/or `CQ_AUTO_SESSION=0` to force legacy error behavior.\n\n## Acceptance\n- Running `cq claude codex` twice in the same directory results in two independent sessions (second auto-creates a new session).\n- No auto-session if user passed `--session` or `CQ_SESSION` is set.\n- Clear message printed when auto-session occurs.\n- Unit tests cover auto-session and opt-out behavior.\n","status":"open","priority":2,"issue_type":"epic","owner":"stefanc@allenai.org","created_at":"2026-02-04T14:30:29.355418-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-04T14:30:29.355418-08:00","labels":["cli","multi-session","sessions","ux"]} |
13 | 13 | {"id":"claude_code_bridge-4a.1","title":"cq: auto-create session when default is locked","description":"Implement auto-session selection in `cq` when the user runs without `--session` and `CQ_SESSION` is unset, and the default session lock is held.\n\n## Scope\n- In `cmd_start`, if `(cwd, default)` lock acquisition fails under the trigger conditions:\n - Read pid from lock file (best-effort) for messaging.\n - Try session candidates `default-2..default-N` by attempting to acquire the corresponding lock.\n - On success, set `session_name` to the chosen value and export `CQ_SESSION` for managed panes.\n- Add opt-out controls:\n - `--no-auto-session`\n - `CQ_AUTO_SESSION=0`\n- Print a short, copy/paste-friendly message indicating the chosen session and how to target it later.\n\n## Files\n- `cq`\n\n## Acceptance\n- `cq claude codex` auto-selects `default-2` (or higher) when default is locked, and proceeds to start panes.\n- If user passes `--session X`, lock contention remains an error (no auto-session).\n- If `CQ_SESSION` is set, lock contention remains an error (no auto-session).\n","status":"closed","priority":2,"issue_type":"task","assignee":"stefanc-ai2","owner":"stefanc@allenai.org","created_at":"2026-02-04T14:31:23.02804-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-04T14:56:23.83712-08:00","closed_at":"2026-02-04T14:56:23.83712-08:00","close_reason":"Implemented auto-session on default lock contention: when running without --session and CQ_SESSION is unset, cq auto-starts default-2..default-50 on default-session lock (and prints chosen session + ask --session hint). Added opt-out via --no-auto-session and CQ_AUTO_SESSION=0. Updated unit tests for auto-session, opt-out, and exhaustion; adjusted lock-error suggestion test. Tests: python -m compileall -q lib bin cq test; python -m pytest test/ -q.","labels":["cli","sessions","ux"],"dependencies":[{"issue_id":"claude_code_bridge-4a.1","depends_on_id":"claude_code_bridge-4a","type":"parent-child","created_at":"2026-02-04T14:37:19.366878-08:00","created_by":"import"}]} |
14 | 14 | {"id":"claude_code_bridge-4a.2","title":"tests: cover auto-session behavior + opt-out","description":"Add unit tests covering the new auto-session behavior and opt-out semantics.\n\n## Scope\n- Add tests for:\n - default locked -\u003e auto-selects `default-2`\n - default + default-2 locked -\u003e selects `default-3`\n - explicit `--session` locked -\u003e errors (no auto)\n - `CQ_SESSION` set -\u003e errors (no auto)\n - `--no-auto-session` and `CQ_AUTO_SESSION=0` disable auto-session\n - exhaustion (all slots locked) -\u003e clear error\n\n## Files\n- `test/test_cq_tmux_split.py` (or appropriate existing test module)\n\n## Acceptance\n- Tests cover all the above and are deterministic (no real tmux/wezterm required).\n- `python -m pytest test/ -q` passes.\n","status":"open","priority":2,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-04T14:31:29.499755-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-04T14:31:29.499755-08:00","labels":["cli","sessions","tests"],"dependencies":[{"issue_id":"claude_code_bridge-4a.2","depends_on_id":"claude_code_bridge-4a.1","type":"blocks","created_at":"2026-02-04T14:37:19.367326-08:00","created_by":"import"},{"issue_id":"claude_code_bridge-4a.2","depends_on_id":"claude_code_bridge-4a","type":"parent-child","created_at":"2026-02-04T14:37:19.367754-08:00","created_by":"import"}]} |
15 | | -{"id":"claude_code_bridge-4a.3","title":"docs: document auto-session behavior + opt-out","description":"Document the new auto-session behavior and opt-out controls.\n\n## Scope\n- Update `README.md` multi-session section to note:\n - `cq claude codex` will auto-start `default-2` (etc) when default is already running.\n - How to explicitly target sessions (`--session`, `ask --session`, `cq-mounted --session`).\n - How to disable auto-session (`--no-auto-session` / `CQ_AUTO_SESSION=0`).\n\n## Acceptance\n- README contains a short copy/paste snippet demonstrating the behavior.\n","status":"open","priority":2,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-04T14:31:35.285628-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-04T14:31:35.285628-08:00","labels":["cli","docs","sessions","ux"],"dependencies":[{"issue_id":"claude_code_bridge-4a.3","depends_on_id":"claude_code_bridge-4a.1","type":"blocks","created_at":"2026-02-04T14:37:19.368188-08:00","created_by":"import"},{"issue_id":"claude_code_bridge-4a.3","depends_on_id":"claude_code_bridge-4a","type":"parent-child","created_at":"2026-02-04T14:37:19.368588-08:00","created_by":"import"}]} |
| 15 | +{"id":"claude_code_bridge-4a.3","title":"docs: document auto-session behavior + opt-out","description":"Document the new auto-session behavior and opt-out controls.\n\n## Scope\n- Update `README.md` multi-session section to note:\n - `cq claude codex` will auto-start `default-2` (etc) when default is already running.\n - How to explicitly target sessions (`--session`, `ask --session`, `cq-mounted --session`).\n - How to disable auto-session (`--no-auto-session` / `CQ_AUTO_SESSION=0`).\n\n## Acceptance\n- README contains a short copy/paste snippet demonstrating the behavior.\n","status":"closed","priority":2,"issue_type":"task","assignee":"stefanc-ai2","owner":"stefanc@allenai.org","created_at":"2026-02-04T14:31:35.285628-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-04T15:03:25.729608-08:00","closed_at":"2026-02-04T15:03:25.729608-08:00","close_reason":"Documented auto-session behavior: README multi-session section now notes that running cq codex,claude with default already running will auto-start default-2 (etc), and documents opt-out via --no-auto-session or CQ_AUTO_SESSION=0. Tests: python -m compileall -q lib bin cq test; python -m pytest test/ -q.","labels":["cli","docs","sessions","ux"],"dependencies":[{"issue_id":"claude_code_bridge-4a.3","depends_on_id":"claude_code_bridge-4a.1","type":"blocks","created_at":"2026-02-04T14:37:19.368188-08:00","created_by":"import"},{"issue_id":"claude_code_bridge-4a.3","depends_on_id":"claude_code_bridge-4a","type":"parent-child","created_at":"2026-02-04T14:37:19.368588-08:00","created_by":"import"}]} |
16 | 16 | {"id":"claude_code_bridge-qkw","title":"Remove CHANGELOG.md and CHANGELOG_4.0.md","description":"Remove changelog files that are outdated/unnecessary:\n\n- CHANGELOG.md: Minimal content (12 lines), just lists unreleased breaking changes\n- CHANGELOG_4.0.md: Chinese language documentation from v4.0 release, outdated\n\nThese files add maintenance burden without providing value in the simplified codebase. Version history is tracked in git.\n\nVerify: files deleted, no references remain","status":"closed","priority":2,"issue_type":"task","assignee":"stefanc-ai2","owner":"stefanc@allenai.org","created_at":"2026-01-30T20:12:42.396944-08:00","created_by":"stefanc-ai2","updated_at":"2026-01-30T21:34:53.691347-08:00","closed_at":"2026-01-30T21:34:53.691347-08:00","close_reason":"Deleted CHANGELOG.md and CHANGELOG_4.0.md; removed references","labels":["s7t"]} |
17 | 17 | {"id":"claude_code_bridge-s7t","title":"Simplify CCB to Claude+Codex Only","description":"Simplify Claude Code Bridge from a 5-provider, multi-platform system to a minimal 2-provider (Claude + Codex) solution for **macOS + Linux only** (no Windows, no WSL).\n\n## Goals\n- Providers: keep **codex** + **claude** only; remove **gemini/opencode/droid**\n- Platform: remove Windows/WSL compatibility and Windows-specific artifacts\n- UX: replace `pend` with **reply-via-ask**; `ask` becomes **pure async** (submit-only)\n- Remove MCP delegation integration (`mcp/ccb-delegation`, `ccb droid setup-delegation`)\n- Keep both tmux + WezTerm backends\n\n## Notes\n- Keep repo green per-layer: `python -m compileall -q lib bin ccb` + targeted `pytest`.\n- No “read results from logs” UX (no `pend`, no completion hook prompting `pend`).\n\n## Estimated reduction\n~4,500+ lines of code, 20+ files deleted (likely more once docs/tests/installers are pruned).\n","status":"open","priority":1,"issue_type":"epic","owner":"stefanc@allenai.org","created_at":"2026-01-30T12:38:16.250679-08:00","created_by":"stefanc-ai2","updated_at":"2026-01-30T13:21:39.237439-08:00","labels":["simplification"]} |
18 | 18 | {"id":"claude_code_bridge-s7t.1","title":"Delete Gemini provider files","description":"Remove all Gemini-related code from the codebase.\n\n## Files to DELETE\n- bin/gask, bin/gaskd, bin/gpend, bin/gping\n- lib/gaskd_daemon.py, lib/gaskd_protocol.py, lib/gaskd_session.py\n- lib/gemini_comm.py\n- lib/askd/adapters/gemini.py\n\n## Verification\n- pytest passes\n- No import errors","status":"closed","priority":1,"issue_type":"task","assignee":"stefanc-ai2","owner":"stefanc@allenai.org","created_at":"2026-01-30T12:38:48.333354-08:00","created_by":"stefanc-ai2","updated_at":"2026-01-30T14:39:10.449044-08:00","closed_at":"2026-01-30T14:39:10.449044-08:00","close_reason":"Deleted Gemini provider files","labels":["provider-removal","simplification"],"dependencies":[{"issue_id":"claude_code_bridge-s7t.1","depends_on_id":"claude_code_bridge-s7t","type":"parent-child","created_at":"2026-01-30T12:38:48.333922-08:00","created_by":"stefanc-ai2"},{"issue_id":"claude_code_bridge-s7t.1","depends_on_id":"claude_code_bridge-s7t.4","type":"blocks","created_at":"2026-01-30T13:25:55.427879-08:00","created_by":"stefanc-ai2"}]} |
|
0 commit comments