feat(KB-175): move file browser to header with workspace support

- Add workspace file APIs and hooks for session-scoped file browsing
- Create WorkspaceSelector component for switching between workspaces
- Update FileBrowserModal with workspace mode and improved UX
- Add files button to header with workspace-aware file browsing
- Add session files indicator to task cards for quick file access
- Include comprehensive tests for all new components and hooks
This commit is contained in:
gsxdsm
2026-03-31 01:26:57 -07:00
parent 18c4f0cb25
commit 9e03c47b91
30 changed files with 1779 additions and 829 deletions

View File

@@ -25,7 +25,8 @@ interface HeaderProps {
onOpenSchedules?: () => void;
onOpenGitManager?: () => void;
onToggleTerminal?: () => void;
onToggleFiles?: () => void;
/** Opens the top-level workspace-aware file browser modal. */
onOpenFiles?: () => void;
filesOpen?: boolean;
globalPaused?: boolean;
enginePaused?: boolean;
@@ -63,7 +64,7 @@ export function Header({
onOpenSchedules,
onOpenGitManager,
onToggleTerminal,
onToggleFiles,
onOpenFiles,
filesOpen,
globalPaused,
enginePaused,
@@ -293,11 +294,11 @@ export function Header({
)}
{/* Files button - desktop only */}
{!isMobile && onToggleFiles && (
{!isMobile && onOpenFiles && (
<button
className={`btn-icon${filesOpen ? " btn-icon--active" : ""}`}
onClick={onToggleFiles}
title="Browse Files"
onClick={onOpenFiles}
title="Browse files"
data-testid="files-toggle-btn"
>
<Folder size={16} />
@@ -376,10 +377,10 @@ export function Header({
<span>Open Terminal</span>
</button>
{/* Files - in overflow on mobile */}
{onToggleFiles && (
{onOpenFiles && (
<button
className="mobile-overflow-item"
onClick={() => handleOverflowAction(onToggleFiles)}
onClick={() => handleOverflowAction(onOpenFiles)}
role="menuitem"
data-testid="overflow-files-btn"
>