Skip to content

Follow-ups to #1058: Auto Pan keeps the stereo image, paste and Strip Silence fixes - #1060

Merged
aiongg merged 6 commits into
storytold:mainfrom
aiongg:batch-followups
Oct 25, 2026
Merged

aiongg merged 6 commits into
storytold:mainfrom
aiongg:batch-followups

Conversation

@aiongg

@aiongg aiongg commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Follow-ups from the review of #1058.

Changes

Tests

  • auto_pan_balances_a_stereo_signal_without_summing_it: different left and right content, including anti-phase.
  • a_refused_paste_leaves_the_clipboard_as_it_was.
  • subharmonic_drive_keeps_every_character_bounded gains the Q 5 case.
  • cargo xtask ci passes locally.

Summary by CodeRabbit

  • Bug Fixes
    • Auto Pan now preserves the left and right channels independently, balancing them at constant power and leaving them unchanged at center. Anti-phase stereo content can also drive the effect’s envelope.
    • A refused paste no longer changes the clipboard. Successful paste and repeat-to-fill operations retain their prepared clipboard settings.
    • Strip Silence browser scans now wait until pointer buttons are released.
  • Changes
    • AudioSuite no longer displays a Varispeed parameter slider; processes without supported parameters show “No parameters.”

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 541096d and e97e45a.

Files selected for processing: 10
  • ROADMAP.md
  • crates/dsp/src/plugins/auto_pan.rs
  • crates/dsp/tests/it/auto_pan.rs
  • crates/dsp/tests/it/plugins.rs
  • crates/engine/src/cmd/auto_rename.rs
  • crates/engine/src/cmd/edit.rs
  • crates/engine/src/cmd/edit_more.rs
  • crates/ui-egui/src/dialogs.rs
  • docs/gaps.md
  • docs/plugin-parity.md

Limit details: You’ve used all 10 included reviews currently available.

Walkthrough

This PR updates Auto Pan stereo processing and envelope measurement, delays clipboard updates until paste operations complete, adjusts browser Strip Silence scan timing, and removes the AudioSuite varispeed slider. It also adds tests and updates roadmap, plugin-parity, and open-gap documentation.

Changes: Auto Pan stereo balance

Layer / File(s) Summary
Stereo processing and envelope level
crates/dsp/src/plugins/auto_pan.rs
The first two channels receive separate constant-power gains. Envelope following uses the louder absolute level of those channels.
Tests and behavior records
crates/dsp/tests/it/auto_pan.rs, ROADMAP.md, docs/plugin-parity.md
Integration tests check center and half-left output and anti-phase envelope response. The roadmap and plugin-parity record describe the stereo behavior.

Clipboard updates during paste

Layer / File(s) Summary
Prepare clipboard without committing it
crates/engine/src/cmd/edit.rs, crates/engine/src/cmd/auto_rename.rs
Clipboard preparation no longer commits changes immediately. A test checks that a refused paste leaves the clipboard unchanged and a successful paste updates it.
Commit clipboard after paste processing
crates/engine/src/cmd/edit.rs, crates/engine/src/cmd/edit_more.rs
Paste, repeat-to-fill, and MIDI merge store the prepared clipboard after processing.

Browser Strip Silence scan timing

Layer / File(s) Summary
Defer scans during pointer interaction
crates/ui-egui/src/dialogs.rs
On wasm32, browser scans wait while a pointer button is down. The documentation describes scan timing and stopping conditions.

AudioSuite parameter display

Layer / File(s) Summary
Remove the varispeed slider
crates/ui-egui/src/dialogs.rs
The varispeed slider branch is removed. The process falls through to the existing “No parameters” display.

Subharmonic drive test coverage

Layer / File(s) Summary
Check output at two filter Q values
crates/dsp/tests/it/plugins.rs
The test checks each character’s default-Q peak bounds and verifies finite output with Q set to 5.

Clip Looping open-gap record

Layer / File(s) Summary
Record crossfade and loop-count limits
docs/gaps.md
The G-04 entry records the missing crossfade option and the differing loop-count limits.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Possibly related issues

  • storytold/soundcraft#915 — This PR changes the repeat-to-fill paste path, but does not address the reported quadratic growth in clip-multiplying edit commands.

Possibly related PRs

Suggested reviewers: dotcoocoo

Merge Risk: Minimal · up to e97e4

The changed paste, audio, and dialog behavior has no identified issue that needs resolution before merge; normal checks remain appropriate.

Security architecture risk: Low · up to e97e4

Paste now preserves clipboard contents on refusal, and stereo processing retains the existing safety checks. No new security issue was established, but not every affected caller was fully assessed.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — Within the inspected paths, controllable audio samples affect existing plugin buffers, while paste parameters and clipboard data affect the current editing session. No expanded authority or new cross-service path was identified in those flows; this conclusion does not cover every caller in the truncated graph.

Trust Boundaries and Controls

  • observed — Auto Pan retains finite-sample sanitization and bounded buffer access. Mixer post-processing containment remains in place to zero nonfinite plugin output and mark the slot failed. Independent stereo processing does not bypass these existing controls.
Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 26.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 7 files. (3 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main changes: preserving the Auto Pan stereo image and fixing paste and Strip Silence behavior. It is specific and concise enough for the changeset.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 26.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 7 files. (3 skipped: 3 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 Clippy (1.99.0)

Clippy execution failed

Usage-based review receipt

  • Mode: Continue automatically
  • Reviewed files: 10
  • Waived: $2.50 (charged $0.00)
  • View usage details

Note

This review exceeded your plan’s limits and used usage-based reviews—free during trial, billed after paid activation unless disabled. Manage usage-based reviews.

Comment @coderabbitai help to get the list of available commands.

@aiongg
aiongg merged commit cf96cb8 into storytold:main Oct 25, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant