Skip to content

feat(dashboard): single Allow split button with duration menu on approval detail - #844

Merged
angel-manuel merged 2 commits into
devfrom
feat/allow-split-button
Oct 28, 2026
Merged

angel-manuel merged 2 commits into
devfrom
feat/allow-split-button

Conversation

@angel-manuel

Copy link
Copy Markdown
Contributor

Summary

This implements the new Allow control from the Claude Design Approval Queue prototype (AllowSplit in ApprovalDetail.jsx).

The approval detail action bar used to have three controls: Allow once, Allow & Remember and the expiry clock (ExpiryControl). They are now one primary split button:

  • Main half runs the selected duration. It reads Allow once, Allow for 24 hours, … Allow always.
  • Caret (▾) opens a menu with Once, then an Allow & remember section with For 1 hour / 24 hours / 7 days / 30 days and Always. Picking an item only changes the selection and doesn't resolve the approval.
  • Once resolves with allow. Every other choice resolves with allow_remember at the scope selected in the "Remember as" dropdown, sending that duration as ttl. Always sends no ttl.
  • If there is no scope to remember, the remember items are disabled.

The durations come from the existing TTL_OPTIONS, so they are all values the API accepts. The design's 8h, 1w and 1y options were left out for that reason.

Other changes:

  • New approval/AllowSplit.svelte with a Storybook story.
  • ExpiryControl is no longer used on the approval page; the profile and agent rule pages still use it.
  • UI_SPEC.md: the split-button and approval-resolution sections now describe the new control.
  • screenshot-approvals.mjs: the expiry-menu shot is replaced by an allow-menu shot plus an "Allow for 24 hours" shot. Its two networkidle waits are now load: the SSE stream means networkidle never fires, and the script timed out without this change.

The queue rows (✓ / ✕ / ✓✓) are unchanged, as in the design.

Screenshots

Menu open "For 24 hours" selected
Dark Mobile (390px)

Test plan

  • npm run check (svelte-check): 0 errors, 0 warnings
  • screenshot-approvals.mjs against make e2e-up: all shots written, including the new menu and 24h selections
  • Manual: Allow for 24 hours creates a rule that expires in about 24h; Allow always creates a rule that never expires; Allow once creates no rule

🤖 Generated with Claude Code

Factory and others added 2 commits October 28, 2026 11:46
…oval detail

Folds "Allow once", "Allow & Remember" and the expiry clock into one primary
split button: the caret picks Once / remember For 1h…30d / Always, the main
half runs it. Once resolves `allow`; any other choice resolves
`allow_remember` at the "Remember as" scope with that TTL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Authenticated pages hold an SSE stream open, so networkidle never fires and
goto times out — the same reason snap.mjs dropped it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
overslash Ready Ready Preview Oct 28, 2026 11:54am UTC

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

Code diff size

+264 / −25 across 3 files (net +239)

Area Files Added Removed Net
dashboard 3 +264 −25 +239

Source files under src/ only (.cjs, .go, .js, .jsx, .mjs, .py, .rs, .svelte, .ts, .tsx); test files and inline #[cfg(test)] modules excluded. 2 other changed files not counted.

This branch was successfully deployed

1 active deployment
Preview — cae159d4 Deployed Oct 28, 2026 by vercel[bot]
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.

1 participant