Skip to content

feat: multi-provider support (Claude Code + Codex)#1

Merged
lroolle merged 5 commits intomainfrom
feat/codex
Apr 7, 2026
Merged

feat: multi-provider support (Claude Code + Codex)#1
lroolle merged 5 commits intomainfrom
feat/codex

Conversation

@lroolle
Copy link
Copy Markdown
Member

@lroolle lroolle commented Apr 7, 2026

Summary

  • Multi-provider composite backend — Claude Code (/.claude) + Codex (/.codex) sessions merged by project, sorted by activity
  • Codex rollout JSONL parser — handles v2 rollout format (session_meta, event_msg, response_item, turn_context, compacted) with call_id deduplication
  • Config struct refactor — typed Settings with ProviderConfig (accent colors, display names, enable/disable), SessionFilter with date/provider/model/query matching
  • CLI search/filter flags--provider cc|cx, --after, --before, --model, --sort time|messages on search and sessions commands
  • Web filter bar — provider dropdown + client-side filtering on project page
  • Brief export--brief flag strips to conversation-only (human input, agent responses, compactions, delegation conclusions)
  • Memory inspection — project page collapsible memory section with lazy-load file viewer (fmt/raw/copy), cross-project /memory page, memory in search results
  • Settings page — provider status cards with session counts, ccx config table
  • Raw JSONL in web viewer — "raw" toggle now shows the full original JSONL record with all IDs and metadata
  • GoReleaser release workflow — replaces manual cross-compile, adds install.sh, updated SKILL.md

Stats

  • 255 test functions across 15 test files
  • Core coverage: 83.1% (config 79.6%, parser 91.9%, render 79.1%, provider 78.6%, codex 80.0%)
  • 41 files changed, +9190 -264

Review findings addressed

  • --before off-by-one (ParseBeforeDate advances to next day midnight)
  • --provider + --type project dead path (now checks project sessions)
  • --sort was no-op (now sorts by EndTime or MessageCount)
  • Session.Model not populated in quick parse (extracted from first assistant/turn_context)
  • Provider enable/disable was cosmetic (now wired into Default())
  • Codex duplicate tool traces (handledCallIDs dedup for response_item vs event_msg)
  • recordTimestampValue tracks min/max (handles out-of-order JSONL)
  • Date parsing uses time.Local (matches user timezone expectation)
  • shell_command/shell normalized to Bash (10k+ legacy tool calls)

Test plan

  • go test ./... — 255 tests pass
  • ccx sessions --provider=cx --limit=5 — codex-only filter works
  • ccx search --provider=cc "auth" — claude-only search works
  • ccx sessions --after=2026-04-01 — date filter works
  • Web UI: provider dropdown filters session cards client-side
  • Web UI: project page memory section shows expandable file cards
  • Web UI: /memory page lists all memory files cross-project
  • Web UI: search finds memory files by name and content
  • Web UI: visual review of provider accent colors and badge positioning

Generated with Claude Code

lroolle and others added 5 commits March 24, 2026 20:32
Replace manual cross-compile release workflow with GoReleaser v2.
Add one-liner install script with platform detection and fallback.
Update SKILL.md for multi-provider support and new features.
Add Makefile skill target for packaging.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lroolle lroolle merged commit 2607e2d into main Apr 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant