perf: target extension command refresh#586
Closed
JustYannicc wants to merge 115 commits into
Closed
Conversation
…perf-wave2-integration-stack-20260704 # Conflicts: # src/renderer/src/raycast-api/hooks/use-cached-promise.ts
…perf-wave2-integration-stack-20260704 # Conflicts: # src/renderer/src/raycast-api/list-runtime-renderers.tsx # src/renderer/src/raycast-api/list-runtime.tsx
…perf-wave2-integration-stack-20260704 # Conflicts: # src/renderer/src/CameraExtension.tsx
…perf-wave2-integration-stack-20260704
…perf-wave2-integration-stack-20260704
…perf-wave2-integration-stack-20260704
…perf-wave2-integration-stack-20260704
…perf-wave2-integration-stack-20260704 # Conflicts: # src/renderer/src/raycast-api/list-runtime.tsx
…perf-wave2-integration-stack-20260704 # Conflicts: # scripts/bench-script-command-discovery.mjs # scripts/benchmark-file-search-delete-batch.mjs # scripts/lib/script-command-runner-harness.mjs # scripts/lib/ts-import.mjs # scripts/test-file-search-delete-batch.mjs # scripts/test-script-command-runner.mjs # src/main/file-search-index.ts # src/main/main.ts
…perf-wave2-integration-stack-20260704 # Conflicts: # scripts/lib/script-command-runner-harness.mjs # scripts/lib/ts-import.mjs # scripts/test-extension-lifecycle-sandbox.mjs # scripts/test-script-command-runner.mjs # src/main/main.ts # src/renderer/src/ExtensionView.tsx
…perf-wave2-integration-stack-20260704 # Conflicts: # .github/workflows/project-checks.yml # scripts/test-root-search-perf.mjs # src/renderer/src/CameraExtension.tsx # src/renderer/src/raycast-api/list-runtime.tsx
…-integration-stack-20260704
…-integration-stack-20260704
…-integration-stack-20260704
…e3-integration-stack-20260704
…erf-wave3-integration-stack-20260704 # Conflicts: # package.json # scripts/measure-extension-bundle-cache.mjs # scripts/test-icon-runtime-file-icon-cache.mjs # src/main/extension-runner.ts # src/renderer/src/components/HiddenExtensionRunners.tsx # src/renderer/src/raycast-api/icon-runtime-render.tsx
…/perf-wave3-integration-stack-20260704 # Conflicts: # scripts/test-browser-search-performance.mjs # scripts/test-root-search-perf.mjs
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
refreshCommandsForExtensionChange()to rebuild the command cache from an existing cached/stale base while refreshing only installed extension command entries.get-commandsfreshness.Why
Extension install/uninstall previously invalidated the command cache and synchronously called the full
refreshCommandsNow()path. That rediscovered apps, System Settings, quick links, scripts, extension commands, app/settings icons, metadata overlays, and saved the full disk cache even though the extension registry already invalidates runner caches narrowly and only extension command presence changed.Compatibility impact
extensions-updatedthencommands-updated; uninstall still sendsextension-uninstalled,extensions-updated, thencommands-updated.get-commandssees fresh extension command presence/absence before broadcasts are sent.refreshCommandsNow()behavior.How tested
node --test scripts/test-extension-command-refresh-cache.mjsnode --test scripts/test-command-metadata-cache.mjs scripts/test-command-ipc-payload-cache.mjsnode --test scripts/test-extension-command-refresh-cache.mjs scripts/test-command-metadata-cache.mjs scripts/test-command-ipc-payload-cache.mjsnpm run build:main(local npm wrapper delegates to pnpm)src/main/commands.tsandsrc/main/main.ts: no diagnostics found.Performance evidence
Focused benchmark from
scripts/test-extension-command-refresh-cache.mjswith a warm command cache and 2,006 cached base commands:Stack validation
206eab8280a2eb91a57e4e74ea6df99e45a55cb4, contained bycodex/perf-wave3-integration-stack-20260704.codex/targeted-extension-command-refresh.docs/extension-install-flow.mdbefore changing install/backend-adjacent extension refresh code.Replaces
Replaces the install/uninstall IPC post-success full command rediscovery with a targeted extension command refresh when an in-memory or stale command cache is available.