- The
opencodeprovider now delivers the prompt over stdin instead of as a command-line argument, avoiding argument-length and shell-escaping issues with large prompts (abecdf2)
- Pin the
argue-viewerCloudflare deploy workflow to themasterbranch so only production builds publish (d963fa5) - Isolate spinner color environment in CLI tests to keep
NO_COLOR/--no-colorassertions deterministic (55c1103)
Headline: visible progress for slow CLI operations. argue run and argue act now drive a Braille spinner on stderr so the long opaque waits between events feel alive, while stdout stays clean for piping. The viewer also gains a small navigation polish — the report header logo now links back to home.
argue runandargue actshow a Braille spinner (⣾⣽⣻⢿⡿⣟⣯⣷) on stderr during waits.argue runrotates labels as participants respond and stops on round/report/action terminal events;argue actspins from dispatch until the result settles. Spinner writes to stderr so stdout (the action response) stays pipe-friendly; non-TTY falls back to a single breadcrumb line;NO_COLORand--no-colorare honored (f26cead, dfa12c9)- Viewer report header logo now links back to the landing page so users can navigate home without retyping the URL (9895189)
argue actnow actually accepts--no-color(previously rejected as unknown option) and forwards it to the spinner. The catch path inrunActionalso stops the spinner before printing the error so the error line is not interleaved with an in-flight animation frame or written under a hidden cursor (dfa12c9)
- Refactor report composer:
finalSummaryis now concise (one or two sentences) while detail moves torepresentativeSpeech, so consumers can pick the granularity they need (3cbbb4f) - CI: deploy
argue-viewerto Cloudflare Pages on release tag pushes (59d6f4e)
Headline: graceful interrupt on insufficient participants. When surviving participants drop below minParticipants mid-session, argue now returns a structured interrupted result by default instead of throwing a hard error — wired through the engine, CLI flags, config, viewer, and contracts so downstream consumers still get a full result.json, summary.md, and viewable report. Also fixes a latent JsonlObserver bug where a single appendFile rejection would permanently break the write queue and silently swallow every subsequent event for the rest of the session.
- New
participantsPolicy.onInsufficientParticipantsoption:"interrupt"(new default) yields a structured result withstatus: "interrupted"and aSessionInterruptedevent;"fail"preserves the legacy hard-failure behavior. Wired throughargue-cliasdefaults.participantsPolicy,--min-participants, and--on-insufficient-participants, with precedenceflags > input JSON > config defaults, and surfaced by the viewer as a first-class non-failure verdict (8ecc992, 3eea0ea)
JsonlObserverno longer silently drops every subsequent event after a singleappendFilefailure. The write queue was chained viathis.queue.then(...), so any rejection (full disk, permission flip, deleted file) permanently poisoned the chain because.thenon a rejected promise skips its callback — every future event was lost for the rest of the session. The chain now recovers from a previous failure with.catch(() => {})before the next work step, and a regression test mocksappendFileto reject once and verifies the nextonEventstill lands on disk (37e83f4, 2b30fb6)ReportTaskInput/ActionTaskInputstatus enums now accept"interrupted"so the new status survives round-trip through task inputs (0ab65ee)
- README (EN / CN / JP) calls out the 0.5.0 behavior change and documents how to opt back into the legacy hard-failure behavior via
--on-insufficient-participants fail
Headline: reasoning passthrough for CLI providers, plus a more resilient JSON recovery path. argue-cli now forwards per-model and per-agent reasoning settings to Claude Code and Codex, and a new syntax-only fallback in parseJsonObject rescues debate rounds where jsonrepair would otherwise give up on CJK output with stray ASCII quotes.
argue-clinow forwards per-model and per-agentreasoningsettings to Claude Code and Codex so CLI-backed providers can opt into reasoning modes via config (3689783)
- Recover debate rounds where agents emit CJK strings with unescaped ASCII quotes around phrases like
"弱客观性"(....jsonrepair's lookahead misclassifies these as unquoted keys;parseJsonObjectnow has a syntax-only position-driven stray-quote escape fallback that walksJSON.parse's error position and escapes the most recent offending quote, retrying until the parser accepts the payload (f857b54) perTaskTimeoutMsnow defaults toperRoundTimeoutMsinstead of a fixed value, so per-round and per-task budgets stay aligned unless explicitly overridden (3531cff)- Provider error messages now include captured stdout alongside stderr so failed CLI agent invocations are easier to diagnose (ccc448b)
- Codex provider invocations pass
--skip-git-repo-checksoarguecan run outside git repositories (ccc448b)
- Document where the CLI reasoning passthrough is a no-op (non-supporting models) and clarify user responsibility for supplying valid values (a3a22c7)
- Sync the reasoning passthrough section into
README_CN.mdandREADME_JP.md(14700d1) - Clarify in
runtime/jsondoc comments that the stray-quote fallback is syntax-only and that schema enforcement stays innormalizeTaskOutput(74700bb)
argue view --no-opennow prints the full report URL on stdout instead of a truncated preview, so$(argue view --no-open)and| pbcopypipelines work as expected (ab39ef9)
Headline: argue view lands. Open any past run's report directly in the browser — from the CLI, from a --view flag on argue run, or by visiting a shareable URL that carries the result in its fragment. Also: a new argue skill for Claude Code, viewer UX polish, and collision-resistant request IDs.
argue viewcommand: open a past run's report in the browser by request ID or latest run (1352ba0)argue run --view: launch the viewer automatically after a run finishes (4e5fba9)- Encode
result.jsoninto a viewer URL fragment via gzip + base64url so reports load without a backend (20875a4) - Cross-platform browser launcher for
argue view(50dba68) and orchestrator that wires discovery, encoding, and launch together (683ce0e) - Run discovery helpers for locating past runs on disk (75a70f3)
viewer.urlconfig field, defaulting tohttps://argue.onev.cat(285cc42)- Collision-resistant
requestIdgenerator used for all new runs (26dc754, f689518) - Viewer auto-loads the report from the URL fragment on startup (f8c83f2, 8ea37b9)
- Viewer routes the example report under
/examplewith browser back/forward support (c017626) - Viewer renders agent prose with markdown emphasis (6a77eb6)
- Viewer persists round merge events and gains chain-merge replay coverage (ca3d61d)
- New
argueskill for Claude Code so agents can run debates through the CLI (dfad285)
- Require HTTPS for
viewer.urlexcept loopback addresses (7c50024) - Tighten
REQUEST_ID_PATTERNto match the generator exactly and unifyargue viewdiscovery on it (f4e8b96, 1ab2bec) - Truncate long report URLs in terminal output to avoid log spam (50cc4cd)
- Fix merge replay handling in the engine (d70460b)
- Viewer: wrap hash decoder failures in descriptive errors (310d1c5)
- Viewer: snapshot the URL hash before async decode to avoid a race (cd5227e)
- Viewer: pin
Uint8Arraybuffer type for strict tsc check (57e9ca4) - Address argue skill self-review findings and follow-up review feedback (6b4f584, 42a7608)
- Document
argue view,--no-open, and default viewer URL across README, CLI help, and package docs (c9eacfc, b12f4fd, 106a7bf, dbd6782) - Add "Install the Argue Skill" and "Live Demo" sections to the root README (5e70681, b315d0e)
- Refresh README epigraph quotes and tease the manual route (1cadc34)
- Tighten the argue skill docs and point at
result.tsinstead of bundling the schema (d3d15e8, 9cfee65) chore(release): publish GitHub Release page automatically from CHANGELOG (cdf6bd1)- Refactors: share default output dir helper, reuse loaded config in
argue view, makelaunchBrowserasync (dbd6782, 6141df3, 59ebd35)
First release under unified versioning: @onevcat/argue, @onevcat/argue-cli, and @onevcat/argue-viewer now share one version number driven by the root package.json. Headline change: @onevcat/argue-viewer is real — a Preact web app that renders an ArgueResult JSON file as a readable dossier.
- Introduce
@onevcat/argue-vieweras a Preact web app that rendersArgueResultJSON into a readable dossier (1847ec9) - Split viewer into landing / report screens with round polish and a shared footer (e354d3c)
- Viewer header now shows the debate date; judgements are aligned and confidence toned down (35f4c77)
- Replace viewer vote pills with Lucide check / x icon badges (324e153)
- Self-host viewer fonts and add component tests (32c3038)
- Carry the debate task title through
ArgueResultso the viewer can display it (52ebc18) - Add a
resultVersionfield toArgueResultfor forward-compatible schema evolution (58672e9)
- Use Web Crypto
randomUUIDin the engine so@onevcat/argueworks in browser environments (12d40fd, #41) - Repair broken JSON and persist raw model output on parse failure in the CLI runner (cc31bf6)
- Exclude
@onevcat/arguefrom vieweroptimizeDepsso the alias toresult.tsactually wins (e53f361) - Treat a missing
resultVersionas version 1 in the viewer (55094e0) - Center stance and vote-chip text in the viewer (7a0808b)
- Viewer code review follow-ups and a new
formatTimestamphelper (3cb4c2a)
- Adopt unified workspace versioning: root
package.jsonis now the source of truth,scripts/bump-version.mjspropagates to every workspace package, and the release workflow publishes@onevcat/argue+@onevcat/argue-clion one tag (#44) - Replace the CLI's hand-written JSON repair with the
jsonrepairlibrary (1d4969c) - Editorial dossier redesign + borderless parchment pass for the viewer (c8fffe8, 458e66d)
- Fix same-round claim ID collisions when multiple agents produce claims simultaneously (851cf93)
- Engine now assigns claim IDs centrally; agents no longer self-assign (8753f2e)
- Add husky + lint-staged for automatic pre-commit and pre-push quality checks (6202de3)
- Document git hooks and update pre-PR checklist (9a68a97)
Initial release of @onevcat/argue and @onevcat/argue-cli.
- Core orchestration engine with multi-agent debate protocol and rubric scoring (066bed5)
- Phase-aware prompt templates with structured output schemas (5767be9)
- JSONL observer for streaming structured event logs (9815d2a)
- Round event emission from task settlement timeline (d70ce3b)
- Action system: define, execute, and output standalone actions via library and CLI (3453379, 2cae9e3, 554c0c1, e1f7d8b)
- Session continuity for CLI and API providers across rounds (d168cd3)
- JSON config schema, loader, and
config initcommand with idempotent behavior (1422b57, f2258b9, 8096a74) config add-providerandconfig add-agentcommands with--agentshortcut (90c2d90, 46aafd0)- Vendor presets and auto-injected CLI base args for first-party agent support (429b885)
- First-party CLI support for Claude, Copilot, Gemini, Codex, Pi, OpenCode, Droid, and Amp (7c8d6dd, f8b7d59)
- Headless CLI runner with real-time round progress streaming (b60af62, ed09cb2)
- Rich CLI output with colors, per-agent details, verbose mode, and stance breakdowns (5717bab, e7dd981, 1be4414)
- Structured summary report with comprehensive sections (be3ba37, abe9c3e)
- Error artifact output on run failure (e4a7e64)
respondedAttimestamps and report events (e3750b0)exportsfield in both package.json files for modern resolution (fb23969)- Semantic validation for CLI numeric arguments (75b6938)
--agentshortcut defaults to representative composer (46aafd0)- Tag-driven GitHub Actions publish workflow (398befd)
- Preserve multiline action output in CLI instead of truncating (ff6211b)
- Reject non-object patches in
MemorySessionStore(0988ede) - Add bounded default (10) for
maxPeersPerRound(b0bf9bd) - Validate
representativeIdfor representative composer (6e29d41) - Bound API message history with sliding window (70cee65)
- Validate missing API key environment variable (1f5a66a)
- Wrap API
generateTexterrors with retryability context (9b060b8) - Correct action runtime normalization and context handling (a5edafa)
- Use
--resumefor subsequent Claude CLI rounds (8bd8761) - Fix CLI base args for real Claude and Codex binaries (9d96edf)
- Monorepo split into
@onevcat/arguelibrary and@onevcat/argue-clipackages (687f1c8) - Collapse
topic/objectiveinto singletaskinput (261b970) - Remove TUI mode from plan and implementation (a569482)
- Add LICENSE to packages and switch to OIDC trusted publishing (844ecb1)
- ESLint and Prettier configuration with CI fail-fast checks (c29bcef)
- Dev watch mode with concurrently (50da5af)