Refactor App.tsx into modular layout components#103
Conversation
…sidebar Extract inline components into src/components/layout/, add shadcn Sidebar/Sheet/Input primitives, responsive sidebar transitions.
|
Cursor messed up commit history, so reopening as fresh PR from fresh branch |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 4b19ff3. Configure here.
|
|
||
| {showFeedback && <FeedbackModal onClose={() => setShowFeedback(false)} />} | ||
|
|
||
| <main className="min-h-screen flex flex-col pl-0 transition-[padding] duration-200 ease-linear md:peer-data-[state=expanded]:pl-64"> |
There was a problem hiding this comment.
Mobile sidebar has no trigger button to open
High Severity
On mobile (below 768px), the Sidebar component renders as a Sheet overlay that starts closed (openMobile defaults to false). However, no SidebarTrigger (hamburger button) is rendered anywhere in AppLayout or AppSidebar to let users open it. The SidebarTrigger component is exported from sidebar.tsx but never used. The old code had a fixed sidebar always visible at all screen sizes. Now on mobile, navigation is completely inaccessible — there's no UI element to open the sheet and Ctrl+B isn't available on phones.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 4b19ff3. Configure here.


Summary
App.tsxintosrc/components/layout/:AppLayout,AppSidebar,NavItem,CommunityBanner,FeedbackModalSidebar,Sheet,Input, anduse-mobilehookpeer-data-[state]Test plan
pnpm buildpasses clean🤖 Generated with Claude Code
Note
Medium Risk
Mostly a UI refactor, but it replaces the core navigation layout with a new responsive sidebar/sheet system and changes positioning/print rules, which could regress routing, sidebar state, or CLI panel placement.
Overview
Refactors
App.tsxby extracting the inline layout/nav/feedback/community-banner logic into a dedicatedcomponents/layoutmodule (AppLayout,AppSidebar,NavItem,CommunityBanner,FeedbackModal), leavingApp.tsxfocused on providers and top-level bootstrapping.Introduces new shadcn-style primitives (
Sidebar,Sheet,Input) plus auseIsMobilehook to support a responsive, collapsible sidebar with persisted open/closed state, and updatesCliPanelpositioning to follow the new sidebar (peer-based left offset + transitions) and updated print-hiding selectors.Reviewed by Cursor Bugbot for commit 4b19ff3. Bugbot is set up for automated code reviews on this repo. Configure here.