Skip to content

feat: dashboard session layout improvements and approval actions#57

Merged
castellotti merged 2 commits intomainfrom
dashboard-improvements
Apr 14, 2026
Merged

feat: dashboard session layout improvements and approval actions#57
castellotti merged 2 commits intomainfrom
dashboard-improvements

Conversation

@castellotti
Copy link
Copy Markdown
Owner

@castellotti castellotti commented Apr 13, 2026

Summary

  • Tool call approvals in Dashboard: The Allow/Deny/Defer approval bar now appears inline in the Dashboard event feed directly below any pending tool_call_pending event, matching the behavior already present in the Log view.
  • 1–2 session vertical fill: Session cards now fully utilize the available vertical space. The event feed was previously capped by the activity chain's width-based capacity; it now renders all events and scrolls, so the card fills its height with real content.
  • 3-session 2×2 grid with smart sizing: When exactly 3 sessions are active, the layout switches to a 2×2 grid where the focused session (or the first session when none is focused) spans both rows in the left column at full height, while the other two sessions stack in the right column at half height each. Focus changes dynamically reorder the maximized card.

Test plan

  • Trigger a PreToolUse blocking hook and confirm Allow/Deny/Defer buttons appear in the Dashboard event feed
  • Open Dashboard with 1 session — card should fill the full height with event rows
  • Open Dashboard with 2 sessions — both cards should fill the full height side by side
  • Open Dashboard with 3 sessions — verify 2×2 layout with first session spanning full height on the left
  • Click a session header to focus it with 3 sessions — verify the focused session becomes the full-height left card

- Show tool call approval bar (Allow/Deny/Defer) inline in Dashboard event
  feed, matching the behavior already present in Log view
- Fix 1-2 session cards not filling the full vertical space of the
  dashboard by decoupling the event feed item limit from the
  width-based chain capacity; events now fill and scroll the card height
- For 3 active sessions, use a 2×2 grid where the focused session (or
  first session if none focused) spans both rows for maximized height,
  with the other two sessions stacking in the second column
- Add sessionId to PendingApprovalDTO (server + client) so approval
  matching in the Dashboard event feed is scoped to the correct session,
  preventing cross-session false matches when multiple sessions have
  concurrent pending tool calls with the same tool name
- Remove unused height variable from DashboardView grid layout block
- Cache orderedSessions.indexOf() result per card to avoid O(n) lookups
  on every render
- Remove unnecessary nullish coalesce on toolName (typed as string)
- Simplify isSpanning gridRow style to use undefined instead of spread
@castellotti castellotti self-assigned this Apr 14, 2026
@castellotti castellotti merged commit bf69adf into main Apr 14, 2026
@castellotti castellotti deleted the dashboard-improvements branch April 14, 2026 00:21
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