From f2aa5148459c02e192256413c44a399725b1e163 Mon Sep 17 00:00:00 2001 From: Hibryda Date: Sun, 8 Mar 2026 02:32:00 +0100 Subject: [PATCH] feat(v3): project-level tabs + clean AgentPane + ProjectHeader info bar - ProjectBox: Claude|Files|Context tab bar switching content area - ProjectFiles.svelte: project-scoped markdown file viewer - ProjectHeader: CWD (ellipsized from start) + profile as info text - AgentPane: removed DIR/ACC toolbar, CWD+profile now props from parent - ClaudeSession: passes project.profile to AgentPane --- v2/src/lib/components/Agent/AgentPane.svelte | 108 +------------- .../components/Workspace/ClaudeSession.svelte | 1 + .../components/Workspace/ProjectBox.svelte | 84 ++++++++++- .../components/Workspace/ProjectFiles.svelte | 141 ++++++++++++++++++ .../components/Workspace/ProjectHeader.svelte | 78 +++++++++- 5 files changed, 297 insertions(+), 115 deletions(-) create mode 100644 v2/src/lib/components/Workspace/ProjectFiles.svelte diff --git a/v2/src/lib/components/Agent/AgentPane.svelte b/v2/src/lib/components/Agent/AgentPane.svelte index a36b98d..4f1c0f3 100644 --- a/v2/src/lib/components/Agent/AgentPane.svelte +++ b/v2/src/lib/components/Agent/AgentPane.svelte @@ -29,10 +29,11 @@ sessionId: string; prompt?: string; cwd?: string; + profile?: string; onExit?: () => void; } - let { sessionId, prompt: initialPrompt = '', cwd: initialCwd, onExit }: Props = $props(); + let { sessionId, prompt: initialPrompt = '', cwd: initialCwd, profile: profileName, onExit }: Props = $props(); let session = $derived(getAgentSession(sessionId)); let inputPrompt = $state(initialPrompt); @@ -45,13 +46,8 @@ let childSessions = $derived(session ? getChildSessions(session.id) : []); let totalCost = $derived(session && childSessions.length > 0 ? getTotalCost(session.id) : null); - // Working directory - let cwdInput = $state(initialCwd ?? ''); - let showCwdPicker = $state(false); - - // Profile selector + // Profile list (for resolving profileName to config_dir) let profiles = $state([]); - let selectedProfile = $state(''); // Skill autocomplete let skills = $state([]); @@ -119,11 +115,11 @@ updateAgentStatus(sessionId, 'starting'); } - const profile = profiles.find(p => p.name === selectedProfile); + const profile = profileName ? profiles.find(p => p.name === profileName) : undefined; await queryAgent({ session_id: sessionId, prompt: text, - cwd: cwdInput || undefined, + cwd: initialCwd || undefined, max_turns: 50, resume_session_id: resumeId, setting_sources: ['user', 'project'], @@ -224,37 +220,6 @@
{#if !session || session.messages.length === 0}
-
-
- - {#if profiles.length > 1} - - {/if} -
-