Skip to content

B4 (part 2): React Plugin Manager + Settings; delete legacy ui/#8

Open
archdex-art wants to merge 3 commits into
mainfrom
feat/b4-react-extension-manager
Open

B4 (part 2): React Plugin Manager + Settings; delete legacy ui/#8
archdex-art wants to merge 3 commits into
mainfrom
feat/b4-react-extension-manager

Conversation

@archdex-art

Copy link
Copy Markdown
Owner

Completes B4 — one front-end, one build path, one source of truth.

What

  • Extension Manager (React): list installed extensions, install from a folder path, enable (with a capability-permission consent dialog), uninstall, and the new B1 trust-consent for unsandboxed script extensions (explicit "runs with full privileges" confirm before set_extension_trusted). Opened via a "Manage Extensions" palette command.
  • Settings (React): global shortcut, hide-on-blur, theme — via get_settings/update_settings. Opened via a "Settings" command.
  • Deleted ui/ (the legacy vanilla-JS front-end, ~3.4k lines). It was already dead code: frontendDist points at react-command-palette/dist and nothing in Rust/Tauri config referenced ui/.

Verification

  • tsc --noEmit + vite build clean (validated by the new front-end CI job).
  • ⚠️ Needs a runtime spot-check (I can't run the GUI): open the palette, type "manage"/"settings" → the new views; verify the manager lists/enables/trusts/uninstalls and the consent + trust dialogs appear; verify settings save. The install flow uses a path text input (native folder picker is a follow-up).

Scope notes

  • Install via path input (the dialog plugin is registered Rust-side; a native picker is a small follow-up).
  • ui/'s preview.js was not ported (it wasn't part of the shipped React app).

🤖 Generated with Claude Code

archdex-art and others added 3 commits June 10, 2026 14:05
Port the Plugin Manager from legacy ui/ into React: list installed extensions,
install from a folder path, enable (with a capability-permission consent
dialog), and uninstall — plus the new B1 trust-consent for unsandboxed script
extensions (a distinct, explicit "this runs with full privileges" confirm before
`set_extension_trusted`). Reachable via a "Manage Extensions" palette command.

Adds `ExtensionInfo`/`PermissionInfo` types + browser-dev mocks. tsc + vite
build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Port the Settings panel (global shortcut, hide-on-blur, theme) from ui/ into
React, reachable via a "Settings" palette command, persisted through
get_settings/update_settings.

Delete the legacy vanilla-JS `ui/` front-end entirely. It was already dead code
— `frontendDist` points at `react-command-palette/dist`, and nothing in Rust or
the Tauri config referenced `ui/`. With the Plugin Manager and Settings now in
React, there is one front-end, one build path, one source of truth (B4 complete).

tsc + vite build clean (395 modules).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`timeout_kills_runaway_script` (renamed `nonzero_exit_is_classified_as_failure`)
spawns a subprocess and asserts the non-zero-exit classification. Under heavy
parallel test load — amplified by B1/B2's concurrent extension fan-out — the
spawn can transiently fail (EAGAIN) and surface a different error variant.
Retry past transient Spawn/Timeout outcomes and assert the steady-state
classification. Stable 25/25 locally; was the only red job on this branch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant