Skip to content

feat(ui): move LiteAdmin into the header with a docked side panel - #44293

Merged
tin-berri merged 1 commit into
mainfrom
litellm_liteadmin_header_pill
Oct 3, 2026
Merged

tin-berri merged 1 commit into
mainfrom
litellm_liteadmin_header_pill

Conversation

@tin-berri

@tin-berri tin-berri commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

TLDR

Problem this solves:

  • Floating LiteAdmin covers the Logs pager buttons
  • Playground hid LiteAdmin entirely to keep Send clickable

How it solves it:

  • LiteAdmin is now a pill in the header, left of Docs
  • It opens as a panel docked on the right that narrows the page instead of covering it
  • Cmd/Ctrl+J opens and closes it from any page
  • Playground override removed; LiteAdmin shows there again

Intentional product change: the bottom-right floating button is gone. LiteAdmin opens from the header pill (icon only below 1024px) as a panel docked on the right that narrows the page while it is open. The Hide LiteAdmin account-menu switch is unchanged

User Flow

Before: on a page with a bottom-right footer, LiteAdmin sits on top of the controls

  1. Open /ui/logs/ with more than one page of logs
  2. The LiteAdmin button covers the previous, next and last page buttons; clicking them opens LiteAdmin
  3. Open /ui/playground/: LiteAdmin is missing

Before: floating LiteAdmin covers the Logs pager

Before: no LiteAdmin on Playground

After: LiteAdmin lives in the header and covers nothing

  1. Open /ui/logs/ with more than one page of logs
  2. All four pager buttons are clickable; LiteAdmin sits in the header next to Docs
  3. Click LiteAdmin: a panel docks on the right and the logs table narrows beside it; the pager stays clickable
  4. Open /ui/playground/ and press Cmd+J: the same panel docks beside Playground, Send stays clickable

After: header pill and docked panel on Logs, pager clear

After: docked panel on Playground

Changes

  • Render LiteAdmin in the dashboard header tools instead of a fixed bottom-right button
  • Soft blue pill using the info token with a Cmd J hint, icon only below lg
  • Replace the dropdown with a docked aside beside the content column; open state lives in a frame around the column and the header pill reads it. Closing keeps the conversation and any pending review
  • Hiding or unhiding LiteAdmin, or a session change, never remounts the page; the panel comes back closed
  • On open, focus goes to the pending review card, else the message box, else the panel itself
  • Toggle on Cmd+J or Ctrl+J; Shift or Alt combos are ignored so Chrome's Shift+Cmd+J still works
  • Delete the Playground route check in the layout and its test
  • Logs and trace drawers ignore J/K when Cmd, Ctrl or Alt is held, so Cmd+J no longer also jumps to the next request; all three drawers share one rule

Pre-Submission checklist

  • I have added meaningful tests
  • The handful of test files covering my change pass locally
  • My PR passes all required CI/CD checks (only osv-scan is red, and it is red on every open PR)
  • My PR's scope is as isolated as possible
  • I have received a Greptile Confidence Score of at least 4/5

Screenshots / Proof of Fix

Isolated proxy and Postgres, dashboard dev server, 30 seeded request logs. Screenshots retaken at 2b11b8f (after) and its merge base 8b11b68 (before) on the same data. Same Playwright script on both arms; each pager button hit-tested at its center

viewport before: pager buttons hit by LiteAdmin after
1440 previous, next, last none
1024 previous, next, last none
820 previous, next, last none (pill is icon only)
  • Playground before: no LiteAdmin; after: LiteAdmin present, Send hit-test resolves to Send message
  • Cmd+J opens the panel, pressing again closes it; header never overflows at any width
  • Panel open at 1440: page column 1368px -> 952px, panel 416px flush beside it, pager next/last still clickable; same at 1024 (952 -> 542)
  • With a Logs drawer open, Cmd+J opens LiteAdmin and the drawer stays on the same request (before the drawer fix it jumped to the next one)
  • Hide LiteAdmin on then off with text typed in the log search: the page node and the text survive, and the panel returns closed
  • Focus on open: the panel while models load, the message box once a model is chosen

Dark mode and the icon-only pill below 1024px:

After: dark mode with the panel open

After: icon-only pill at 820px

Tests

  • DashboardHeader.test.tsx: LiteAdmin renders inside the header, ahead of Docs
  • LiteAdmin.integration.test.tsx: Cmd+J and Ctrl+J toggle the panel, Shift+Cmd+J does not, and the shortcut does nothing while Hide LiteAdmin is on
  • LiteAdmin.integration.test.tsx: the page mounts once across hide/unhide and the panel comes back closed; focus on open walks loading, message box and pending review
  • useKeyboardNavigation.test.tsx and TraceDrawer.test.tsx: Cmd+J / Ctrl+J leave the drawer selection alone, plain J still moves it
  • Mutation-checked: removing the listener, the Shift guard, the header mount, or the drawers' modifier check each fails a test

🤖 Generated with Claude Code


Note

Low Risk
Dashboard-only UI and keyboard-handling changes; LiteAdmin gateway behavior is unchanged aside from layout and shortcuts, with tests covering the main regressions.

Overview
LiteAdmin moves from a fixed bottom-right popover to a header control (before Docs) and a right-docked aside that narrows the content column instead of overlaying it. The dashboard wraps the content column in LiteAdminFrame (open state, Cmd/Ctrl+J toggle, docked panel); the default export is now the header trigger button.

The Playground route hide is removed so LiteAdmin is available there again. Popover UI is replaced with a docked panel, focus-on-open behavior, and aria-expanded on the trigger.

J/K navigation in logs and trace drawers now uses shared ignoresLetterShortcut so modified keys (e.g. Cmd+J) do not move selection while LiteAdmin uses that shortcut. Tests cover header placement, integration (toggle, hide, focus, mount preservation), and drawer keyboard behavior.

Reviewed by Cursor Bugbot for commit 2b11b8f. Bugbot is set up for automated code reviews on this repo. Configure here.

@tin-berri
tin-berri requested a review from a team October 3, 2026 00:36
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 4/5

This is a focused, well-tested UI change. LiteAdmin is moved cleanly into the header, the Playground-specific exclusion is removed, the popover now opens below the trigger, and the keyboard behavior correctly supports Cmd/Ctrl+J while rejecting Shift/Alt combinations. The tests cover header placement, shortcut toggling, cleanup behavior, and the hidden-account-menu state, including mutation checks.

I’m holding back the final point because the required E2E/Buildkite status is still pending, so the cross-viewport layout and interaction claims have not yet been independently verified by CI.

@greptile-apps

greptile-apps Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium risk] Moves LiteAdmin component from layout to header.

The PR appears safe to merge

What we checked:

  • Hidden shortcut stays inactive: Hiding LiteAdmin unmounts ConfiguredLiteAdmin. Its cleanup removes the keyboard listener

Summary

Moves LiteAdmin into the dashboard header and opens its panel below the trigger. Adds Cmd/Ctrl+J and restores access on Playground

  • The existing role checks and Hide LiteAdmin switch still apply
  • Tests cover header placement and shortcut behavior
  • No actionable issues were found

Acknowledged intentional changes: tin-berri explicitly states that the floating button is removed and Playground access is restored to keep page controls clear

Reviews (1) · Last reviewed commit: "feat(ui): move LiteAdmin into the dashbo..."

@cursor cursor 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.

Stale Bugbot comment from a previous run.

Comment thread ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx Outdated
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from c7c6835 to f6de39b Compare October 3, 2026 00:46
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, low-risk UI change with no auth, API, or data-path impact. LiteAdmin is relocated into the dashboard header, eliminating the pager overlap and restoring access on Playground. The Cmd/Ctrl+J behavior correctly ignores Shift/Alt combinations and respects the Hide LiteAdmin setting, with cleanup when the component is unmounted. The tests cover header placement, keyboard toggling, modifier handling, hidden-state behavior, and mutation checks, so I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from f6de39b to 03bc8a0 Compare October 3, 2026 01:03
@tin-berri tin-berri changed the title feat(ui): move LiteAdmin into the dashboard header feat(ui): move LiteAdmin into the header with a docked side panel Oct 3, 2026
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, low-risk UI change with no auth, API, or data-path impact. LiteAdmin is moved into the dashboard header, eliminating the Logs pager overlap and restoring access on Playground. Cmd/Ctrl+J correctly toggles the panel while ignoring Shift/Alt combinations, and the shortcut respects the Hide LiteAdmin setting with proper listener cleanup. The added tests cover header placement, shortcut behavior, modifier handling, hidden-state behavior, and drawer navigation, so I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

Comment thread ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx Outdated
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from 03bc8a0 to eb11f20 Compare October 3, 2026 01:09
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, low-risk dashboard UI change with no impact to LiteAdmin authorization, gateway write flows, or request-data paths. Moving LiteAdmin into the header and using a docked panel removes the Logs pager overlap and restores access on Playground without covering page controls. Cmd/Ctrl+J toggles the panel while Shift/Alt combinations are ignored, the Hide LiteAdmin setting still prevents the shortcut when enabled, and listener cleanup is covered. The tests cover header placement, shortcut behavior, modifier handling, hidden-state behavior, and drawer navigation, so I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

Comment thread ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from eb11f20 to 0d28d2c Compare October 3, 2026 01:41
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, low-risk dashboard UI change with no impact to LiteAdmin authorization, gateway write flows, or request-data paths. Moving LiteAdmin into the header and using a docked panel removes the Logs pager overlap and restores access on Playground without covering page controls. Cmd/Ctrl+J toggles the panel while Shift/Alt combinations are ignored, the Hide LiteAdmin setting still prevents the shortcut when enabled, and listener cleanup is covered. The tests cover header placement, shortcut behavior, modifier handling, hidden-state behavior, and drawer navigation, so I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

Comment thread ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx Outdated
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from 0d28d2c to 258f6e6 Compare October 3, 2026 01:48
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, well-tested UI change with no impact to authentication, API behavior, or request-data paths. Moving LiteAdmin into the header and using a docked panel removes the Logs pager overlap while restoring access on Playground. Cmd/Ctrl+J toggles the panel, Shift/Alt combinations are correctly ignored, the Hide LiteAdmin setting still disables the shortcut, and listener cleanup is covered. The tests also cover header placement and drawer navigation, so I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

Comment thread ui/litellm-dashboard/src/components/liteadmin/LiteAdmin.tsx Outdated
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from 258f6e6 to 5d807bc Compare October 3, 2026 01:58
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, well-tested UI change. Moving LiteAdmin into the header and using a docked panel removes the Logs pager overlap while restoring access on Playground without covering page controls. Cmd/Ctrl+J toggles the panel, Shift/Alt combinations are correctly ignored, the Hide LiteAdmin setting still disables the shortcut, and listener cleanup is covered. The tests also cover header placement and drawer navigation, and I found no actionable issues.

@cursor cursor 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.

Stale Bugbot comment from a previous run.

The floating bottom-right LiteAdmin button covered page controls such as
the Logs pagination buttons, and Playground had to hide it entirely.
Render the trigger as a pill in the header tools ahead of Docs and open
LiteAdmin as a panel docked beside the content column, which narrows the
page instead of covering it. Add a Cmd/Ctrl+J toggle and drop the
Playground override.

The Logs and trace drawers treated Cmd+J as a plain J and advanced the
selection, so they now share RunDrawer's rule that letter shortcuts
yield to modified presses and typing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tin-berri
tin-berri force-pushed the litellm_liteadmin_header_pill branch from 5d807bc to 2b11b8f Compare October 3, 2026 02:13
@tin-berri

Copy link
Copy Markdown
Contributor Author

@greptileai can you reply here with a score and why that score?

@tin-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Score: 5/5

This is a focused, low-risk UI change with no impact to authentication, API behavior, or request-data paths. Moving LiteAdmin into the header and using a docked panel removes the Logs pager overlap while restoring access on Playground without covering page controls. Cmd/Ctrl+J toggles the panel, Shift/Alt combinations are correctly ignored, the Hide LiteAdmin setting still disables the shortcut, and listener cleanup is covered. The tests also cover header placement, shortcut behavior, modifier handling, hidden-state behavior, and drawer navigation, so I found no actionable issues.

@cursor cursor 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 2b11b8f. Configure here.

@tin-berri

Copy link
Copy Markdown
Contributor Author

CI on 2b11b8f: 71 passed, 29 skipped, 1 failed. The failure is osv-scan, which is also red on #44311, #44310, #44307 and #44305: it flags one High advisory with no fixed release in a lockfile this PR does not touch (no lockfile, package.json or pyproject changes here). Not absorbing it into this PR

@tin-berri
tin-berri merged commit 8e32d45 into main Oct 3, 2026
102 of 103 checks passed
@tin-berri
tin-berri deleted the litellm_liteadmin_header_pill branch October 3, 2026 07:00
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.

2 participants