Skip to content

Commit b4f3ed7

Browse files
committed
feat(symlink): use PathSelector for symlink directory selection
Replace checkbox-based SymlinkDirPicker with PathSelector in the new-task dialog. Symlink dirs now come from project defaults (defaultSymlinkDirs) instead of a hardcoded candidate list.
1 parent 1a07371 commit b4f3ed7

2 files changed

Lines changed: 16 additions & 102 deletions

File tree

src/components/NewTaskDialog.tsx

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
getProjectPath,
1313
getProjectBranchPrefix,
1414
updateProject,
15+
getProjectDefaultSymlinkDirs,
1516
hasDirectModeTask,
1617
getGitHubDropDefaults,
1718
setPrefillPrompt,
@@ -23,7 +24,7 @@ import { theme } from '../lib/theme';
2324
import { AgentSelector } from './AgentSelector';
2425
import { BranchPrefixField } from './BranchPrefixField';
2526
import { ProjectSelect } from './ProjectSelect';
26-
import { SymlinkDirPicker } from './SymlinkDirPicker';
27+
import { PathSelector } from './PathSelector';
2728
import type { AgentDef } from '../ipc/types';
2829

2930
interface NewTaskDialogProps {
@@ -38,8 +39,7 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
3839
const [selectedProjectId, setSelectedProjectId] = createSignal<string | null>(null);
3940
const [error, setError] = createSignal('');
4041
const [loading, setLoading] = createSignal(false);
41-
const [ignoredDirs, setIgnoredDirs] = createSignal<string[]>([]);
42-
const [selectedDirs, setSelectedDirs] = createSignal<Set<string>>(new Set());
42+
const [symlinkDirs, setSymlinkDirs] = createSignal<string[]>([]);
4343
const [directMode, setDirectMode] = createSignal(false);
4444
const [skipPermissions, setSkipPermissions] = createSignal(false);
4545
const [branchPrefix, setBranchPrefix] = createSignal('');
@@ -158,34 +158,18 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
158158
});
159159
});
160160

161-
// Fetch gitignored dirs when project changes
161+
// Load symlink dirs from project defaults
162162
createEffect(() => {
163163
const pid = selectedProjectId();
164-
const path = pid ? getProjectPath(pid) : undefined;
165-
let cancelled = false;
164+
const projectPath = pid ? getProjectPath(pid) : undefined;
166165

167-
if (!path) {
168-
setIgnoredDirs([]);
169-
setSelectedDirs(new Set<string>());
166+
if (!projectPath) {
167+
setSymlinkDirs([]);
170168
return;
171169
}
172170

173-
void (async () => {
174-
try {
175-
const dirs = await invoke<string[]>(IPC.GetGitignoredDirs, { projectRoot: path });
176-
if (cancelled) return;
177-
setIgnoredDirs(dirs);
178-
setSelectedDirs(new Set(dirs)); // all checked by default
179-
} catch {
180-
if (cancelled) return;
181-
setIgnoredDirs([]);
182-
setSelectedDirs(new Set<string>());
183-
}
184-
})();
185-
186-
onCleanup(() => {
187-
cancelled = true;
188-
});
171+
const defaults = pid ? getProjectDefaultSymlinkDirs(pid) : undefined;
172+
setSymlinkDirs(defaults ? [...defaults] : []);
189173
});
190174

191175
// Sync branch prefix when project changes
@@ -302,7 +286,7 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
302286
name: n,
303287
agentDef: agent,
304288
projectId,
305-
symlinkDirs: [...selectedDirs()],
289+
symlinkDirs: [...symlinkDirs()],
306290
initialPrompt: isFromDrop ? undefined : p,
307291
branchPrefixOverride: prefix,
308292
githubUrl: ghUrl,
@@ -589,16 +573,12 @@ export function NewTaskDialog(props: NewTaskDialogProps) {
589573
</div>
590574
</Show>
591575

592-
<Show when={ignoredDirs().length > 0 && !directMode()}>
593-
<SymlinkDirPicker
594-
dirs={ignoredDirs()}
595-
selectedDirs={selectedDirs()}
596-
onToggle={(dir) => {
597-
const next = new Set(selectedDirs());
598-
if (next.has(dir)) next.delete(dir);
599-
else next.add(dir);
600-
setSelectedDirs(next);
601-
}}
576+
<Show when={!directMode()}>
577+
<PathSelector
578+
dirs={symlinkDirs()}
579+
projectRoot={selectedProjectPath()}
580+
onAdd={(dir) => setSymlinkDirs([...symlinkDirs(), dir])}
581+
onRemove={(i) => setSymlinkDirs(symlinkDirs().filter((_, idx) => idx !== i))}
602582
/>
603583
</Show>
604584

src/components/SymlinkDirPicker.tsx

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)