From 8b6d790d6f837da7ecc6872faaa987750b0bb0ce Mon Sep 17 00:00:00 2001 From: Wojtek Naruniec Date: Thu, 23 Jul 2026 16:45:51 +0200 Subject: [PATCH 1/2] Remove unused ExecuteIcon component --- apps/studio/src/components/icons/execute.tsx | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 apps/studio/src/components/icons/execute.tsx diff --git a/apps/studio/src/components/icons/execute.tsx b/apps/studio/src/components/icons/execute.tsx deleted file mode 100644 index dbf783c742..0000000000 --- a/apps/studio/src/components/icons/execute.tsx +++ /dev/null @@ -1,8 +0,0 @@ -export const ExecuteIcon = () => ( - - - -); From 9cfb1cb2e5c8ee35f1411de9ec1175fec535fdfb Mon Sep 17 00:00:00 2001 From: Wojtek Naruniec Date: Thu, 23 Jul 2026 17:03:08 +0200 Subject: [PATCH 2/2] Remove unused useAiIcon hook and Rive dependency Deletes the dead useAiIcon hook, its .riv asset and test mock, the @rive-app/react-canvas dependency, and the associated Rive/WASM bundling in the Electron Vite config. The wasm() plugin and **/*.wasm handling are kept for PHP-WASM/Playground. --- apps/studio/assets/ai-icon.riv | Bin 54186 -> 0 bytes apps/studio/electron.vite.config.ts | 12 +--- apps/studio/package.json | 1 - .../src/custom-package-definitions.d.ts | 10 --- apps/studio/src/hooks/use-ai-icon.ts | 65 ------------------ apps/studio/vitest.setup.ts | 9 --- package-lock.json | 32 --------- 7 files changed, 2 insertions(+), 127 deletions(-) delete mode 100644 apps/studio/assets/ai-icon.riv delete mode 100644 apps/studio/src/hooks/use-ai-icon.ts diff --git a/apps/studio/assets/ai-icon.riv b/apps/studio/assets/ai-icon.riv deleted file mode 100644 index fbea1ed558fe639e5d03e868cf591545b45cfbfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54186 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 F{vWegN7DcR diff --git a/apps/studio/electron.vite.config.ts b/apps/studio/electron.vite.config.ts index 0b9d6560e8..e922c2ea5f 100644 --- a/apps/studio/electron.vite.config.ts +++ b/apps/studio/electron.vite.config.ts @@ -82,14 +82,6 @@ export default defineConfig( { wasm(), viteStaticCopy( { targets: [ - { - src: normalizePath( require.resolve( '@rive-app/canvas/rive.wasm' ) ), - dest: 'assets', - }, - { - src: normalizePath( require.resolve( '@rive-app/canvas/rive_fallback.wasm' ) ), - dest: 'assets', - }, { src: normalizePath( resolve( __dirname, 'src/about-menu/about-menu.html' ) ), dest: '.', @@ -119,9 +111,9 @@ export default defineConfig( { devSourcemap: true, postcss: resolve( __dirname, 'postcss.config.js' ), }, - assetsInclude: [ '**/*.riv', '**/*.wasm' ], + assetsInclude: [ '**/*.wasm' ], optimizeDeps: { - include: [ '@wordpress/i18n', '@rive-app/react-canvas', '@rive-app/canvas' ], + include: [ '@wordpress/i18n' ], rolldownOptions: { output: { sourcemap: false, diff --git a/apps/studio/package.json b/apps/studio/package.json index b3d23d9b3c..b6c4d29024 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -69,7 +69,6 @@ "@electron-forge/plugin-auto-unpack-natives": "^7.11.2", "@inquirer/prompts": "^8.5.2", "@reduxjs/toolkit": "^2.12.0", - "@rive-app/react-canvas": "^4.18.0", "@sentry/react": "^10.56.0", "@sentry/vite-plugin": "^5.3.0", "@tanstack/react-query": "^5.75.5", diff --git a/apps/studio/src/custom-package-definitions.d.ts b/apps/studio/src/custom-package-definitions.d.ts index 661e8a9fe2..394b2575c7 100644 --- a/apps/studio/src/custom-package-definitions.d.ts +++ b/apps/studio/src/custom-package-definitions.d.ts @@ -30,16 +30,6 @@ declare module '*.svg' { export default dataUri; } -declare module '*.riv' { - const dataUri: string; - export default dataUri; -} - -declare module '*.riv?url' { - const url: string; - export default url; -} - declare module '*.css'; declare module '*.css?url' { diff --git a/apps/studio/src/hooks/use-ai-icon.ts b/apps/studio/src/hooks/use-ai-icon.ts deleted file mode 100644 index 50d8b2b886..0000000000 --- a/apps/studio/src/hooks/use-ai-icon.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { RuntimeLoader } from '@rive-app/canvas'; -import { useRive, useStateMachineInput } from '@rive-app/react-canvas'; -import { useEffect } from '@wordpress/element'; -import aiImage from '../../assets/ai-icon.riv'; - -interface AiIconStates { - inactive?: boolean; - thinking?: boolean; - typing?: boolean; -} - -const useAiIcon = ( states: AiIconStates = {} ) => { - const stateMachineName = 'State Machine A'; - - // Configure Rive to use local WASM files - useEffect( () => { - RuntimeLoader.setWasmUrl( './assets/rive.wasm' ); - }, [] ); - - const { rive, RiveComponent } = useRive( { - src: aiImage, - stateMachines: stateMachineName, - autoplay: false, - } ); - - const inactiveInput = useStateMachineInput( rive, stateMachineName, 'inactive', false ); - const thinkingInput = useStateMachineInput( rive, stateMachineName, 'thinking', false ); - const typingInput = useStateMachineInput( rive, stateMachineName, 'typing', false ); - - useEffect( () => { - rive?.play( stateMachineName ); - - return () => { - rive?.cleanup(); - }; - }, [ rive ] ); - - useEffect( () => { - if ( inactiveInput ) { - // eslint-disable-next-line react-hooks/immutability - inactiveInput.value = states.inactive ?? false; - } - }, [ inactiveInput, states.inactive ] ); - - useEffect( () => { - if ( thinkingInput ) { - // eslint-disable-next-line react-hooks/immutability - thinkingInput.value = states.thinking ?? false; - } - }, [ thinkingInput, states.thinking ] ); - - useEffect( () => { - if ( typingInput ) { - // eslint-disable-next-line react-hooks/immutability - typingInput.value = states.typing ?? false; - } - }, [ typingInput, states.typing ] ); - - return { - rive, - RiveComponent, - }; -}; - -export default useAiIcon; diff --git a/apps/studio/vitest.setup.ts b/apps/studio/vitest.setup.ts index 74fd54aaa4..d9eeb3938e 100644 --- a/apps/studio/vitest.setup.ts +++ b/apps/studio/vitest.setup.ts @@ -114,15 +114,6 @@ vi.mock( 'src/hooks/use-offline', () => ( { useOffline: vi.fn().mockReturnValue( false ), } ) ); -vi.mock( 'src/hooks/use-ai-icon', () => ( { - __esModule: true, - default: () => ( { - rive: null, - RiveComponent: () => null, - setInputState: vi.fn(), - } ), -} ) ); - global.ResizeObserver = require( 'resize-observer-polyfill' ); vi.mock( '@sentry/electron/main', () => ( { diff --git a/package-lock.json b/package-lock.json index 0bdb1c5bea..3a6542112f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -553,7 +553,6 @@ "@electron-forge/plugin-auto-unpack-natives": "^7.11.2", "@inquirer/prompts": "^8.5.2", "@reduxjs/toolkit": "^2.12.0", - "@rive-app/react-canvas": "^4.18.0", "@sentry/react": "^10.56.0", "@sentry/vite-plugin": "^5.3.0", "@tanstack/react-query": "^5.75.5", @@ -4772,9 +4771,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -4791,9 +4787,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -4810,9 +4803,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -4829,9 +4819,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -4848,9 +4835,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -11166,22 +11150,6 @@ } } }, - "node_modules/@rive-app/canvas": { - "version": "2.37.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@rive-app/react-canvas": { - "version": "4.28.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@rive-app/canvas": "2.37.8" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0" - } - }, "node_modules/@roberts_lando/vfs": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@roberts_lando/vfs/-/vfs-0.3.3.tgz",