bug(web): Intermediate directory nodes in buildFileTree receive child leaf paths instead of directory paths
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 88/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
Rechercherichtung
Beginne in packages/web/src/features/git/utils.ts bei buildFileTree, untersuche anschließend packages/web/src/app/(app)/browse/components/fileTreePanel.tsx und den getTree-Endpunkt. Reproduziere das Beispiel mit dem verschachtelten Pfad und überprüfe, dass Knoten für Zwischenverzeichnisse ihre eigenen Verzeichnispfade bereitstellen, einschließlich der korrekten Ordneraufklappung und API-Ausgabe.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the Bug
In packages/web/src/features/git/utils.ts, buildFileTree constructs a nested FileTreeNode hierarchy from a flat list of { type, path } objects.
When creating intermediate directory nodes (lines 68-74), the new node's path property is assigned item.path (the full path of the current leaf file being processed), instead of the path of that directory:
// packages/web/src/features/git/utils.ts:67-75
if (!next) {
next = {
name: part,
path: item.path, // <--- Bug: assigns leaf file's path to intermediate directory node
type: nodeType,
children: [],
};
current.children.push(next);
}
Impact
- Broken Folder State & Expansion in UI: In
packages/web/src/app/(app)/browse/components/fileTreePanel.tsx, folder expand/collapse state is tracked viaopenPaths.has(node.path)and route sync viapathParts.slice(0, i + 1).join('/'). Because directory nodes receive the child file's path instead of their own directory path, clicking folders or deep-linking to nested paths causes folder state tracking and auto-expansion to fail. - Public API Corruption: The
getTreeendpoint (/api/git/tree) returnsFileTreeNodewith corrupted directory paths to API consumers.
Reproduction
const flatList = [
{ type: 'blob', path: 'src/components/buttons/PrimaryButton.tsx' }
];
const tree = buildFileTree(flatList);
const srcDir = tree.children[0];
console.log(srcDir.name); // "src"
console.log(srcDir.path); // Expected "src", but Got "src/components/buttons/PrimaryButton.tsx"
Proposed Fix
Reconstruct the directory node's path using parts.slice(0, i + 1).join('/'):
if (!next) {
next = {
name: part,
path: parts.slice(0, i + 1).join('/'),
type: nodeType,
children: [],
};
current.children.push(next);
}
For intermediate directory levels (i < parts.length - 1), this evaluates to the proper directory path (e.g. "src", "src/components"), and for leaf files (i === parts.length - 1), it matches item.path.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3.9k
- Forks
- 374
- Ø Merge
- 17 Std. 15 Min.
- Gemergte PRs (30 T.)
- 38
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus sourcebot-dev/sourcebot
-
fix(web): multiline highlight ranges are broken / omitted in LightweightCodeHighlighterEvtl. vergeben @riteshvish02 hat das vor 6 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
sourcebot-dev/sourcebot#1698 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[bug] Search result hydration performs duplicate repository lookups within the same chunkEvtl. vergeben @dipeshbabu hat das vor 12 Tagen übernommen. Offenbug triage needed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
sourcebot-dev/sourcebot#1681 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Linux ctags build instructions in CONTRIBUTING.md are missing build dependenciesEvtl. vergeben @The-AarushiSingh hat das vor 19 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
sourcebot-dev/sourcebot#1633 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Generic Git URL configs keep percent-encoded repo namesEvtl. vergeben @Tyagiquamar hat das vor 19 Tagen übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
sourcebot-dev/sourcebot#1384 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
MCP ask_codebase rejects explicit languageModel: getLanguageModelKey includes displayName which the MCP schema doesn't exposeEvtl. vergeben @pranav718 hat das vor 36 Tagen übernommen. Offenask_sb bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
sourcebot-dev/sourcebot#1137 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in sourcebot-dev/sourcebot
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
platformatic/mcp#208 ·
Maintainer antworten meist innerhalb von 1 Tag
-
🐛 bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
margelo/react-native-vision-camera#4211 ·
Maintainer antworten meist innerhalb von 4 Tagen