mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-25 09:41:04 +01:00
Takeover routes no longer replace the main app sidebar. Instead the host collapses the app <Sidebar/> to its 64px rail (still peek-able) and renders the contextual sidebar in a second pane: [ rail ][ secondary ~240px ][ content ]. User-pin precedence (pin > route request > default) is preserved by the existing SidebarContext. - New SecondarySidebar.tsx: fixed w-60, full-height, bordered, scrollable pane. - Layout.tsx: always render <Sidebar/> in SidebarShell; compute one secondarySidebar/hasSecondarySidebar resolver (settings | plugin routeSidebar); drive routeRequestsCollapsed via effect; render SecondarySidebar on desktop and generalize the mobile off-canvas drawer to the contextual sidebar. - Unit tests: settings + plugin routes keep <Sidebar/> AND show the contextual sidebar in the secondary pane AND fire the collapse request; plain route does not force collapse. - E2E (tests/e2e/sidebar-takeover.spec.ts): rail + secondary pane coexist on /<prefix>/company/settings and an explicit expanded pin overrides the route-driven collapse. - Plugin docs (SPEC, authoring guide, SDK README): routeSidebar now coexists with a collapsed app rail and plugins must not mount RequestCollapsedSidebar. Note: Layout.tsx/Layout.test.tsx in this shared worktree also carry concurrent PAP-10676 peek-suppression refinements that were interleaved with these edits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>