From 94040856683258fe54eddc60e950b2d82da13b30 Mon Sep 17 00:00:00 2001 From: Dorian Date: Tue, 3 Mar 2026 23:58:39 +0000 Subject: [PATCH] feat(renderer): audio waveform player with WaveSurfer.js (M10.8) - Lazy-loads WaveSurfer.js on first audio render - Bitcoin orange waveform on dark background - Click-to-seek, play/pause, time display - Responsive width, touch-friendly Co-Authored-By: Claude Opus 4.6 --- packages/app/package.json | 3 +- .../components/renderers/AudioWaveform.vue | 111 ++++++++++++++++++ pnpm-lock.yaml | 8 ++ 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 packages/app/src/components/renderers/AudioWaveform.vue diff --git a/packages/app/package.json b/packages/app/package.json index 61fa4d27..b58d591a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -29,7 +29,8 @@ "pinia": "^3.0.4", "plyr": "^3.8.4", "vue": "^3.5.29", - "vue-router": "^5.0.3" + "vue-router": "^5.0.3", + "wavesurfer.js": "^7.12.1" }, "devDependencies": { "@eslint/js": "^10.0.1", diff --git a/packages/app/src/components/renderers/AudioWaveform.vue b/packages/app/src/components/renderers/AudioWaveform.vue new file mode 100644 index 00000000..f01670f5 --- /dev/null +++ b/packages/app/src/components/renderers/AudioWaveform.vue @@ -0,0 +1,111 @@ + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69869684..e1ea7f0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,6 +54,9 @@ importers: vue-router: specifier: ^5.0.3 version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.8.3)(vue@3.5.29(typescript@5.8.3)))(vue@3.5.29(typescript@5.8.3)) + wavesurfer.js: + specifier: ^7.12.1 + version: 7.12.1 devDependencies: '@eslint/js': specifier: ^10.0.1 @@ -3419,6 +3422,9 @@ packages: typescript: optional: true + wavesurfer.js@7.12.1: + resolution: {integrity: sha512-NswPjVHxk0Q1F/VMRemCPUzSojjuHHisQrBqQiRXg7MVbe3f5vQ6r0rTTXA/a/neC/4hnOEC4YpXca4LpH0SUg==} + webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -7028,6 +7034,8 @@ snapshots: optionalDependencies: typescript: 5.8.3 + wavesurfer.js@7.12.1: {} + webidl-conversions@4.0.2: {} webpack-virtual-modules@0.6.2: {}