Why
Quartz can install and restore Chromium-format WebExtensions, but the current UI only shows an extension status alert listing installed names. Users need a way to disable or remove extensions without manually editing Application Support or defaults.
Where to start
Sources/Quartz/QuartzApp.swift
Sources/Quartz/QuartzWebExtensionSupport.swift
- The existing
Extensions > Extension Status menu item
Suggested approach
Turn the status alert into a small native extension manager. A first version can be simple: show installed extensions in a list, allow disabling/enabling, and allow uninstalling. Uninstall should remove the saved path from UserDefaults, unload the WKWebExtensionContext if supported, and remove copied extension files from Quartz's Application Support directory when Quartz owns them.
Be careful not to delete a user's original source folder if they installed an unpacked extension from outside Quartz's copied storage.
Acceptance criteria
- Users can see installed extension names in a native manager UI.
- Users can disable/enable an installed extension.
- Users can uninstall an installed extension.
- Uninstalled extensions do not reload after quitting and reopening Quartz.
- The Extensions toolbar/menu state updates after changes.
swift build succeeds.
Testing
- Install a local unpacked extension or
.zip extension.
- Restart Quartz and confirm it reloads.
- Disable it and confirm its action is unavailable.
- Uninstall it, restart Quartz, and confirm it is gone.
Why
Quartz can install and restore Chromium-format WebExtensions, but the current UI only shows an extension status alert listing installed names. Users need a way to disable or remove extensions without manually editing Application Support or defaults.
Where to start
Sources/Quartz/QuartzApp.swiftSources/Quartz/QuartzWebExtensionSupport.swiftExtensions > Extension Statusmenu itemSuggested approach
Turn the status alert into a small native extension manager. A first version can be simple: show installed extensions in a list, allow disabling/enabling, and allow uninstalling. Uninstall should remove the saved path from
UserDefaults, unload theWKWebExtensionContextif supported, and remove copied extension files from Quartz's Application Support directory when Quartz owns them.Be careful not to delete a user's original source folder if they installed an unpacked extension from outside Quartz's copied storage.
Acceptance criteria
swift buildsucceeds.Testing
.zipextension.