Repository navigation
Merge dev → main (automated) - #253
Merged
Merged
Conversation
added 30 commits
October 4, 2026 22:54
- Add LICENSE file with standard MIT licence text - Update package.json license field to MIT
Tone.js was removed in a prior migration (TF-0MN06817414DW638) but the package.json dependency entry and lockfile remained. No source files import the 'tone' package. ACs verified: - No file imports tone - tone removed from package.json dependencies - npm install completes cleanly, lockfile updated - Full test suite passes (2572 tests) - Web build succeeds
Prepend bin/tf-shim/ to the PTY PATH so that toneforge and tf resolve inside the web server terminal without a global npm link. - bin/tf-shim/toneforge, tf: shell scripts delegating to bin/dev-cli.js - web/server/index.ts: prepend SHIM_DIR to PTY env.PATH at startup - README.md: document CI-safe CLI invocation in the web demo Resolves TF-0MUVK0OMW0058TV0
added 24 commits
October 5, 2026 20:57
Persist `tf library add` recipes into an external recipe directory (~/.toneforge/recipes by default, configurable via TONEFORGE_RECIPE_DIR or --destination) so a separate `tf generate` process discovers and renders them. - core/recipe.ts: multi-directory discovery, external directory resolution, atomic temp-file+rename persistence, path-traversal-safe names - recipes/index.ts: discover baked-in presets plus the external directory - cli.runtime.ts: persist on `library add`; `library list` shows the recipe catalogue with source directory and external/baked-in/built-in kind - help text and docs/guides/external-recipes.md document path resolution
- Export assertOverrideChangesOutput helper for per-parameter testing - Refactor registry-wide coverage test to use the helper - Add stale-entry and missing-entry guard assertions - Add unit tests for the override-check helper - All 9 tests pass; no production code changes
…9003PW21) - Remove the 'as unknown as ToneGraphDocument' cast from automation test cases in tonegraph.test.ts; use typed const annotations instead - Add an integration test asserting ambient-wind-gust and card-transform inline automation survives validation, changes rendered output, and remains deterministic Note: the core schema validation/preservation was already delivered by TF-0MUV8YKFR002BIA2; this item closes the remaining test/type gaps.
…RD7B) - impact-crack: blend white/pink noise by noiseColorMix (0=white, 1=pink) using Paul Kellet's pink-noise filter; exactly one RNG draw per sample - card-round-complete: implement ADSR envelope with a sustain plateau (attack -> decay to sustain -> plateau -> release); duration now attack + 3*decay so the sustain phase is inside the rendered buffer - Remove both entries from KNOWN_UNWIRED - Add explicit per-parameter override tests and sustain-plateau RMS test Note: seed-derived baseline audio changes for both recipes; no golden snapshots exist.
- Add src/core/recipe-overrides.ts: parse, validate and apply declarative meta.parameters[].overrides mappings - Support direct node-param targets, automation-event targets (by index or kind), and computed expressions (* and /) over resolved parameters and node fields - Wire mappings into createFileBackedRegistration after the name/default heuristic so explicit mappings win; validate at registration/discovery time - Add 26 unit/integration tests covering each target form, resolution order, precedence, no-op behaviour, and loud failures - Document the mapping format in docs/tonegraph.md Recipes without mappings are unchanged (no-op path).
…TF-0MUVK22YO002IID4) - ambient-wind-gust.yaml: map filterFreq -> windFilter.frequency and automation offset, lfoRate -> automation rate, lfoDepth -> automation depth (expression 'lfoDepth / 2') - card-transform.yaml: map carrierFreq -> carrier.frequency, modRatio -> modulator.frequency (expression 'carrier.frequency * modRatio'), modDepthStart -> modDepth.gain and the 'set' event, modDepthEnd -> the 'linearRamp' event value - weapon-laser-zap.yaml: map carrierFreq/modulatorFreq directly and modIndex -> modDepth.gain (expression 'modIndex * modulator.frequency') - Add shared assertOverrideChangesOutput test helper and explicit per-parameter override assertions for the three recipes - Remove the three now-honoured KNOWN_UNWIRED entries; only ambient-wind-gust.release remains (child TF-0MUVK23CN004C4R9) Baseline audio changes for the three recipes (no golden snapshots exist).
…004C4R9) - tonegraph.ts stop(): release now spans [time - release, time] (clamped at 0) instead of [time, time + release], matching the authored convention duration = attack + decay + release; sources still stop at time - Re-assert the sustain plateau from cancelScheduledValues(releaseStart) - Document the stop() contract on ToneGraphHandle - Add unit tests: release ramp measurable inside the window; release = 0 holds sustain through the buffer (unchanged behaviour) - Add ambient-wind-gust.release override test with tail-fades-to-silence assertion; remove the last KNOWN_UNWIRED entry (now empty) footstep-gravel and ui-scifi-confirm have release = 0 and render unchanged.
…P0VA) - Extract evaluateAllowlist guard helper; the registry-wide coverage test now derives stale/missing entries through it - Add unit tests for the guard machinery (stale, missing, still-no-effect) and a helper test that fails when a wired parameter is claimed allowlisted - Update docs/tonegraph.md: envelope release window semantics and the file-backed override mapping format (already added) plus node-automation preservation - Document override resolution order on RecipeRegistration.buildOfflineGraph and RenderPresetInput.overrides The allowlist is empty; every declared parameter of every registered recipe is honoured.
…ent smoke coverage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated release created by ship skill.\n\nIncludes CHANGELOG.md with work-item summaries from this release.