feat(gateway): approval queue tray in web UI sidebar - #2269
serrrfirat wants to merge 1 commit into
Conversation
Screenshot (dark theme)The approval queue tray sits in the sidebar between the assistant item and thread list. It shows pending gates from all threads with inline approve/deny controls. Screenshot attached below: |
There was a problem hiding this comment.
Code Review
This pull request introduces several significant enhancements and fixes across the codebase. Key changes include: the addition of a 'DB MIGRATION' label and corresponding automation in the labeler and setup scripts; improvements to the Telegram channel's message splitting logic to correctly handle UTF-16 character limits; the implementation of a 'sendVoice' feature for Telegram; and the addition of cross-channel approval authorization logic, which includes a new database column 'source_channel' for conversations. Additionally, the pull request expands the GitHub tool's capabilities to include repository creation, code search, branch management, file operations, and release management, along with corresponding schema updates and regression tests. Configuration resolution logic has been updated to prioritize database settings over environment variables, and the sandbox worker now supports per-job MCP server filtering. I have no feedback to provide as all changes appear well-implemented and covered by tests.
Adds a cross-thread approval queue tray to the chat sidebar that shows all pending tool approval gates across all threads, not just the active one. This solves the visibility gap where background routines, heartbeat threads, or other non-active threads could be silently blocked waiting for approval. Design: - Sidebar tray appears between assistant-item and thread list only when gates are pending (zero UI cost when empty) - Each item shows tool name, source thread, description, and inline approve/always/deny buttons - Amber badge on the Chat tab pulses when new gates arrive - Thread items show pulsing amber dot when they have pending approvals - Batch approve-all / deny-all on header hover - Collapsible tray with smooth spring animations - Full light/dark theme support - Touch-friendly targets on coarse pointer devices Wired into both legacy approval_needed and v2 gate_required/gate_resolved SSE events. sendApprovalAction now resolves using the gate's owning thread rather than the currently-viewed thread. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
df2d4a4 to
cedce8e
Compare
|
Closing: branch was rebased onto staging. Replaced by new PR. |
Summary
Adds a cross-thread approval queue tray to the web gateway sidebar that provides visibility into all pending tool approval gates — not just those in the active thread. Companion to #2267 (thread-scoped approvals), which fixes correctness but creates a visibility gap for background threads.
Problem
When a background routine, heartbeat, or non-active thread triggers a tool approval gate, the user has no way to see it without manually switching to that thread. Gates from inactive threads are silently blocked.
Solution
Three-layer non-intrusive design that adds zero UI surface when no gates are pending:
Features
Screenshot
Changes
index.html— approval tray skeleton + tab badge spanstyle.css— ~270 lines of tray styles, animations, light theme overridesapp.js—pendingGatesMap, tray CRUD functions, wired into existingapproval_neededevent +sendApprovalActionTest plan
🤖 Generated with Claude Code