Skip to content

build(deps-dev): bump wavesurfer.js from 7.12.11 to 8.0.1 - #84

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/wavesurfer.js-8.0.1
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/wavesurfer.js-8.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 28, 2026

Copy link
Copy Markdown
Contributor

Bumps wavesurfer.js from 7.12.11 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 compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [wavesurfer.js](https://github.com/katspaugh/wavesurfer.js) from 7.12.11 to 8.0.1.
- [Release notes](https://github.com/katspaugh/wavesurfer.js/releases)
- [Changelog](https://github.com/katspaugh/wavesurfer.js/blob/main/CHANGELOG.md)
- [Commits](katspaugh/wavesurfer.js@7.12.11...8.0.1)

---
updated-dependencies:
- dependency-name: wavesurfer.js
  dependency-version: 8.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Oct 12, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #99.

@dependabot dependabot Bot closed this Oct 12, 2026
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/wavesurfer.js-8.0.1 branch October 12, 2026 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants