# UI Directory Selection Parity v1 ## 1. Haalbaarheid De huidige advanced selection logica is grotendeels generiek genoeg om ook directories te dragen. Wat al generiek werkt: - `selectedItems` bevat zowel files als directories - `currentRowIndex` is niet typegebonden - `selectionAnchorIndex` is niet typegebonden - `Shift + ArrowUp/ArrowDown` werkt op `visibleItems` en kan daardoor in principe zowel files als directories meenemen - checkbox-toggle gebruikt al `{ path, name, kind }` en werkt daarmee voor beide itemtypes - `Cmd/Ctrl + klik` toggle-logica is ook type-onafhankelijk opgezet Wat expliciet aandacht vraagt: - directorynaam heeft een aparte open-semantiek en moet dus buiten selectieclicks blijven vallen - rij-click en naam-click moeten scherp gescheiden blijven, anders ontstaat onbedoelde navigatie of onbedoelde selectie - parent-entry `..` mag niet in gewone selectie terechtkomen Conclusie: directory selection parity is technisch goed haalbaar binnen het huidige model. Er is geen nieuw state-model nodig. ## 2. Gewenst Gedrag Voor Directories Voor directories moet exact dit gelden: - gewone rij-click op een directory, buiten de naam: - single-select van die directory - checkbox-click op een directory: - toggle selectie van die directory - `Cmd + klik` op Mac / `Ctrl + klik` op niet-Mac op een directoryrij, buiten de naam: - toggle die directory zonder andere selectie te wissen - `Shift + ArrowUp/ArrowDown`: - directories mogen normaal onderdeel zijn van een range - klik op directorynaam: - opent de directory - selecteert niet Dit sluit aan op het bestaande uitgangspunt dat de directorynaam een navigatie-affordance is en de rest van de rij een selectie-affordance. ## 3. Gemengde Selectie Gemengde selectie van files en directories in dezelfde selectie of range is logisch en veilig binnen de huidige UI, mits dezelfde regels blijven gelden: - range-selectie volgt de zichtbare volgorde in de lijst, ongeacht itemtype - `selectedItems` mag dus een mix bevatten van files en directories - vervolgacties bepalen daarna zelf of de selectie geldig is voor die actie Dat past al bij de huidige UI: - delete accepteert gemengde selectie al functioneel volgens backendmogelijkheden - move/copy tonen of blokkeren al op basis van inhoud en scope - rename/view/edit blijven enkel- of typegebonden Conclusie: gemengde selectie is in de huidige UI logisch en hoeft niet apart verboden te worden. ## 4. Regressierisico Belangrijkste risico's: - botsing tussen directorynaam = openen en rij-click = selecteren - modifier-click op of rond de directorynaam die per ongeluk navigeert in plaats van togglet - inconsistentie waarbij file-naam single-select doet, maar directorynaam opent Dit risico is beheersbaar zolang de scheiding expliciet blijft: - directorynaam is alleen navigatie - checkbox is alleen toggle - rij buiten de naam is selectie Het grootste praktische regressierisico zit niet in range-selectie, maar in click-targets binnen de directoryrij. Als event bubbling of target-selectie daar niet scherp genoeg is, voelt directory-selectie inconsistent. ## 5. Aanbeveling Aanbevolen conclusie voor v1: - directory selection parity vraagt waarschijnlijk geen herontwerp - er is waarschijnlijk hooguit een kleine frontend-correctiestap nodig als bij handmatige verificatie blijkt dat modifier-click of row-click rond directorynamen nog niet overal exact hetzelfde aanvoelt als bij files Concreet advies: - eerst handmatig valideren of directoryrijen zich nu al correct gedragen voor: - gewone rij-click - checkbox-toggle - `Cmd/Ctrl + klik` - `Shift + Arrow` range - alleen als daar inconsistentie blijkt, een kleine gerichte frontend-fix doen in `app.js` Kort oordeel: - het huidige model is sterk genoeg voor directory parity - waarschijnlijk is geen grote codewijziging nodig - mogelijk is alleen een kleine frontend-correctiestap nodig rond click-target gedrag