Skip to content

feat(plugins): organize settings with guides and focused controls - #1176

Merged
tellaho merged 133 commits into
mainfrom
tho/plugin-settings-existing-fields
Oct 19, 2026
Merged

tellaho merged 133 commits into
mainfrom
tho/plugin-settings-existing-fields

Conversation

@tellaho

@tellaho tellaho commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Users can browse plugins by purpose, understand what each plugin does, and manage it from a focused details pane.

Problem: A flat toggle list gives little guidance about plugin purpose, provenance or setup, while import controls compete with the settings list.

Solution: Group plugins into named categories, prioritize Essentials within each category, and pair explicit Enable / Disable actions with a details pane containing bundled guides and metadata. A unified Add dialog handles folder/Git acquisition through the existing reviewed-preview boundary, including bounded folder drops. Successful installation enables the plugin by default (with a footer opt-out) and closes the dialog. Updates start from the installed plugin’s row; deletion requires confirmation. Source selection, preview and errors replace one another; Back returns to the preceding view with retained fields or preview selection. Computer-access summaries explain requested actions, with exact commands in an expandable disclosure and a prominent Install/Update action.

Main supplies the discovery schema (#1145) and signed README/icon packaging (#1151). This PR builds the grouped Settings UI, bundled guides and Add/drop flow on those contracts; the review repairs add no FOUNDATION contract changes.

File changes

crates/plugin-manager/src/imports.rs
Validate dropped folder snapshots through the existing package and signature reader, with traversal, duplicate-path and size limits.

src-tauri/src/lib.rs
Pass dropped package contents into native import preparation without trusting client-supplied filesystem paths.

src/app/PluginImport.module.css
Lay out the folder drop target and repository form in responsive columns.

src/app/PluginImport.test.tsx
Cover dialog dismissal, pending work, preview cleanup, folder drops and import actions.

src/app/PluginImport.tsx
Move folder and Git acquisition into one Add dialog, retaining preview/install/discard boundaries and restoring trigger focus.

src/app/PluginReadme.module.css
Style readable Markdown and the collapsed gradient with a compact overlaid disclosure action.

src/app/PluginReadme.test.tsx
Cover short/long content, resize, fade state, keyboard reveal and plugin-switch reset.

src/app/PluginReadme.tsx
Render bundled guides with safe links and heading hierarchy; clamp long content before paint and animate disclosure with reduced-motion support.

src/app/Settings.module.css
Provide full-width row states, inset dividers, independent scrolling and a responsive detail pane, including full-width copy at enlarged text sizes.

src/app/Settings.test.tsx
Cover grouping/order, provenance, row and pane actions, detail navigation and enabled-state handling.

src/app/Settings.tsx
Group plugins by category and essentials, show explicit row actions, and open details with provenance, guides, metadata and management actions.

src/app/plugin-folder-drop.test.ts
Cover directory batching, UTF-8, size/depth limits and supported package files.

src/app/plugin-folder-drop.ts
Read bounded package text from one dropped directory, skip build/dependency folders and reject invalid UTF-8.

src/bundled/agent-activity/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/agent-activity/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/agents/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/agents/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/bestie/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/builderlab/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/builderlab/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/channels/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/channels/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/claude-code/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/claude-code/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/codex/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/codex/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/diffs/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/diffs/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/discovery.test.ts
Check shared discovery vocabulary across bundled plugins.

src/bundled/emoji/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/emoji/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/feedback/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/github/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/github/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/goose/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/goose/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/hosted-communities/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/hosted-communities/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/icons.ts
Load optional bundled artwork by manifest ID, with fallback rendering owned by Settings.

src/bundled/identity-naming/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/identity-naming/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/inbox/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/inbox/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/links/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/links/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/mentions/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/mentions/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/moderation/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/moderation/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/pairing/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/pairing/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/profiles/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/profiles/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/readmes.test.ts
Check that every bundled plugin has a short, consistently structured getting-started guide.

src/bundled/readmes.ts
Load bundled guides by manifest ID for the settings details pane.

src/bundled/reminders/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/reminders/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/terminal/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/terminal/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/todos/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/todos/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/voice-notes/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/voice-notes/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/bundled/workflows/README.md
Add a short user-facing getting-started guide before any existing contributor reference material.

src/bundled/workflows/manifest.json
Add purpose, category and shared discovery tags for this bundled plugin; keep activation defaults with the existing manager.

src/plugins/manager.test.ts
Keep the import fixture aligned with the files acquisition boundary.

src/plugins/storage.ts
Wire dropped package snapshots through the native import command.

src/plugins/types.ts
Expose publisher identity and the dropped-files import boundary.

src/shared/design-system/icons/index.ts
Export the shared Tabler sparkle used for Essentials markers.

tests/browser/settings.spec.mjs
Exercise responsive Settings, complete copy/action reachability at 200% text, button activation and focus in both browser engines.

tests/browser/plugin-settings.mjs
Share stable row-action lookup and idempotent activation through the real Enable / Disable buttons.

tests/browser/agent-activity.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/buzz-links.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/external-links.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/launch-home.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/layout.spec.mjs
Target the Settings detail scroll owner for the existing wheel-scrolling journey.

tests/browser/message-navigation.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/navigation-groups.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/navigation-lifecycle.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/navigation-mute-read.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/navigation-sidebar.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/navigation.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/notifications.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/pairing.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/plugin-defaults.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/plugin-import.spec.mjs
Exercise acquisition through Add, keyboard reachability at 320px/200%, pending dismissal and cleanup, and management through the selected details pane.

tests/browser/plugins.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/shortcuts.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/terminal.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

tests/browser/todos.spec.mjs
Migrate Settings activation callers to the shared button helper while preserving downstream behavior and focus assertions.

Try it

  1. Open Settings → Plugins → Manage plugins. Browse categories, then open a plugin’s guide and metadata.
  2. In the desktop app, choose Add and select a built plugin folder or Git repository. Review access and expand a scope to inspect exact declarations.
  3. Install with Enable plugin on or off. The dialog closes after installation; Update is available from the installed row.
  4. Open an external plugin’s details and choose Delete. Confirm or cancel in the dialog.

Validation

Latest integration at 514531b13 merges main 9bec796c8, preserving #1335's removal of Channel Usage and its obsolete geometry spec, including this branch’s orphaned README and the discovery tag that lost its second plugin. The rejected-install journey now waits for native keyboard scrolling to finish before reversing direction; the original two CI failures raced that completion. The scroll fix passes the full import file (14 Chromium/WebKit cases) plus 20 repeated executions of the affected case (10 per engine). The final discovery-tag cleanup passes its regression test after the hook caught it. No scenarios were added; existing keyboard assertions, animation and timeouts are preserved. All mandatory push hooks pass on 514531b13 with the supported two-worker unit limit. Hosted CI must validate the new head separately.

At 4123cfad2: TypeScript, 59 component/metadata tests and 46 Chromium/WebKit cases pass. Mandatory push checks pass with the repository-supported two-worker limit after an initial run failed under concurrent workload. Native and screen-reader acceptance remain open; hosted CI status is separate. Main integration preserves #1248’s Settings groups, Identity cleanup and Builderlab routing. Detailed validation and review disposition.

Current screenshots — 4123cfad2

Actual built product UI in headless Chromium, dark theme with the app’s selected accent. Bundled manifests are real; external plugin/catalog and native IPC responses use neutral fixture data. These show browser rendering, not native picker or screen-reader acceptance.

Browse and inspect

Category catalog Plugin guide and metadata
Manage plugins grouped catalog GitHub guide beside the catalog

Add and review

Folder or Git source Access review with enable opt-out
Add a plugin from folder or Git Review plugin access before installing

Expanded access details

Computer access explanation Exact program, script and limits
Expanded computer access explanation Readable exact command declaration

Narrow details

Responsive plugin guide
Narrow GitHub details pane

Deletion

Confirmation before deletion
Delete plugin confirmation including rollback history

tellaho and others added 30 commits October 14, 2026 15:46
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Getting started now uses the label role instead of matching body size.

Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Bundled manifests tag plugin families that cut across categories, and
the details pane lists the other plugins sharing a tag as Related
plugins. Only plugins from the same source relate, and every bundled tag
must be shared by at least two plugins.

Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Enable new plugins by default with a footer opt-out and close after installation. Scope updates to installed plugin rows and confirm deletion before removing a plugin.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Carl, Taylor’s AI coding agent: this PR has further behavior changes after the previously approved head 0657a9158. The updated implementation head is 514531b13; earlier approval should not be treated as review of this delta.

Latest integration at 514531b13: merged main 9bec796c8 in 797e06091. Read #1335 and retained its intentional removal of the unreachable Channel Usage plugin and its obsolete geometry spec. Removed this branch’s orphaned Channel Usage README in c99402f2b as well. The mandatory unit hook then caught the orphaned agent-sessions tag; 514531b13 removes it from Agent Activity, retaining the shared Essentials and coding-agents tags. The original invariant test failed before this fix and passes afterward. The other incoming mainline fixes are retained unchanged.

The plugin flake in Chromium CI shards 11/16 and 15/16 failed in the keyboard-scroll assertion, not rejected-install recovery: PageUp could race PageDown's native scrolling. 6522891d3 registers a scroll-completion observer before each key and accepts completion only after the requested boundary is reached, including ignoring earlier focus/layout scroll events. No product code, assertions, timeouts, retries, or animation settings were weakened. No browser scenarios were added; only #1335's obsolete spec was removed with its plugin.

Validation for this follow-up: the scroll-fix tree passes all 14 import browser cases and 20 repeated executions of the affected case (10 Chromium, 10 WebKit). The later README/tag cleanup changes no import behavior; the shared-tag regression test passes after failing before the fix. All mandatory push hooks pass on final head 514531b13: TypeScript/related unit tests with BUZZ_TEST_WORKERS=2 (365.64 s), design checks (10.35 s), Rust Clippy (8.80 s), and destination checks. The preceding hook failed only the now-fixed orphaned-tag invariant; no tests were bypassed. New hosted CI is pending separately. Native/screen-reader acceptance remains open.

Main integration at 4123cfad2: merged main 6ced036f0 after inspecting #1248 and its source/test changes. Preserved community/Buzz/Plugins navigation groups, Manage plugins naming, the separate Identity lifetime and revealed-key clearing test, Builderlab agents routing, and compact-Select clipping assertions. Reapplied the reviewed Add dialog, row actions and focus fixes around that structure. The account menu retains its Plugins label; its destination is Manage plugins.

Integration validation: TypeScript, 59 component/metadata tests and 46 Chromium/WebKit cases pass on the merged code tree. Browser coverage includes navigation/account-menu entry, Settings community-profile recovery, narrow detail focus, import, update, delete and delayed-failure recovery. Conflict resolution adds or removes no browser scenarios; main’s new coverage is retained. All mandatory push hooks pass, including the same related unit suite with the repository-supported BUZZ_TEST_WORKERS=2 limit. The initial default-worker run failed in 25 broad unit tests, many with timeouts during concurrent workload; no assertions, test selection or timeouts were changed. Native and screen-reader acceptance remain open; hosted checks are a separate verification.

Latest review fixes at aa13d99e9: resize and dialog dismissal keep focus in visible details; leaving Plugins clears the old selection; delayed failures return focus to the initiating retry action. HTTPS regions have distinct origin names, Accordion reads input modality at toggle time, and successful installs discard the prepared preview. Six logical commits retain contributor attribution. All seven named review threads have been answered and resolved.

Review-fix validation: 56 component tests and 14 Chromium/WebKit import cases pass on the final code tree (the final four commit IDs changed only to repair trailer formatting). One browser scenario was added per engine because resize/CSS visibility and modal focus restoration require a real layout engine; no scenarios were removed. That resize case fails against the original Settings code in both engines. Existing failure journeys now hold requests until disabled state is observed before rejecting. Push hooks pass: TypeScript/related unit tests, design checks, Rust Clippy and destination checks. Mainline conflicts from that snapshot are resolved by the integration described above. Native/screen-reader acceptance remains open. The prior head had hosted browser/flake failures, including a Solo-chat sharing timeout; these fixes do not establish broad CI green.

  • Scope rows animate and reveal exact declarations underneath. Computer access comes first, with a plain-language preview and readable expanded explanation. The trust reminder sits beneath the modal title.
  • Successful installs close the dialog. New plugins enable by default; the footer switch allows installing them turned off. Enable failures remain reported on the Plugins page without repeating installation.
  • Installed external plugins have a row-level Update action scoped to their plugin ID. Updates preserve their enabled state. Further update-flow redesign is deferred.
  • Delete requires confirmation, defaults focus to Cancel, and keeps a failed deletion retryable.

Earlier validation at 62592937e: the working snapshot passes TypeScript, the full Vitest suite (663 files passed, 2 skipped; 10,149 tests passed, 9 skipped), all 12 import browser cases in Chromium/WebKit, and 12 launch/navigation browser cases at 62592937e. Browser coverage includes install opt-out, pending/rejected installs, row updates that change category with focus restoration, and deletion confirmation/cancel/confirmed removal. No browser cases were added or removed; existing journeys were extended. An initial broad run hit an unrelated browser-host Git test timeout; the final full run passes. Native and screen-reader acceptance remain open.

Princess Donut completed one independent, source-only adversarial review of 0657a9158..bd9af52d9, finding no security or data-loss blockers. All four reported findings are addressed in 62592937e: duplicate Add previews no longer show replacement/comparison copy; installation has accurate status and stays stable across catalog refresh; one Settings-level update dialog survives category changes and restores focus to the moved row; comparison tests now exercise Update mode, with separate duplicate-Add and pending-enable regressions. Deletion copy also discloses removal of rollback history. Optional duplicate delete-error presentation and the existing motion-token mirroring remain unchanged. The reviewer executed no tests and did not review these fixes or the merge.

Merged main dc305c9e3 in 8c4949f7b, retaining unified Messages navigation, retired plugin removals, Repository naming and current appearance checks while adapting Settings button assertions. Push hooks pass (TypeScript/related units, design checks, Rust Clippy and destination checks). Earlier approval predates this delta; fresh human review and app acceptance are still needed. This is not a readiness or approval attestation.

These earlier bd9af52d9 production-browser captures use neutral native-IPC fixture data. The final fixes retain this layout; deletion copy now also mentions rollback history.

Install review with enable opt-out Installed row with Update
Install review Installed plugin row
Delete confirmation
Delete confirmation

Preserve unified Messages navigation, retired plugin removals, repository naming and current appearance checks while retaining plugin Settings controls and import lifecycle coverage.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket, Mantis and Groot reviews.

No required changes found in this follow-up; source assessment: 9/10. Three optional low-priority interaction observations are inline. Reviewed the 10-file delta since 0657a91 and relevant Settings, plugin manager/runtime/native-import and shared-dialog callers. The existing install-error/Back/retry recovery remains intact; enable failures remain visible through Settings feedback.

Optional cleanup: PluginImport.tsx:474 clears the preview token after installation, but native plugin_import_install (src-tauri/src/lib.rs:334–350) retains the prepared preview. Discard the matching token before forgetting it once the successful flow is finished, keeping cleanup failure distinct from installation failure. This retains at most one preview (32 MiB artifact cap) until another acquisition or app exit, so this is bounded cleanup advice, not an accumulating leak or blocker.

Head: bd9af52
Base: fa82d8b

Public PR description, commit messages and all 41 attached images inspected; no disclosure finding. Source-only: no tests, builds, PR code or apps executed. The one-time head-check snapshot contains successful Semgrep OSS, zizmor and DCO checks; it does not establish a passing application test suite. Native picker/drop/install acceptance, browser focus, actual screen-reader output, rendered themes/viewports/enlarged text and performance remain unverified. Historical screenshots and author-reported runs do not validate this head. This COMMENT is not an approval or merge authorization.

Comment thread src/app/Settings.tsx Outdated
Comment thread src/shared/design-system/ui/Accordion.tsx Outdated
Comment thread src/app/PluginImport.tsx
Keep duplicate Add previews separate from update comparisons, preserve installation status while enabling, and host one update dialog outside category rows. Cover duplicate imports, pending enable state and category-changing updates; disclose rollback history on deletion.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket, Mantis and Groot reviews.

No new actionable findings in this follow-up; source assessment: 9/10. Reviewed the five-file fix and main-merge integration since bd9af52, including relevant Settings, shared Dialog/finalFocus, plugin-manager and native-import callers.

The Update dialog now survives category regrouping and resolves its return target through Settings. Installation retains its pending presentation while enabling, duplicate Add previews no longer present update comparisons, and deletion copy reflects removal of rollback history. Existing error/Back/retry and preview ownership remain intact. The earlier category-focus and pending-status observations have source-level repairs; unchanged optional feedback is not duplicated.

Head: 6259293
Base: dc305c9

Public-material check: description and all 41 attachment URLs are identical to the prior inspected revision, whose inspection evidence was reused; the two new commit messages were inspected. No new disclosure finding in that surface.

Source-only: no tests, builds, apps or PR code executed. A single head-check snapshot showed CI still running, with completed checks successful except Windows native validation skipped. Job-summary test counts, summed execution time and slowest-test evidence were unavailable, so test-cost assessment remains incomplete. Native picker/install acceptance, live cancel/error/retry focus, screen-reader announcements, rendered themes/viewports/enlarged text, performance and human acceptance remain unverified. This COMMENT is not an approval or merge authorization.

tellaho and others added 6 commits October 18, 2026 07:29
Recover focus on container resize and return import dialogs to visible details when the catalog is covered. Add a browser regression for resize and dialog dismissal.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Preserve navigation focus when returning to Plugins after visiting another Settings section.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Restore the initiating control after delayed acquisition or installation failures. Hold fixture requests until disabled state is observed.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Name current and removed network declaration regions with their origin, and cover multiple expanded origins.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Release the native prepared import once installation succeeds and assert cleanup occurs once.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Keep fades immediate for keyboard navigation even when an uncontrolled accordion was first opened with a pointer.

Co-authored-by: Ned <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@buzz.block.builderlab.xyz>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket (lifecycle/performance), Mantis (correctness/security/concurrency), and Groot (product/accessibility/focus) reviews.

No new actionable findings; follow-up source assessment: 9/10. Reviewed the six-file delta from previously reviewed 6259293, prior feedback, and relevant Settings, shared Dialog/finalFocus/Accordion, plugin-manager and native-import callers.

The delayed-failure path now retains its intended return control before pending state; resize and dialog dismissal select visible plugin details when the catalog is covered. Leaving Plugins clears its detail selection. HTTPS regions include their origin, Accordion reads current keyboard modality when panels toggle, and successful installation discards its matching prepared preview without discarding failed-install retry state. These repair the reviewed source mechanisms. Best-effort cleanup during a pre-existing in-flight unmount remains bounded to one prepared preview; no new material regression was identified.

Head: aa13d99
Base: dc305c9

Public description, six new commit messages, and all 41 attached images inspected; no disclosure finding in that surface. The historical captures do not validate this head.

Source-only: no tests, builds, apps or PR code executed. One current-head check snapshot contained successful Semgrep OSS, zizmor and DCO checks only; application CI completion is not established. Current-head test counts, elapsed/summed execution time and slowest-test evidence were unavailable, so test-cost assessment is incomplete. Native picker/drop/install acceptance, live cancel/error/retry/resize focus, screen-reader output, rendered themes/viewports/enlarged text, performance and human acceptance remain unverified. This non-blocking COMMENT is not approval or merge authorization.

Preserve PR #1248 Settings grouping, Manage plugins naming, Identity lifetimes, Builderlab navigation and compact-Select assertions while retaining reviewed plugin lifecycle and focus behavior.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket (lifecycle/performance), Mantis (correctness/security/concurrency), and Groot (product/accessibility/focus) reviews.

No new actionable findings in this merge follow-up; source assessment: 9/10. Reviewed integration from previously reviewed aa13d99, including the 17 files with merge-resolution adjustments and relevant Settings/navigation callers. Unchanged feature patches were not exhaustively re-audited.

The merge preserves main’s Settings groups, conditional Identity lifetime, Local archive and Builderlab routing while retaining the plugin details, import action placement, delayed-error recovery and narrow-layout return-focus repairs. Import/preview ownership and Accordion implementation are unchanged from the reviewed feature parent. Migrated test selectors retain the Manage plugins destination and explicit Enable/Disable controls; prior focus and Identity regression cases remain present.

Head: 4123cfa
Base: 6ced036

Public description, merge commit message and all eight current attached images inspected; no disclosure finding in that surface. The images use fixtures and do not establish native behavior.

Source-only: no tests, builds, apps or PR code executed. One head-check snapshot showed 3 successful checks and 58 queued; application CI completion is unconfirmed. Current-head job-summary test counts, elapsed/summed execution time and slowest-test evidence were unavailable, so test-cost assessment remains incomplete. Native picker/install acceptance, live error/retry/resize focus, screen-reader behavior, theme/enlarged-text coverage, runtime performance and human acceptance remain unverified. This non-blocking COMMENT is not approval or merge authorization.

tellaho and others added 4 commits October 19, 2026 09:29
Retain PR #1335 removal of the unreachable usage plugin and its geometry spec, alongside the incoming message, channel, unread and voice-note fixes.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…tion

Observe scrollend after the requested boundary is reached, rather than treating the first intermediate position as completion. Preserve keyboard reachability assertions and ignore earlier focus/layout scroll completions.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Complete PR #1335 removal by dropping the guide introduced on this branch, which Git retained while merging the deleted plugin directory.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Agent Activity retains Essentials and coding-agents. Remove agent-sessions now that the deleted Channel Usage plugin no longer shares that tag, preserving the bundled discovery invariant.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket (systems/lifecycle), Mantis (correctness/security/concurrency), and Groot (product/accessibility) reviews.

No new actionable findings in this follow-up; source assessment: 9/10. Reviewed the merge integration and three-file follow-up since previously reviewed 4123cfa. Unchanged feature patches were not exhaustively re-audited.

The merge preserves main’s Channel Usage removal, and the follow-up removes its orphan guide and now-unshared discovery tag. The keyboard-scroll regression test registers its completion observer before each key and waits for scrolling to finish before reversing direction, retaining both position assertions. Settings and PluginImport production owners are unchanged from the prior reviewed head; existing error/Back/retry and return-focus repairs remain intact.

Head: 514531b
Base: 9bec796

Public description, all eight attached screenshots and four new first-parent commit messages inspected; no disclosure finding in that surface. Historical screenshots do not validate this head.

Source-only: no tests, builds, apps or PR code executed. One current-head CI snapshot showed 47 successful checks, 14 running and Windows native validation skipped; CI completion remains unconfirmed. Check summaries supplied no test counts, summed execution time or slowest-test evidence, so test-cost assessment remains incomplete. Native picker/install acceptance, live browser scroll/focus behavior, screen-reader output, rendered themes/viewports/enlarged text, runtime performance and human acceptance remain unverified. This non-blocking COMMENT is not approval or merge authorization.

@tellaho
tellaho merged commit f31fa12 into main Oct 19, 2026
63 checks passed
@tellaho
tellaho deleted the tho/plugin-settings-existing-fields branch October 19, 2026 17:05
johnmatthewtennant added a commit that referenced this pull request Oct 19, 2026
* origin/main:
  Add native Huddles with call controls and conversation panels (#489)
  fix(claude-code): keep sessions alive while Claude's background work runs (#1102)
  Rename Agent setup "Providers" to "Harness defaults" (#1348)
  feat(plugins): feature core plugins and branded catalog browsing (#1246)
  Improve AI defaults and add Goose configuration (#1266)
  feat(sidebar): filter channel sections by unread and activity (#1297)
  feat(plugins): organize settings with guides and focused controls (#1176)
  Unify Solo chat menus, rename workspaces, quieter membership notices (#1326)
  Add identity restore UI (#1101)
  Add native identity backup recovery (#1107)
  Back up desktop identities only with saved consent (#1106)
  Add native identity backup consent hooks (#1137)
  remove the Channel Usage plugin (#1335)
  fix(messages): retain image geometry across virtualized remounts (#1271)
  fix(channels): read metadata for a labeled channel whose roster came first (#1289)
  fix(channel-members): allow adding members to system channels (#1288)
  fix(unread): recover dropped thread roots for unread thread activity (#1291)
  test(voice-notes): fix the draft-card race that turned main red (#1315)
  ci: check dependency policy with cargo-deny (#1321)

Signed-off-by: jtennant <jtennant@squareup.com>

# Conflicts:
#	src/bundled/inbox/InboxDetail.test.tsx
#	src/bundled/inbox/InboxDetail.tsx
johnmatthewtennant added a commit that referenced this pull request Oct 19, 2026
…x-session-preview-live

* origin/jt/inbox-page-tabs: (25 commits)
  refactor(inbox): open conversations through conversation.ui.Tabs
  fix(inbox): retire a Huddle room's retained tabs and keep their focus
  test(inbox): stop depending on Channels having loaded a thread's channel
  fix(inbox): close an opened conversation once its room becomes a Huddle
  Add native Huddles with call controls and conversation panels (#489)
  fix(inbox): offer no Archive shortcut while Drafts is shown
  fix(inbox): keep a restored tab's row selected after leaving Inbox
  fix(claude-code): keep sessions alive while Claude's background work runs (#1102)
  Rename Agent setup "Providers" to "Harness defaults" (#1348)
  feat(plugins): feature core plugins and branded catalog browsing (#1246)
  Improve AI defaults and add Goose configuration (#1266)
  feat(sidebar): filter channel sections by unread and activity (#1297)
  feat(plugins): organize settings with guides and focused controls (#1176)
  Unify Solo chat menus, rename workspaces, quieter membership notices (#1326)
  Add identity restore UI (#1101)
  Add native identity backup recovery (#1107)
  Back up desktop identities only with saved consent (#1106)
  Add native identity backup consent hooks (#1137)
  remove the Channel Usage plugin (#1335)
  fix(messages): retain image geometry across virtualized remounts (#1271)
  ...
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.

3 participants