Error when changing directory case sensitivity on windows (double check mac / linux as well)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- devtools, operating-systems
Direzione di ricerca
Start by tracing the rename flow in compositeFileSystemAdapter.ts:282-289 and IDEContext.tsx:293, then inspect the FileSystemAccessAPIFileSystem.ts cache and pathUtils.ts. Reproduce a case-only folder rename with files on Windows, and check macOS/Linux as requested. Done means the rename preserves all files and avoids self-copy behavior across the listed platforms.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Silent Data Loss: Files Deleted When Renaming Folder with Case Changes on Windows
Problem
When renaming a folder by only changing the case (e.g., myfolder → MyFolder), all files inside are silently deleted on Windows. The browser UI shows success, but checking the local filesystem reveals all files are gone.
⚠️ CRITICAL: This causes permanent data loss.
Steps to Reproduce
- Create a folder (e.g.,
testfolder) with files inside - Right-click the folder in the file explorer
- Rename by changing case only (e.g.,
testfolder→TestFolder) - Operation appears successful in browser
- Check local filesystem - files are deleted
Root Cause
JavaScript uses case-sensitive path comparisons, but Windows filesystem is case-insensitive:
if (oldPath === newPath)returns false for/myfoldervs/MyFolder- Current rename operation: create → copy → delete
- On Windows, both paths point to the same directory
- Results in directory self-copy, corrupting/deleting files
Affected code: compositeFileSystemAdapter.ts:282-289, IDEContext.tsx:293, FileSystemAccessAPIFileSystem.ts cache
Expected Behavior
Folder rename should preserve all files, regardless of case changes, on all platforms (Windows/macOS/Linux).
Proposed Fix
Two-step rename using temporary intermediate name:
/myfolder → /myfolder_temp_12345 → /MyFolder
This prevents self-copy and maintains data integrity.
Affected Components
- Composite File System (
FileSystemAccessAPIFileSystem.ts) - File system adapter (
compositeFileSystemAdapter.ts) - IDE Context (
IDEContext.tsx) - Path utilities (
pathUtils.ts)
- Lingua principale
- TypeScript
- Stelle
- 1
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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 jcollard/LuaInTheWeb
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
jcollard/LuaInTheWeb#752 ·
-
tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
jcollard/LuaInTheWeb#690 ·
-
tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
jcollard/LuaInTheWeb#590 ·
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
jcollard/LuaInTheWeb#518 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
jcollard/LuaInTheWeb#235 ·
Tutte le issue di jcollard/LuaInTheWeb
Issue simili
-
Contrib indemnité de départ à la retraite : faire le pont avec le simulateur sur la page génériqueApertaP1
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
SocialGouv/code-du-travail-numerique#7561 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kubernetes-sigs/headlamp#7950 ·
I maintainer di solito rispondono entro 3 giorni
-
README for cliForse già presa @Janvi-kapoor l’ha presa oggi. ApertaOSCI'26
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
GauravKarakoti/SecureFlow#1308 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
vitest-dev/vitest#11577 ·
I maintainer di solito rispondono entro 1 giorno