Skip to content

v2.1.0

Choose a tag to compare

@sprngr sprngr released this 13 Aug 03:34
· 23 commits to main since this release
ce664be

Rubber Duck v2.1.0

Installer overhaul, policy refinements, and full PowerShell parity.

Installer

  • Multi-harness install via --harness opencode,claude,copilot / -Harness opencode,claude,copilot. One command, one banner, per-target [name] sections, single 🦆 quack footer.
  • New sync action: manifest-driven install/prune across enabled targets. --prune / -Prune removes targets not enabled in manifest.
  • Manifest schema v1 (.rubber-duck/manifest.json) tracks source, targets, and pins (sha256 change log). Reinstall skips unchanged files (mtime preserved).
  • rawBase allowlist: installer only accepts sources under https://raw.githubusercontent.com/sprngr/rubber-duck unless --allow-untrusted-source / -AllowUntrustedSource is set. Prevents accidental fork/typo installs.
  • PowerShell parity: -DryRun, -Prune, -Harness, -AllowUntrustedSource, script-scoped variables, hoisted security helpers.
  • Consolidated output: banner + version: + source: + doctor: ok + skills printed once; per-target sections show only target-specific actions.
  • Skills install consolidated: single npx call with one -a <agent> per selected target.
  • Bash installer runtime floor: bash 4+, awk, curl, coreutils. python3 no longer required (pure-bash manifest library).
  • Env var rename: BASH_SOURCE_URLRUBBER_DUCK_SOURCE_URL (shell-agnostic naming, honored by both installers for branch auto-detect).
  • Backup retention: only the most recent <file>.bak.* per policy file is kept; prior backups pruned on install/uninstall.
  • --skip-agents-md / -SkipAgentsMd and --extras / -Extras flags exposed on both installers.

Policy & workflow

  • Phase-gated approvals: preflight phase selection (stubs/skeleton/interfaces, wiring/integration, implementation), adaptive caps (6/4/2 files), objective review-fatigue thresholds using changed lines, mandatory re-approval between phases.
  • New-file bootstrap rule: new feature files must land as stub/skeleton first, implementation in later phases.
  • Docs-as-semantic default: documentation/planning edits treated as semantic changes (preflight + diff + approval); typo-only fixes in non-code text files remain lightweight.
  • Approval intent: approve, approved, ok, go ahead, confirm all accepted (examples explicitly non-exhaustive).

Skills

  • Skill metadata versioning aligned to RUBBER_DUCK_VERSION format (vX.Y.Z) across all skills.
  • quack no longer stalls after routing.
  • duck-tape session-id handling hardened; rotation metadata no longer persisted to CONTEXT.md.
  • Cross-skill policy consistency pass: removed fixed file-count gating, aligned mutating workflows to phase-gated approvals.

Validation

  • Suite expanded to V01–V35; V14 realigned to phase-cap boundary; V30 accepts clear approval intent; V32/V33 cover missing phase preflight and re-approval between phases.
  • New V34/V35 cover documentation-as-semantic gate and typo-only cosmetic exception.

Tests & tooling

  • Installer test suite with bash + PowerShell parity (8/8 each): fresh install, reinstall pin verify, sync round-trip, rawBase allowlist, claude two-file layout, dry-run no writes, dry-run multi-target layout, sync default source.
  • Guardrails drift check now fails on duplicate headings in generated dist/**/*.md (catches nested-include composition regressions).
  • markdownlint-cli2 wired into local pre-commit hook.
  • Assembly renderers support nested embedded {{include: ...}} in both skill and harness pipelines.

Fixes

  • Installer --raw-base no longer silently overwritten by branch default.
  • PowerShell sync -Prune no longer returns early with no enabled targets.
  • PowerShell security helpers (Test-RawBaseAllowed, Get-Sha256) hoisted to script scope so sync path enforces allowlist.
  • Bash sync install loop under set -u no longer errors on empty enabled-targets array (bash 3.2).
  • Managed block upsert no longer accumulates blank lines above fences.
  • PowerShell script-file execution detection fixed for -Source local.
  • PowerShell local-source file resolution uses script-scoped variables.
  • Installer sync no longer fails with default source (RAW_BASE ordering fix).
  • write_pins / Write-Pins now honor dry-run.
  • dist/*/agents/rubber-duck.md no longer duplicates approval-workflow sections.

Full Changelog: v2.0.1...v2.1.0