From 3014cbdd6e3aa44ed080e46dbc9583d510e9f75f Mon Sep 17 00:00:00 2001 From: Rodrigo Gomes da Silva Date: Fri, 3 Apr 2026 11:47:33 -0300 Subject: [PATCH 1/2] perf: swap ONNX Runtime JSEP WASM for CPU-only variant Replace the 21MB JSEP WASM (includes unused WebGPU/WebNN support) with the 11MB CPU-only variant via a Vite plugin. The transcription worker uses device: 'wasm' exclusively so GPU backends are never initialized. Build output drops from 25MB to 15MB. --- vite.config.ts | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 34f61fe..c176c91 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,18 +1,43 @@ -import { readFileSync } from 'node:fs'; +import { copyFileSync, readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; import { paraglideVitePlugin } from '@inlang/paraglide-js'; import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; -import { defineConfig } from 'vite'; +import { defineConfig, type Plugin } from 'vite'; // Read version from package.json at build time const pkg = JSON.parse(readFileSync('./package.json', 'utf-8')); +// Replace the ONNX Runtime JSEP WASM (21MB, includes unused WebGPU/WebNN) +// with the CPU-only variant (11MB). Safe because the transcription worker +// uses device: 'wasm' exclusively — GPU backends are never initialized. +function ortWasmOptimize(): Plugin { + const src = resolve( + 'node_modules/onnxruntime-web/dist/ort-wasm-simd-threaded.wasm', + ); + const dests = [ + resolve( + 'node_modules/@huggingface/transformers/dist/ort-wasm-simd-threaded.jsep.wasm', + ), + resolve( + 'node_modules/onnxruntime-web/dist/ort-wasm-simd-threaded.jsep.wasm', + ), + ]; + return { + name: 'ort-wasm-optimize', + buildStart() { + for (const dest of dests) copyFileSync(src, dest); + }, + }; +} + export default defineConfig({ // Inject version at build time define: { __APP_VERSION__: JSON.stringify(pkg.version), }, plugins: [ + ortWasmOptimize(), paraglideVitePlugin({ project: './project.inlang', outdir: './src/lib/paraglide', From 9272799f2dd1535f7ce881d5cb0011e37288160e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 3 Apr 2026 14:49:45 +0000 Subject: [PATCH 2/2] chore(release): 1.30.3 [skip ci] ## [1.30.3](https://github.com/rodrigogs/whats-reader/compare/v1.30.2...v1.30.3) (2026-04-03) ### Performance Improvements * swap ONNX Runtime JSEP WASM for CPU-only variant ([3014cbd](https://github.com/rodrigogs/whats-reader/commit/3014cbdd6e3aa44ed080e46dbc9583d510e9f75f)) --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb45ef7..ed54d13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [1.30.3](https://github.com/rodrigogs/whats-reader/compare/v1.30.2...v1.30.3) (2026-04-03) + + +### Performance Improvements + +* swap ONNX Runtime JSEP WASM for CPU-only variant ([3014cbd](https://github.com/rodrigogs/whats-reader/commit/3014cbdd6e3aa44ed080e46dbc9583d510e9f75f)) + ## [1.30.2](https://github.com/rodrigogs/whats-reader/compare/v1.30.1...v1.30.2) (2026-04-03) diff --git a/package-lock.json b/package-lock.json index da4c5ff..ad56a91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "whats-reader", - "version": "1.30.2", + "version": "1.30.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "whats-reader", - "version": "1.30.2", + "version": "1.30.3", "license": "AGPL-3.0", "dependencies": { "@floating-ui/dom": "^1.7.6", diff --git a/package.json b/package.json index 573f398..4fce4e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "whats-reader", "productName": "WhatsApp Backup Reader", - "version": "1.30.2", + "version": "1.30.3", "description": "A desktop app to read and visualize WhatsApp chat exports", "license": "AGPL-3.0", "author": {