feat(web): SC-9 plugin / marketplace / MCP / secret tab UIs #648
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!648
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/631"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements all four stub tabs on
/settings/agent-config.plugin_bindinglist, inline enabled toggle, edit/fork/reset menu, add drawer${SECRET:NAME}autocomplete, client-side validation/settings/secrets— same write-only value UX and access-log drawerTest plan
Closes #631
Implements the four stub tabs on /settings/agent-config: - PluginsTab: scope-filterable list of plugin_binding rows with inline enabled toggle, edit/fork/reset action menu, and add drawer. - MarketplacesTab: same action menu shape; columns: name, kind, URL, scope chip. - McpTab: card-style list; edit modal with transport radio (stdio / http / sse), chip-list args, env key-value pairs with ${SECRET:NAME} autocomplete, client-side transport validation. - SecretsTab: inline component (no AppShell) replacing the previous redirect to /settings/secrets; same write-only value UX and access- log drawer as the dedicated page. All tabs call the SC-7 /agent-config/* routes and invalidate TanStack Query on mutation. One vitest smoke test per tab covers create / edit / delete loops (56 files, 642 tests all green). Closes #631 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>Two issues to fix:
secrets-tab.tsxAccessLogDrawer— fetchesfetchSecretAccessLog(name)with no pagination opts and renders no page controls. The API returnslimit/offsetfields because there can be >50 entries. AC requires a paginated viewer — add Prev/Next or Load-more controls that passoffsetthrough.mcp-tab.tsxEnvEditor.addEntry()—onChange({ ...value, "": "" })collapses to one entry when called twice before the first key is named (object keys must be unique). Use an array of[k, v]tuples as state instead ofRecord<string, string>.Both issues fixed in the latest push:
AccessLogDrawer: addedoffsetstate;fetchSecretAccessLognow receives it, queryKey includes it so TanStack refetches on navigation. Prev/Next buttons disabled when at the first page or when the current page is shorter thandata.limit(no more entries).EnvEditor: replacedRecord<string,string>state withArray<[string,string]>tuples.addEntryappends["" ,""]regardless of whether the previous row key has been filled. Tuples are converted back to a record (filtering blank keys) only at mutation time.Both prior findings fixed:
AccessLogDrawernow has Prev/Next pagination viaoffsetstate, andEnvEditorusesEnvTuples(array of tuples) eliminating the key-collision bug. CI green.Both prior findings fixed:
AccessLogDrawernow has Prev/Next pagination viaoffsetstate, andEnvEditorusesEnvTuples(array of tuples) eliminating the key-collision bug. CI green.