feat(studio): add grouped preset module multiselect

Problem: Preset modules could only be added one at a time, with two different actions both labeled Add module.

Root cause: A native single-choice picker shared its label with manual blank-ID insertion, and catalog choices did not carry source provenance.

Fix: Add a shared searchable grouped checkbox picker, authoritative catalog provenance, batch selection and parameter-safe draft updates. Keep manual IDs under an explicit advanced entry and document selection semantics.

Verification: 219 frontend tests, typecheck, production build, census, owning Go packages including boot and builtin, focused Desktop preset/composition tests, vet, lint, make check and documentation checks passed. Browser checks covered themes, responsive layouts and save/reopen with MockHub.
This commit is contained in:
SivanCola committed 2026-10-21 12:15:04 +08:00
1 parent 596c3ada3c
commit c2a485ebc5
17 files changed
+442 -58

No files matched your search

+14
View File
@@ -21,6 +21,20 @@ to bind a version.
## Choosing and editing
For **Selected modules only**, **Add modules** opens a checkbox menu. Select several
items without reopening it, search by ID or description, or select a whole source
group. Built-in and custom modules are grouped using catalog provenance; older
hosts without that metadata show an unclassified group.
**Select all** affects the current search results only. It preserves selections
outside the results and never selects future additions. **Clear** removes every
selected ID. **Done**, Escape and outside clicks close the menu while keeping the
draft; **Save preset** persists it. Inheritance remains a separate mode.
Existing module parameters survive bulk selection changes. Unlisted IDs remain
editable, and **Advanced: enter a module ID** retains manual entry without implying
that an ID installs a resource or grants authorization.
The mode picker is hidden by default. Enable **Show mode picker** on the Persona
management page to add it above the chat input in every pane. Settings search
also leads directly to this switch. Hiding it leaves the conversation's mode intact.