Skip to content

build(deps): bump wavesurfer.js from 7.12.12 to 8.0.1 - #21

Merged
Jerry-CodeHub merged 1 commit into
masterfrom
dependabot/npm_and_yarn/wavesurfer.js-8.0.1
Oct 7, 2026
Merged

Jerry-CodeHub merged 1 commit into
masterfrom
dependabot/npm_and_yarn/wavesurfer.js-8.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Bumps wavesurfer.js from 7.12.12 to 8.0.1.

Release notes

Sourced from wavesurfer.js's releases.

8.0.1

  • 8.0.1
  • feat(Spectrogram): Praat-style dynamic compression (dynamicCompression option) (#4370) by kaan@imerit.net
  • fix(Record): revert default mediaRecorderTimeslice to undefined (#4369)

npm

8.0.0

wavesurfer.js v8 rebuilds the core and plugins on a single ownership model for teardown, so each listener, timer, observer and child object is released by the owner that created it. This removes a large set of memory leaks and events that fired twice, and it fixes dozens of long-standing bugs in playback, rendering, regions, recording and the spectrogram.

Most apps upgrade without code changes. The public WaveSurfer API, events and plugin constructors stay the same. The breaking changes below affect edge cases, TypeScript subclasses and deep imports from dist/.

npm install wavesurfer.js@8

⚠️ Breaking changes (migrating from v7)

Runtime behavior

  • destroy() is final. You can't reuse a destroyed instance. load()/loadBlob() reject and emit error, registerPlugin() throws, and the other mutating methods (play, setTime, setVolume, setOptions, …) do nothing. Calling destroy() twice is safe, and it now also frees the decoded AudioBuffer. To migrate: create a new instance instead of calling load() on a destroyed one.
  • A superseded load now rejects. When a newer load()/loadBlob() replaces an earlier one, the earlier promise rejects with an AbortError instead of quietly resolving. No error event fires for it, and un-awaited calls don't produce unhandled-rejection warnings. To migrate: if you await a load that might be replaced, catch AbortError.
  • getMediaElement() returns HTMLMediaElement | null. It returns null with backend: 'WebAudio'. v7 returned the internal WebAudioPlayer, typed incorrectly as an audio element. If you need the WebAudio player (for example, for getGainNode()), create a WebAudioPlayer yourself and pass it in the media option (see examples/phase-vocoder.js). wavesurfer instanceof Player is also no longer true. The playback methods themselves are unchanged.
  • The error event payload is always an Error. A media element's MediaError is wrapped, and its code is kept.
  • getRenderer() is no longer an event emitter. It has no .on()/.emit(). Use the public WaveSurfer events, or the renderer's signals (clickSignal, dblclickSignal, dragEventsSignal, getVisibleRange(), getScrollSignals()). getWrapper() is still the supported way to reach the wrapper element.
  • Spectrogram noverlap now does what the docs say. The only clamp is fftSamples - 1. The hidden 50% cap and the 64-sample minimum hop are gone. A large noverlap now gives a finer hop, which means more columns and more computation.

TypeScript and packaging

  • WaveSurfer no longer has protected subscriptions, mediaSubscriptions or abortController. Subclasses should use this.scope.add(disposer) instead.
  • The public region.subscriptions field on regions is removed.
  • The package.json#exports wildcard "./dist/*" is now "./dist/*.js". Deep imports need the .js extension (wavesurfer.js/dist/webaudio.js, not …/dist/webaudio).
  • Internal modules are no longer built into dist/: draggable.js, timer.js and reactive/*.
  • dist/fft.js now exports only FFT. The spectrogram math and colormap helpers moved to dist/spectrogram-render-utils.js.
  • dist/types.d.ts is no longer built. Nothing referenced it.

🗑️ Deprecated

  • WindowedSpectrogramPlugin / spectrogram-windowed.js → use SpectrogramPlugin.create({ rendering: 'windowed' }). The old entry point still works.
  • Class-based plugins that extend BasePlugin → use WaveSurfer.definePlugin(). Existing class plugins keep working throughout v8, and removal is planned for v9. BasePlugin.destroy() now disposes this.scope.

✨ New

  • WaveSurfer.definePlugin(name, (ctx, options) => api) is a functional plugin API. You register resources on ctx.scope, and it tears them all down in one step, so plugins don't need a hand-written destroy(). Hover, Zoom, Timeline, Minimap, Envelope and Regions now use it, and their public API is unchanged. yarn make-plugin generates a definePlugin skeleton.
    const MyPlugin = WaveSurfer.definePlugin('MyPlugin', (ctx, options) => {
      ctx.scope.add(ctx.wavesurfer.on('timeupdate', (t) => ctx.emit('tick', t)))
      return { hello: () => 'world' }
    })

... (truncated)

Commits
  • 983c5d3 8.0.1
  • d5401e7 feat(Spectrogram): Praat-style dynamic compression (dynamicCompression option...
  • b4132e5 fix(Record): revert default mediaRecorderTimeslice to undefined (#4369)
  • a1cdffd chore(release): 8.0.0 (#4367)
  • 876e75d Fix stopAt() position clamping when pausing or seeking (#4366)
  • 9d71edb ci(release): run the npm publish workflow on the v7 branch too
  • b4f2361 test(e2e): assert play/pause/finish fire once per transition in a real browse...
  • 8ca8693 8.0.0-beta.5
  • c35537e feat(regions): auto-scroll while dragging, resizing, or creating a region (v8...
  • 73851c3 fix(regions, record): region event race, mobile double-tap, device-loss handl...
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Sep 30, 2026
@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 692372a0-6389-484a-a683-26b0cf791a02

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Deploying umi-react-admin with  Cloudflare Pages  Cloudflare Pages

Latest commit: 938a618
Status: ✅  Deploy successful!
Preview URL: https://879fb427.umi-react-admin.pages.dev
Branch Preview URL: https://dependabot-npm-and-yarn-wave.umi-react-admin.pages.dev

View logs

@Jerry-CodeHub
Jerry-CodeHub force-pushed the dependabot/npm_and_yarn/wavesurfer.js-8.0.1 branch from 46526ac to 938a618 Compare October 7, 2026 04:44
@Jerry-CodeHub
Jerry-CodeHub merged commit a0a0587 into master Oct 7, 2026
7 checks passed
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/wavesurfer.js-8.0.1 branch October 7, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant