Releases: garygentry/rauf
v0.8.0
Provider-neutral backlogs. Backlog items no longer bind to Claude by default, and
a new loop flag lets a Claude-aliased backlog run portably under any agent without
editing it — closing the #38 failure mode where a model: "opus" item silently
halted the loop under a non-Claude agent. Additive minor bump.
Added
rauf loop run --no-model(alias--model none) — ephemeral per-run model
override that makes the loop ignore each backlog item'smodelfield for that
run (the newignoreItemModelloop option). Resolution drops to
--model> project default > provider default, so a backlog whose items carry
Claude-only tier aliases (opus/sonnet/…) runs portably under a non-Claude
--agentwithout a persistent edit tobacklog.json. Also accepted on the
POST /loop/startbody for server-mode parity. (#38)
Changed
author-backlogskill is provider-neutral by default — itemmodelis now
omitted unless the user explicitly opts into a Claude tier, keeping authored
backlogs agent-portable. Tier aliases are documented as Claude-only and
agent-binding. (#38)review-backlogskill flags items carrying Claude-onlymodelaliases as a
portability concern (new "Claude-bound model alias" anti-pattern). (#38)
Full Changelog: v0.7.0...v0.8.0
v0.7.0
The agent-agnostic epic — rauf's loop runner is no longer Claude-only. A pluggable
provider layer (packages/loop/src/providers/) lets the loop drive any CLI coding
agent via presets + a generic adapter, with agent selection, availability
pre-checks, and a hardened process-group lifecycle. Additive minor bump.
Added
- LLM-agnostic provider architecture in
packages/loop—providers/
(registry, presets, generic-CLI + CLI-agent adapters, shared types), an
agent-selectionresolver, and aprocess-grouplifecycle for clean
child-process teardown. The runner resolves and launches the configured agent
by precedence and classifies its outcome provider-agnostically. .gitattributes— LF normalization (* text=auto eol=lf) +export-ignore
for dev-only trees (specs/,tests/,.github/,test-sandbox/).- npm-publishability prep on the packages the installer's
rauf@0.6.0pin
targets (publishConfig/files/bin) — machinery only; no publish is
executed (thenpx rauf@0.6.0path is documented as "available once rauf 0.6.0
is published"). - Optional
npm-publish.yml—workflow_dispatch-only publish machinery,
outside the PR gate (not run by this feature).
Changed
- README — added a labeled cross-agent section linking feature-forge's
cross-agent install story (loop-runner framing retained).
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Phase 4 of the rauf UX/DX overhaul — web/CLI recovery parity, a shared status
vocabulary, and a ratified agent contract. Additive minor bump (no
minRunnerVersion change, no feature-forge lockstep).
Added
- Web recovery parity with the CLI:
reset,resume,review,unblock,
andvalidateare now exposed as web server routes with matching status-page
controls, so the dashboard can drive the same loop-recovery operations the CLI
offers. - Shared status label-map across CLI and web —
REVIEWINGand
PAUSED_USAGE_LIMITbadges and a "Needs Human" label render identically in
both surfaces. rauf update --check— report-only drift audit that prints whether a
project's artifacts are stale (tool-version lag or dead hash keys) and exits
non-zero if so, writing nothing. Makes fleet-wide staleness scriptable.
Changed
statusexit codes are aligned with the unified scheme via a shared
statusExitCodemapping, so the webDerivedStatusand CLI agree on outcome
semantics.- Agent-contract documentation finalized and the UX-overhaul canon ratified
(canon-conformance review: GO, 0 blockers). rauf updatenow prunes stale artifact-hash keys from the marker (e.g. the
legacyralph.sh/ralph-status.sh/ralph-add.shhashes carried over from a
pre-rename install) instead of preserving them indefinitely.rauf migratedocumentation sharpened as a legacy one-shot (it renames
structure but does not backfill artifacts — follow withrauf update; non-rauf
config references to.ralphare reported but not auto-rewritten).
Removed
rauf update --yesretired from--help—updateis non-destructive and
never prompts (the flag is still tolerated for back-compat).
Full Changelog: v0.5.0...v0.6.0
v0.4.0
Added
rauf loop run --pause-on-needs-human— opt-in run mode that halts the loop
(statepaused_human, with a distinct non-zero exit code) on the first
RAUF_NEEDS_HUMANinstead of setting the item aside and continuing, so a
supervising session can detect the pause. Emits aloop_pausedNDJSON event.rauf resume --answer <id> "<text>"(repeatable) — inject a human's answer
into a paused needs-human item and re-queue it; the answer is threaded into the
item's next prompt and cleared once it completes.- Machine-observation surfaces (
loop run --ndjsonevent vocabulary and
status --jsonDerivedStatus) are now documented as a versioned contract
indocs/SPEC-BACKLOG-TOOL-CONTRACT.md, with the machine-vs-human surface
distinction made explicit. - Web dashboard: a specific empty/error state when the configured root directory
does not exist (with a Settings link) plus pre-save root validation; and a
favicon (served in dev and from the compiled binary).
Changed
- Backlog-authoring guidance uses model tier aliases (
opus/sonnet) instead
of pinned IDs, and documentsopus[1m]for items that need the 1M context
window (opt-in via the[1m]suffix; no cost premium on Opus). - The web server's startup recovery resolves its root via the standard precedence
(RAUF_ROOTenv → config → cwd), honoring an explicitRAUF_ROOT/--root
override. --create-branch,--pause-on-needs-human, andresume --answerare now listed
in the CLI--helpflag tables.- Purged user-facing
ralphleftovers from the web UI (themelocalStoragekey,
migrated transparently; command examples).
Fixed
- Loop wedge: item completion is now authoritative — if an item's on-disk
status is perturbed (e.g. reverted topending) mid-iteration, the runner
re-assertsin_progressbefore markingdoneand surfaces failures, instead of
silently failing the invalidpending -> donetransition and re-running the
item indefinitely. - Server startup recovery (
recoverStaleLoops) no longer resetsin_progress
items in projects whose lock is held by a live loop (e.g. a direct-mode
rauf loop run); only genuinely stale loops are recovered. LOG_PATTERNS.needsHumannow matches the runner's actual
Item <id> needs human input (set aside): <reason>line.RAUF_*terminal tokens in the diagnostic "Signal text" log dump are redacted so
agent prose can no longer plant false signals in a greppedrauf.log.rauf resume --answer 001 "..."no longer misreads the answer text as the
project path in the documented no-path form.- README: broken images and the loop diagram restored/renamed; the version badge is
now a dynamic GitHub-release badge; docs builds no longer dirty the working tree.
Full Changelog: v0.3.0...v0.4.0
v0.3.0
First stable release under the rauf name. Promotes 0.3.0-rc.2; the
0.3.0-rc.1 and 0.3.0-rc.2 sections below carry the full per-candidate detail.
Changed (BREAKING) — Ralph is now Rauf
- The tool was renamed from
ralphtorauf: binary, the@rauf/*package
scope,.rauf/state dir,.rauf.json,RAUF.md,RAUF_ROOT,
X-Rauf-Request,~/.rauf/, and theRAUF_*loop signals. See
MIGRATION.md.
Added
rauf migrate <path>— in-place migration of a legacyralphproject to
rauf, with--dry-run,--no-backup,--clean-backups, and--global.
Fixed
- Release binaries for x64 are built with Bun's
-baselineruntime so they run
on every x64 CPU; the previous builds required AVX2 and crashed withSIGILL
on CPUs without it.
Full Changelog: v0.3.0-rc.2...v0.3.0