bug(web): Intermediate directory nodes in buildFileTree receive child leaf paths instead of directory paths
I maintainer di solito rispondono entro 1 giorno
@itsmunzir ci sta già lavorando.
Dal 8/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
Direzione di ricerca
Inizia in packages/web/src/features/git/utils.ts, in buildFileTree, quindi esamina packages/web/src/app/(app)/browse/components/fileTreePanel.tsx e l’endpoint getTree. Riproduci l’esempio di percorso annidato e verifica che i nodi delle directory intermedie espongano i propri percorsi di directory, inclusi l’espansione corretta delle cartelle e l’output dell’API.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- TypeScript
- Stelle
- 3.9k
- Fork
- 374
- Merge medio
- 2g 13h
- PR unite (30g)
- 48
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sourcebot-dev/sourcebot
-
[bug] Search result hydration performs duplicate repository lookups within the same chunkForse già presa @dipeshbabu l’ha presa 16 giorni fa. Apertabug triage needed
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
sourcebot-dev/sourcebot#1681 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Linux ctags build instructions in CONTRIBUTING.md are missing build dependenciesForse già presa @The-AarushiSingh l’ha presa 22 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
sourcebot-dev/sourcebot#1633 ·
I maintainer di solito rispondono entro 1 giorno
-
MCP ask_codebase rejects explicit languageModel: getLanguageModelKey includes displayName which the MCP schema doesn't exposeForse già presa @pranav718 l’ha presa 40 giorni fa. Apertaask_sb bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
sourcebot-dev/sourcebot#1137 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[FR] Support file-based and Azure Key Vault token sources alongside env and googleCloudSecretForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 64/100
sourcebot-dev/sourcebot#1704 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[bug] Local repositories with a space or non-ASCII character in the path cannot be indexedForse già presa @breken-ai l’ha presa 13 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
sourcebot-dev/sourcebot#1689 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di sourcebot-dev/sourcebot
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
yjh051108/dsh-routing-suite#216 ·
-
kind/bug priority/needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Dependencies view: `getParent` loops forever on untitled documents, extension host runs out of memoryForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 66/100
apache/fineract-consumer-facing#175 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 82/100
awslabs/visual-asset-management-system#413 ·
I maintainer di solito rispondono entro 1 giorno