Skip to content

feat(dashboard): refine responsive audit workspace - #653

Merged
SantiagoDePolonia merged 1 commit into
mainfrom
feat/dashboard-responsive-audit-workspace
Aug 6, 2026
Merged

SantiagoDePolonia merged 1 commit into
mainfrom
feat/dashboard-responsive-audit-workspace

Conversation

@SantiagoDePolonia

@SantiagoDePolonia SantiagoDePolonia commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • add persistent pointer and keyboard sidebar resizing while keeping navigation labels stable
  • make audit summaries responsive, combine status and method metadata, and keep one audit entry expanded at a time
  • dock the interactions toggle to the record edge and improve conversation drawer sizing and fullscreen accessibility

Testing

  • pre-commit dashboard JavaScript unit tests
  • pre-commit dashboard dist synchronization check
  • npm run check
  • npm run build

Summary by CodeRabbit

  • New Features

    • Resize the dashboard sidebar by dragging, clicking, or using keyboard controls.
    • Sidebar width is preserved between sessions and remains within accessible limits.
    • Audit conversation drawers now provide improved fullscreen accessibility.
    • Audit layouts adapt smoothly to narrower screens.
  • Bug Fixes

    • Opening one audit entry now automatically closes any other expanded entry.
    • Improved audit timestamps, status presentation, navigation label truncation, and interaction states.
    • Conversation panel sizing now adjusts continuously across viewport widths.

Copilot AI lite review requested due to automatic review settings August 6, 2026 13:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The dashboard now supports resizable, persisted sidebar widths with pointer and keyboard controls. Audit logs use responsive container layouts, continuous conversation-panel bounds, fullscreen drawer accessibility, single-entry expansion, and updated interaction controls.

Changes

Audit dashboard interactions

Layer / File(s) Summary
Sidebar width state and resizing
web/dashboard/src/lib/stores/sidebar-sizing.js, web/dashboard/src/lib/stores/ui.svelte.js, web/dashboard/src/lib/components/organisms/Sidebar.svelte, web/dashboard/tests/sidebar-sizing.test.js
Sidebar width is clamped between 60px and 240px. Pointer dragging, keyboard controls, toggling, persistence, and CSS variable updates use the width-based state.
Sidebar resize and navigation presentation
web/dashboard/src/lib/components/organisms/Sidebar.svelte
The sidebar adds resize-state styling, label truncation, focus and cursor styles, and targeted collapsed and mobile label hiding.
Audit entry and panel responsive layout
web/dashboard/src/styles/layout.css, web/dashboard/src/pages/audit-logs/AuditEntrySummary.svelte, web/dashboard/src/pages/audit-logs/AuditPane.svelte, web/dashboard/src/pages/audit-logs/conversation-panel.js, web/dashboard/tests/conversation-panel.test.js
Audit entries and panes respond to the dashboard-content container. Conversation panel bounds now change continuously across widths.
Audit drawer accessibility and accordion behavior
web/dashboard/src/pages/audit-logs/ConversationDrawer.svelte, web/dashboard/src/pages/audit-logs/audit-logic.js, web/dashboard/tests/audit-list.test.js
Fullscreen drawers temporarily hide the dashboard shell and expose dialog semantics. Audit expansion now permits one active entry at a time.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Sidebar
  participant SidebarStore
  participant Document
  User->>Sidebar: Drag or use keyboard on resize separator
  Sidebar->>SidebarStore: Set clamped width
  SidebarStore->>Document: Update --sidebar-width
  SidebarStore-->>Sidebar: Render updated width
Loading
sequenceDiagram
  participant User
  participant AuditEntrySummary
  participant ConversationDrawer
  participant DashboardShell
  User->>AuditEntrySummary: Open conversation
  AuditEntrySummary->>ConversationDrawer: Toggle current entry
  ConversationDrawer->>DashboardShell: Set inert and aria-hidden in fullscreen
  ConversationDrawer-->>User: Render accessible dialog
Loading

Possibly related PRs

Suggested reviewers: copilot

Poem

I nudge the sidebar, wide and bright,
Then tuck it small by keyboard light.
The audit rows now fold in line,
While drawers guard the focus fine.
A rabbit hops through panels neat—
Responsive paths beneath my feet.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies a responsive audit workspace feature and accurately summarizes the main pull request changes.
Description check ✅ Passed The description explains the main changes and lists validation steps, with content that aligns with the pull request objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dashboard-responsive-audit-workspace

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/dashboard/tests/conversation-panel.test.js`:
- Around line 28-33: Update the expected maximum width for the 680px viewport in
the test covering conversationPanelBounds and clampConversationPanelWidth from
443 to 442, matching the current implementation while preserving the 679px
assertions.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c79bf29b-da97-4b5d-aa0f-457592aaeca6

📥 Commits

Reviewing files that changed from the base of the PR and between d7bbf36 and 1babaee.

⛔ Files ignored due to path filters (4)
  • internal/admin/dashboard/static/dist/assets/index-BFUCi3g4.js is excluded by !**/dist/**
  • internal/admin/dashboard/static/dist/assets/index-Cz8GQupq.css is excluded by !**/dist/**
  • internal/admin/dashboard/static/dist/assets/index-XgpqSEUI.css is excluded by !**/dist/**
  • internal/admin/dashboard/static/dist/index.html is excluded by !**/dist/**
📒 Files selected for processing (12)
  • web/dashboard/src/lib/components/organisms/Sidebar.svelte
  • web/dashboard/src/lib/stores/sidebar-sizing.js
  • web/dashboard/src/lib/stores/ui.svelte.js
  • web/dashboard/src/pages/audit-logs/AuditEntrySummary.svelte
  • web/dashboard/src/pages/audit-logs/AuditPane.svelte
  • web/dashboard/src/pages/audit-logs/ConversationDrawer.svelte
  • web/dashboard/src/pages/audit-logs/audit-logic.js
  • web/dashboard/src/pages/audit-logs/conversation-panel.js
  • web/dashboard/src/styles/layout.css
  • web/dashboard/tests/audit-list.test.js
  • web/dashboard/tests/conversation-panel.test.js
  • web/dashboard/tests/sidebar-sizing.test.js

Comment on lines +28 to +33
test("panel bounds stay continuous across the former compact breakpoint", () => {
assert.deepEqual(conversationPanelBounds(679), { min: 320, max: 442 });
assert.deepEqual(conversationPanelBounds(680), { min: 320, max: 443 });
assert.equal(clampConversationPanelWidth(520, 679), 442);
assert.equal(clampConversationPanelWidth(520, 680), 443);
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Fix the expected maximum width at 680px.

Line 30 fails because conversationPanelBounds(680) returns { min: 320, max: 442 }. Line 32 fails for the same reason.

Proposed fix
-  assert.deepEqual(conversationPanelBounds(680), { min: 320, max: 443 });
+  assert.deepEqual(conversationPanelBounds(680), { min: 320, max: 442 });
@@
-  assert.equal(clampConversationPanelWidth(520, 680), 443);
+  assert.equal(clampConversationPanelWidth(520, 680), 442);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
test("panel bounds stay continuous across the former compact breakpoint", () => {
assert.deepEqual(conversationPanelBounds(679), { min: 320, max: 442 });
assert.deepEqual(conversationPanelBounds(680), { min: 320, max: 443 });
assert.equal(clampConversationPanelWidth(520, 679), 442);
assert.equal(clampConversationPanelWidth(520, 680), 443);
});
test("panel bounds stay continuous across the former compact breakpoint", () => {
assert.deepEqual(conversationPanelBounds(679), { min: 320, max: 442 });
assert.deepEqual(conversationPanelBounds(680), { min: 320, max: 442 });
assert.equal(clampConversationPanelWidth(520, 679), 442);
assert.equal(clampConversationPanelWidth(520, 680), 442);
});
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/dashboard/tests/conversation-panel.test.js` around lines 28 - 33, Update
the expected maximum width for the 680px viewport in the test covering
conversationPanelBounds and clampConversationPanelWidth from 443 to 442,
matching the current implementation while preserving the 679px assertions.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@greptile-apps

greptile-apps Bot commented Aug 6, 2026

Copy link
Copy Markdown

Confidence Score: 5/5

The audited live Interactions behavior preserves and updates the selected conversation even when audit-list filters suppress visual insertion.

The focused execution used the production live merge, normalized audit-record cache, conversation rendering, and selected-anchor hydration logic, and observed the expected partial-to-final response transition. No actionable defects remain.

Files Needing Attention: No files need follow-up changes.

T-Rex T-Rex Logs

What T-Rex did

  • Ran the authored Node harness with an active audit search filter across production modules; the visible audit list remained empty under the filter while the open Interactions drawer streamed a partial answer and produced a final answer after the flush, and the selected-entry hydration gate returned true.
  • Executed the dashboard live-log and Interactions drawer test suites; all 75 tests passed.
  • Validated that filtering a live audit record out of the list does not prevent the Interactions drawer from delivering its final response, as shown by the flush path and exact hydration gate outcome.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "feat(dashboard): refine responsive audit..." | Re-trigger Greptile

@SantiagoDePolonia
SantiagoDePolonia merged commit 225a3fb into main Aug 6, 2026
21 checks passed
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.

3 participants