Skip to content

v1.0.0 — Initial public release

Choose a tag to compare

@pekinlcc pekinlcc released this 19 Apr 06:45

Initial public release. Retroactively labeled — this is the baseline
captured right after M1 scope closed out.

Core capabilities

  • Two-agent loop: Claude Code and Codex drive a shared
    PRD.md + codex_review_v{N}.md cycle end-to-end. State machine
    (PLANNING → IMPLEMENTING → REVIEWING → REFINING → GOAL_CHECK) lives
    in a single-writer reducer in crates/core.
  • macOS desktop app built on Tauri 2 with a Winamp-style chrome
    shell + cyberpunk neon theme (cyan / magenta / lime on near-black).
  • Triangle / double-bar / square transport controls mapping to Play,
    Pause, Stop — idempotent per PRD §7.
  • Structured event timeline + live raw stdout/stderr drawer — two
    Tauri event channels (cccplayer://event structured,
    cccplayer://raw per-line), ring-buffered to 2000 lines in the UI.
  • Safe-by-default workspace classifier — home / system paths are
    refused or require explicit confirmation; .cccplayer/ is
    auto-added to .gitignore.
  • Round snapshots — every round start takes a tar.zst snapshot
    into .cccplayer/snapshots/; round-00 is the user's original
    code and is never deleted.
  • App Nap suppression (macOS) via NSProcessInfo.beginActivity
    so long runs don't get throttled while the window is hidden.
  • Finder-launched PATH augmentation — the app prepends Homebrew /
    nvm / volta / bun / ~/.cargo/bin / ~/.local/bin to the process
    PATH at startup so #!/usr/bin/env node scripts (Codex) can find
    node without a Terminal-inherited environment.
  • Zero telemetry — the app itself makes no network calls. All
    tokens are billed to the user's own Claude + Codex accounts.

Shipped adaptations

  • Claude Code 2.x: -p with --output-format stream-json requires
    --verbose; usage is parsed from nested
    {"type":"assistant","message":{...,"usage":{...}}}.
  • Codex 0.1x: invoked as codex exec <prompt>; tokens scraped from
    the trailing plain-text tokens used\n<N> pair.

Known issues in 1.0

Fixed in 1.1. See above.