Skip to content

feat: react-router, sidebar layout, sticky header, dropdown component…#9370

Merged
austinpickett merged 1 commit into
mainfrom
fix/dashboard-routing
Apr 14, 2026
Merged

feat: react-router, sidebar layout, sticky header, dropdown component…#9370
austinpickett merged 1 commit into
mainfrom
fix/dashboard-routing

Conversation

@austinpickett

@austinpickett austinpickett commented Apr 14, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

Overhauls the Hermes Agent web dashboard UI with proper client-side routing, consistent sidebar navigation layouts, and design polish. Replaces the in-memory page switching with react-router-dom so each page has a real URL (e.g. /logs, /config), converts emoji usage to lucide-react icons throughout, removes all border-radius for a sharper aesthetic matching the design language, and introduces a custom styled dropdown select component. Restructures the Skills, Logs, and Config pages to use a consistent sidebar + content layout pattern.

Related Issue

N/A — cumulative UI/UX improvements to the web dashboard.

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

Routing

  • Added react-router-dom dependency
  • web/src/main.tsx — wrapped App in <BrowserRouter>
  • web/src/App.tsx — replaced useState-based page switching with <Routes>/<Route> and <NavLink> for the nav bar. Each page now has a proper URL (/, /sessions, /analytics, /logs, /cron, /skills, /config, /env). Header changed from sticky to fixed.

Custom Select component

  • web/src/components/ui/select.tsx — rewrote from a native <select> wrapper to a fully custom dropdown with keyboard navigation, check-mark selection, and styling matching the design system. New API: <Select onValueChange> + <SelectOption>.
  • web/src/components/AutoField.tsx — updated to new Select API
  • web/src/pages/CronPage.tsx — updated to new Select API

Emoji → lucide-react icons

  • web/src/pages/ConfigPage.tsx — replaced CATEGORY_ICONS emoji map with lucide icon components, added CategoryIcon helper
  • web/src/pages/SkillsPage.tsx — replaced toolset emoji extraction with toolsetIcon() lookup using lucide icons

Border-radius removal

  • Removed rounded-md, rounded-sm, rounded-lg, rounded from all page and component files (kept rounded-full on spinners/dots)
  • web/src/components/ui/card.tsx — removed overflow-hidden (no longer needed without border-radius)
  • web/src/index.css — removed border-radius from scrollbar thumb

Skills page sidebar layout

  • web/src/pages/SkillsPage.tsx — replaced tab buttons + category filter pills + accordion with a sidebar + content layout matching ConfigPage. Sidebar has "All Skills", category sub-items (indented), and "Toolsets" as nav items. Removed collapsed/expanded accordion state.

Logs page sidebar layout

  • web/src/pages/LogsPage.tsx — replaced inline FilterBar button rows with a sidebar layout. File, Level, Component, and Lines filters are now sidebar sections with headings and indented items.

How to Test

  1. Run hermes dashboard in one terminal, then cd web && npm run dev in another
  2. Open the Vite dev server URL (usually http://localhost:5173)
  3. Click through each nav item — verify the URL changes (/logs, /skills, /config, etc.) and that browser back/forward works
  4. On the Skills page, verify the sidebar shows "All Skills" with category sub-items and a "Toolsets" section below a divider
  5. On the Logs page, verify filters (File, Level, Component, Lines) appear in the sidebar and switching them updates the log output
  6. On the Config page, verify the "Deliver to" dropdown on the Cron page opens as a styled popover (not a native select) and is not clipped
  7. Verify no rounded corners appear on cards, inputs, badges, code blocks, or tooltips (spinners should still be circular)

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform:

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

image agent-logs image image image

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Supply Chain Risk Detected

This PR contains patterns commonly associated with supply chain attacks. This does not mean the PR is malicious — but these patterns require careful human review before merging.

⚠️ WARNING: Install hook files modified

These files can execute code during package installation or interpreter startup.

Files:

hermes_cli/setup.py

Automated scan triggered by supply-chain-audit. If this is a false positive, a maintainer can approve after manual review.

@austinpickett austinpickett requested a review from teknium1 April 14, 2026 04:10
@austinpickett austinpickett merged commit ea74f61 into main Apr 14, 2026
3 of 4 checks passed
@austinpickett austinpickett deleted the fix/dashboard-routing branch April 14, 2026 04:23
@austinpickett austinpickett restored the fix/dashboard-routing branch April 14, 2026 14:03
ulasbilgen pushed a commit to ulasbilgen/hermes-adhd-agent that referenced this pull request May 1, 2026
…routing

feat: react-router, sidebar layout, sticky header, dropdown component…
aj-nt pushed a commit to aj-nt/hermes-agent that referenced this pull request May 1, 2026
…routing

feat: react-router, sidebar layout, sticky header, dropdown component…
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…routing

feat: react-router, sidebar layout, sticky header, dropdown component…
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
…routing

feat: react-router, sidebar layout, sticky header, dropdown component…
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…routing

feat: react-router, sidebar layout, sticky header, dropdown component…
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