Let users customize sidebar footer order and visibility - #3550
Merged
ymichael merged 3 commits intoSep 12, 2026
Merged
Conversation
ymichael
marked this pull request as ready for review
September 12, 2026 03:55
ymichael
deleted the
bb/standalone-sidebar-footer-customization-thr_avdevumw57
branch
September 12, 2026 04:00
ymichael
added a commit
that referenced
this pull request
Sep 14, 2026
…sage (#3449) ## Human comments ## What was wrong Plugins could call schema-validated RPC methods but could not discover implementations or inspect their contracts. Usage displays had no common resource model for pooled and machine-local accounts, targeted fetching, or deduplicating known accounts. Usage settings lived in core instead of the display plugin. ## What changed - Add opt-in RPC publication with `experimental_discoverable`, registration/method descriptions, JSON Schemas, and SDK discovery. CLI supports `rpc list [plugin-id]`, `rpc inspect <plugin-id> [method]`, and `rpc call`. Discovery advertises live registrations; it does not change authorization or negotiate versions. SDK minimum is `0.4.87`. - Provider Usage owns `provider-usage.v1.listResources` (cheap inventory) and `provider-usage.v1.getResource` (actual usage for one resource, with optional cache reuse through `refresh: false`). Account Pooler, Codex, Claude Code, and ACP explicitly implement copied contracts. No shared schema package or core adapter is introduced. - Separate source-local resource IDs from provider-issued account identities. Deduplicate known identities within the selected location, never by email. Normalize plan/window labels; pooled Codex accounts preserve plan metadata from usage responses. - Move usage settings into Provider Usage, enable it by default on new installations, and retain the temporary `/settings/usage` redirect. Existing enable/disable choices remain intact. Settings and footer share aggregation/cache; settings fetches the selected location and the footer fetches its selected provider tab. Each settings account uses the same provider icon/header, email and plan-tag layout. - Preserve stale measurements after refresh failures and handle empty pools, authentication, missing limits, offline hosts, loading and removed resources. Sources remain independent of the display. Footer customization uses the implementation already merged in PR #3550. - Update Plugin Guide, API audit, CLI/configuration guidance and verification recipes. Isolate server test loggers and restore spies to prevent cross-test warning leakage. ## How you verified - Relevant app/server/SDK/provider/CLI typechecks and RPC discovery tests passed during implementation. Recent focused checks: 285 Account Pooler tests, 20 Provider Usage tests, 607 CLI tests and 74 Plugin Guide tests passed. The full server suite passed with 2,601 tests after logger isolation. - Source tests cover cheap inventories, targeted fetches, cache/force concurrency, ownership, removed resources, offline hosts and account identity normalization. Display tests cover source/provider selection, empty/error/loading states and cached measurements. - Dev Browser verified real pool and machine usage, consistent per-account headers and plan tags, and the settings redirect. Browser fixtures exercised empty/loading/error responses without changing saved accounts. The preview runs with `pnpm start:worktree`. - JSON Schema refinement/transform fidelity remains an experimental stabilization audit. Safari interaction verification was blocked by Computer Use `cgWindowNotFound`; no Safari pass is claimed. Preview: https://ymichael-latest--25451.getbb.app/settings/plugins/provider-usage > AGENT GENERATED
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human comments
What was wrong
Sidebar footer shortcuts had a fixed order and could not be hidden without losing access to an action or changing the plugin. Users need one customization surface for Settings, Report a bug, and registered plugin actions/disclosures.
What changed
Settings → Appearance now supports footer drag ordering and visibility. Right-click Hide moves an action into More; More only appears when hidden registered actions exist and links back to Appearance. Hiding an open disclosure closes it, and More can reopen it with Escape focus restoration.
Stable IDs persist through the existing SDK/CLI UI preferences (
sidebar.footerOrder,sidebar.hiddenFooterItems). Unknown/disabled-plugin preferences survive reloads; new actions default visible. Updated configuration docs, CLI guide/skill reference, and Plugin Guide. Uses the shared mobile drawer and guards non-left pointer release in the context menu. No daemon wire or plugin API changes.Standalone adaptation of reference commit 2114294 onto main at 001818f; no unrelated provider usage/RPC changes.
How you verified
pnpm start:worktreepreview: actual right-click Hide, hidden action/disclosure activation, Escape focus restoration, Appearance restoration, mouse drag and reload, CLI plugin disable/enable/reload, unknown IDs, all-hidden keyboard navigation.cgWindowNotFoundfor Simulator. Desktop Chromium emitted a focus/aria-hidden warning during menu transitions; observed focus and mobile root checks passed. Full test suite not run.Remote isolated preview (owner Connect session required). Settings/Remote access visible; Provider usage/Report a bug in More. Unknown preference ID retained. Server is left running on 26501.