EnxDev opened a new pull request, #40450:
URL: https://github.com/apache/superset/pull/40450

   ### SUMMARY
   
   Adds three new capabilities to the Extensions management page:
   
   1. **Import extension** — a download icon button in the SubMenu opens a file 
picker restricted to `.supx` files. On selection, the file is uploaded via 
`POST /api/v1/extensions/` (new endpoint), validated (zip integrity + safe-zip 
check), and persisted to `EXTENSIONS_PATH`. The list refreshes automatically.
   
   2. **Delete extension** — a trash icon in the Actions column (with 
confirmation dialog) calls `DELETE /api/v1/extensions/<publisher>/<name>` (new 
endpoint). Local extensions configured via `LOCAL_EXTENSIONS` are rejected with 
a clear error. Uploaded `.supx` files are removed from `EXTENSIONS_PATH`.
   
   3. **Set default chatbot** — a star icon in the Actions column calls `PUT 
/api/v1/extensions/settings` with the selected extension's ID as 
`active_chatbot_id`. The filled star indicates the current active chatbot. 
Clicking the filled star clears the selection. The change is propagated 
immediately via `notifyExtensionSettingsChanged()` so `ChatbotMount` updates 
without a page reload.
   
   Also includes:
   - Settings pub/sub (`notifyExtensionSettingsChanged` / 
`subscribeToExtensionSettings`) in `src/core/extensions` so components can 
react to admin setting changes without Redux or a page reload.
   - Fix for `scripts/oxlint.sh`: `[ -n "$output" ] && echo "$output"` would 
exit 1 under `set -e` when output is empty (no lint errors found). Replaced 
with `if/fi`.
   
   ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
   
   **Before:** Extensions list shows only extension names with no actions.
   
   **After:** Extensions list has a Publisher column, an import button in the 
header, and per-row star (default chatbot) and trash (delete) action buttons.
   
   ### TESTING INSTRUCTIONS
   
   1. Set `EXTENSIONS_PATH` in your `superset_config.py`.
   2. Navigate to Settings → Extensions.
   3. **Import**: Click the download icon → select a `.supx` file → the 
extension appears in the list.
   4. **Delete**: Click the trash icon on an uploaded extension → confirm → 
extension is removed from the list.
   5. **Default chatbot**: Click the star icon on an extension with a chatbot → 
star fills → chatbot mount updates without a page reload. Click again → star 
clears → chatbot is deselected.
   6. Verify that clicking the star/delete on a `LOCAL_EXTENSIONS` entry 
returns an appropriate error for delete (local extensions cannot be deleted 
through the UI).
   
   ### ADDITIONAL INFORMATION
   
   - [ ] Has associated issue:
   - [ ] Required feature flags:
   - [x] Changes UI
   - [ ] Includes DB Migration (follow approval process in 
[SIP-59](https://github.com/apache/superset/issues/13351))
   - [x] Introduces new feature or API
   - [ ] Removes existing feature or API


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to