|
1 | 1 | {"id":"claude_code_bridge-3v3","title":"Remove CCA (Claude Code Autoflow) integration","description":"Remove the CCA (Claude Code Autoflow) external tool integration from ccb.\n\nFiles affected:\n- ccb: _find_cca_path(), _get_cca_version(), version display, 'ccb update cca' subcommand (lines ~2722-2893, 3233)\n- config/ccb-status.sh: cca mode handling (lines 217, 359)\n- config/ccb-tmux-on.sh: cca_status variable (line 101)\n\nThis is external tool management that's outside the simplified scope of ccb (Claude+Codex pane communication only).\n\nVerify: bash -n ccb, compileall, pytest","status":"closed","priority":2,"issue_type":"task","assignee":"stefanc-ai2","owner":"stefanc@allenai.org","created_at":"2026-01-30T20:12:33.444383-08:00","created_by":"stefanc-ai2","updated_at":"2026-01-30T21:39:12.658029-08:00","closed_at":"2026-01-30T21:39:12.658029-08:00","close_reason":"Removed CCA (Claude Code Autoflow) integration from ccb and tmux status scripts; compileall+pytest pass","labels":["s7t"]} |
| 2 | +{"id":"claude_code_bridge-4","title":"Multi-session: multiple independent Codex+Claude pairs per repo","description":"Enable multiple independent Code Quorum sessions (each a Codex+Claude pair) in the same repo/working directory without collisions.\n\n## Goals\n- Allow concurrent sessions: `cq --session A codex,claude` and `cq --session B codex,claude`\n- Route commands correctly: `ask --session A codex ...` targets A\n- In-pane defaulting: panes launched by session A export `CQ_SESSION=A` so `ask codex ...` “just works”\n- Session-scoped persistence: session files/state do not overwrite each other\n- No pane marker collisions: title markers include session namespace\n- Backwards compatible: current behavior remains the default session\n\n## Non-goals\n- Cross-directory routing changes (already isolated by cq_project_id)\n- New daemon or pane scraping\n\n## Acceptance\n- Two sessions can run concurrently in the same `.cq_config` project\n- `ask` and skills can target a session explicitly and auto-target implicitly\n- Existing users running `cq codex,claude` (no `--session`) see no behavior change\n","status":"open","priority":2,"issue_type":"epic","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:03.867109-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:03.867109-08:00","labels":["sessions","multi-session","routing"]} |
| 3 | +{"id":"claude_code_bridge-4.1","title":"Session scoping helpers (CQ_SESSION / --session)","description":"Add shared helpers to select/validate a session name and resolve session-scoped config paths.\n\n## Notes\n- Selection precedence (everywhere): `--session` \u003e `CQ_SESSION` env \u003e `default`\n- Session name must be filesystem-safe (no traversal). Prefer `[A-Za-z0-9._-]`.\n- Introduce helpers like:\n - `resolve_session_name(explicit: str|None, env: dict) -\u003e str`\n - `project_session_dir(work_dir: Path, session: str) -\u003e Path`\n - `find_project_session_file(work_dir: Path, session: str, filename: str) -\u003e Optional[Path]`\n\n## Acceptance\n- A single helper API is used by `cq`, `ask`, `cq-mounted`, and session loaders.\n","status":"closed","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:38.661935-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T19:10:47.829512-08:00","closed_at":"2026-02-03T19:10:47.829512-08:00","close_reason":"Added shared session-scoping helpers (CQ_SESSION/--session) for safe name resolution + session-scoped config paths; routed session_utils/cq-mounted through them; made explicit named sessions strict (no fallback to default); added unit tests covering precedence + legacy fallbacks.","labels":["sessions","refactor"],"dependencies":[{"issue_id":"claude_code_bridge-4.1","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} |
| 4 | +{"id":"claude_code_bridge-4.2","title":"cq: add --session and make lock per (cwd,session)","description":"Allow running multiple `cq` instances for the same repo by namespacing the per-directory lock.\n\n## Scope\n- Add `--session \u003cname\u003e` to `cq` (default `default`)\n- Change the `ProviderLock(\"cq\", cwd=...)` key to include session name (e.g. `f\"{cwd}::{session}\"`).\n- Export `CQ_SESSION=\u003cname\u003e` in managed env so child panes inherit it.\n\n## Acceptance\n- `cq --session A ...` and `cq --session B ...` can run concurrently in the same directory.\n","status":"open","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:38.852098-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:38.852098-08:00","labels":["sessions","cli"],"dependencies":[{"issue_id":"claude_code_bridge-4.2","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.2","depends_on_id":"claude_code_bridge-4.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 5 | +{"id":"claude_code_bridge-4.3","title":"Session-scoped session files under .cq_config/sessions/\u003cname\u003e/","description":"Persist provider session files per session name.\n\n## Scope\n- New layout: `.cq_config/sessions/\u003cname\u003e/.codex-session` and `.cq_config/sessions/\u003cname\u003e/.claude-session`\n- Backcompat:\n - If no session specified, keep using existing `.cq_config/.codex-session` / `.cq_config/.claude-session` (default session)\n - Optionally migrate legacy root files into sessions/default/ (best-effort)\n\n## Acceptance\n- Starting a second session does not overwrite the first session's session files.\n","status":"open","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.013882-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.013882-08:00","labels":["sessions","state"],"dependencies":[{"issue_id":"claude_code_bridge-4.3","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.3","depends_on_id":"claude_code_bridge-4.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.3","depends_on_id":"claude_code_bridge-4.2","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 6 | +{"id":"claude_code_bridge-4.4","title":"Namespace pane_title_marker per session","description":"Prevent pane marker collisions across sessions.\n\n## Scope\n- Include session name (and ideally a short run id) in `pane_title_marker` for each provider.\n- Ensure the *full marker* is stored in the session file and used for rediscovery.\n\n## Acceptance\n- Two sessions in the same project do not share markers like `CQ-Codex` / `CQ-Claude`.\n- Rediscovery finds the correct pane when a pane_id changes.\n","status":"open","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.180659-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.180659-08:00","labels":["sessions","tmux","wezterm"],"dependencies":[{"issue_id":"claude_code_bridge-4.4","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.4","depends_on_id":"claude_code_bridge-4.3","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 7 | +{"id":"claude_code_bridge-4.5","title":"ask: add --session and route using session-scoped session files","description":"Make `ask` able to target a specific session.\n\n## Scope\n- Add `--session \u003cname\u003e` to `bin/ask` (default from `CQ_SESSION`, else `default`).\n- Load the provider session for the selected session.\n\n## Acceptance\n- `ask --session A codex ...` routes to A.\n- Running `ask codex ...` inside session A routes to A (via `CQ_SESSION`).\n","status":"open","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.371587-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.371587-08:00","labels":["sessions","cli","routing"],"dependencies":[{"issue_id":"claude_code_bridge-4.5","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.5","depends_on_id":"claude_code_bridge-4.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.5","depends_on_id":"claude_code_bridge-4.6","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 8 | +{"id":"claude_code_bridge-4.6","title":"Make codex/claude session loaders + registry session-aware","description":"Update session resolution so multiple sessions can coexist.\n\n## Scope\n- Update `lib/codex_session.py` + `lib/claude_session.py` to accept a `session` parameter (or read `CQ_SESSION`).\n- Update `lib/claude_session_resolver.py` so it prefers session-scoped files/registry records and avoids cross-session collisions.\n- Consider adding `cq_session_name` to registry records for additional disambiguation.\n\n## Acceptance\n- With two active sessions, `ask --session A claude ...` never resolves B's pane.\n","status":"open","priority":1,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.542717-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.542717-08:00","labels":["sessions","registry"],"dependencies":[{"issue_id":"claude_code_bridge-4.6","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.6","depends_on_id":"claude_code_bridge-4.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.6","depends_on_id":"claude_code_bridge-4.3","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 9 | +{"id":"claude_code_bridge-4.7","title":"cq-mounted: add --session and list all sessions","description":"Teach `cq-mounted` about multiple sessions.\n\n## Scope\n- Support `cq-mounted --session \u003cname\u003e` (or `CQ_SESSION`) to answer \"is this session mounted?\"\n- Add `cq-mounted --all-sessions` to enumerate `.cq_config/sessions/*` plus the default session.\n\n## Acceptance\n- Skills using `cq-mounted` from inside a session see the right providers.\n","status":"open","priority":2,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.728948-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.728948-08:00","labels":["sessions","cli"],"dependencies":[{"issue_id":"claude_code_bridge-4.7","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.7","depends_on_id":"claude_code_bridge-4.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.7","depends_on_id":"claude_code_bridge-4.3","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 10 | +{"id":"claude_code_bridge-4.8","title":"Tests + README docs for multi-session","description":"Add coverage and documentation for multi-session workflow.\n\n## Scope\n- Unit tests for session path selection and routing precedence.\n- Update README with examples:\n - Start two sessions\n - Target via `ask --session`\n - In-pane default behavior via `CQ_SESSION`\n\n## Acceptance\n- Tests cover session selection rules and no collisions.\n- README documents multi-session usage succinctly.\n","status":"open","priority":2,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:50:39.914963-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:50:39.914963-08:00","labels":["sessions","tests","docs"],"dependencies":[{"issue_id":"claude_code_bridge-4.8","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.8","depends_on_id":"claude_code_bridge-4.5","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.8","depends_on_id":"claude_code_bridge-4.7","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
| 11 | +{"id":"claude_code_bridge-4.9","title":"Update all-plan/pair/poll skills to include session targeting","description":"Ensure the `all-plan`, `pair`, and `poll` skills work correctly with multi-session support.\n\n## Problem\nWhen multiple sessions exist in the same repo, skills that instruct users to run `ask codex ...` / `cq-mounted` need to either:\n- pass `--session \u003cname\u003e` explicitly, or\n- rely on inherited `CQ_SESSION` env var and ensure any *driver-side* invocations preserve it.\n\n## Scope\n- Update skill docs/templates so:\n - Any `ask ...` command examples include `--session \"$CQ_SESSION\"` when appropriate, or explicitly mention relying on `CQ_SESSION`.\n - Any `cq-mounted` usage includes `--session` or respects `CQ_SESSION`.\n- Ensure reply-via-ask instructions keep responses routed to the correct session.\n\n## Files\n- `/Users/stefanc/.codex/skills/all-plan/**`\n- `/Users/stefanc/.codex/skills/pair/**`\n- `/Users/stefanc/.codex/skills/poll/**`\n\n## Dependencies\n- Should block on core multi-session routing being implemented (`ask --session`, `cq-mounted --session`).\n\n## Acceptance\n- With two sessions running, invoking `/all-plan`, `/pair`, or `/poll` inside session A results in all `ask` traffic staying within session A.\n- Skill prompts/templates mention session explicitly (or document `CQ_SESSION` inheritance clearly).\n","status":"open","priority":2,"issue_type":"task","owner":"stefanc@allenai.org","created_at":"2026-02-03T18:53:39.084064-08:00","created_by":"stefanc-ai2","updated_at":"2026-02-03T18:53:39.084064-08:00","labels":["sessions","skills","docs"],"dependencies":[{"issue_id":"claude_code_bridge-4.9","depends_on_id":"claude_code_bridge-4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.9","depends_on_id":"claude_code_bridge-4.5","type":"blocks","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"claude_code_bridge-4.9","depends_on_id":"claude_code_bridge-4.7","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} |
2 | 12 | {"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"]} |
3 | 13 | {"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"]} |
4 | 14 | {"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