Skip to content

Releases: Impractical-Instruments/reuben

v1.0-rc3

Choose a tag to compare

@charliehuge charliehuge released this 14 Jul 19:41
5e24151
Give strum-harp voices a modal resonator instead of osc+envelope (#448)

* Give strum-harp voices a modal resonator instead of osc+envelope

Replaces each strum-harp-voice's plucked-saw + percussive-ADSR VCA
chain with a single resonator operator, tuned by freq and pinged by
gate via its own internal mallet exciter — a real plucked-string ring
rather than a synthesized envelope shape. No `active` output is
needed: a stolen voice reuses the same resonator instance, so its
ring continues under a re-trigger instead of cutting off.

* fix resonator gain

---------

Co-authored-by: Claude <noreply@anthropic.com>

v1.0-rc2

Choose a tag to compare

@charliehuge charliehuge released this 11 Jul 22:53
e7dd598
CI: dev staging branch + fast-forward promotion to main (#346) (#375)

* CI: dev staging branch + fast-forward promotion to main (#346)

Part 2 of the dev-staging model. All additive; PR targets dev.

- ci.yml: add `dev` to the push trigger so the full suite runs on dev
  pushes and deploy-web ships --branch=dev (staging alias). Add an
  always-green `ci-passed` aggregate job for the dev ruleset to require,
  since per-path-filtered jobs can't be required directly (a Skipped job
  reads as an unmet check). deploy-web/bench-history stay out of its
  needs — they're post-merge, not merge gates.
- promote.yml: new manual workflow_dispatch that fast-forwards main to
  dev and pushes with a GitHub App token (bypasses main's push
  restriction AND triggers the downstream production deploy, neither of
  which GITHUB_TOKEN can do).
- CONTRIBUTING.md: Branching & release flow section.
- ADR-0055: records the model (0054 was taken by web-chat-agent-host).

Deliberately unchanged: clean-merged-branches.sh (auto-targets the
default branch), gen-share-links.mjs ORIGIN (production by design),
bench-history / perf gate / release.yml (all main-keyed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K5ZJkXhNfxfzjtG1QDZhE4

* CI: name the aggregate gate job `ci-passed` so the ruleset can match it

GitHub matches required status checks by a job's `name`, not its id. With
`name: CI passed (aggregate gate)` the check reported under that string, so
the `dev` ruleset (which requires `ci-passed`, per #346/ADR-0055) could
never match it — every PR would block waiting on a check that never
reports. Rename the job's `name` to `ci-passed` so the required-check
string is identical everywhere.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K5ZJkXhNfxfzjtG1QDZhE4

---------

Co-authored-by: Claude <noreply@anthropic.com>

v1.0-rc1

v1.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@charliehuge charliehuge released this 24 Jun 08:32
26a6295
ci: Windows + Linux builds and v* release pipeline (ADR-0026) (#49)

* ci: Windows + Linux builds and v* release pipeline (ADR-0026)

The last V1.5 item: package the platform-reach promise.

- ci.yml: add a windows-latest build+test job (non-audio). fmt/clippy/
  lockstep/bench stay ubuntu-only (platform-independent). RUSTFLAGS=-D
  warnings catches platform-gated warnings. No ALSA — cpal links WASAPI
  and tests open no device. Windows audio out is verified by a manual
  smoke pass on real hardware, not CI (can't init WASAPI headless).
- release.yml: new v*-tagged workflow. Builds --release reuben on Linux
  + Windows, packages a versioned archive (tar.gz/zip) bundling binary +
  LICENSE + README, attaches each plus a .sha256 to the GitHub Release.
  No installer.
- README: prebuilt-binaries section (source build stays primary).
- ROADMAP: mark the build item 🟡 — pipeline landed, ✅ pending the
  manual Windows audio smoke pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

# Conflicts:
#	ROADMAP.md

* ci: pin golden snapshots to LF so Windows checkout doesn't break the byte-exact compare

Windows runners default core.autocrlf=true, checking the descriptor golden
out as CRLF; the renderer emits LF only, so the byte-exact compare failed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci: normalize text to LF repo-wide; mark .tosc/.wav binary

include_str!-embedded schema + the descriptor golden are byte-compared
against \n-only generated output. Broaden the earlier golden-only LF pin to
all text so Windows checkout (autocrlf=true) can't reintroduce CRLF drift.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>