feat: CMD-ENTER file info toegevoegd
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# File Info v1 Design
|
||||
|
||||
## 1. Doel
|
||||
File info voegt nu waarde toe omdat de huidige UI sterk gericht is op navigatie en acties, maar nog weinig context geeft over het geselecteerde item zelf. Een compacte read-only infomodal helpt bij controle vóór rename/move/delete, bij het onderscheiden van vergelijkbare items, en bij snelle inspectie van een directory of bestand zonder de workspace te verlaten.
|
||||
|
||||
Dit past goed binnen de dual-pane workflow zolang het een lichte, tijdelijke overlay blijft en geen extra paneel of blijvende schermruimte vraagt.
|
||||
|
||||
## 2. Startgedrag
|
||||
Aanbevolen v1-gedrag:
|
||||
- Mac: `Cmd+Enter`
|
||||
- Windows/Linux: `Ctrl+Enter`
|
||||
- Alleen actief bij exact 1 geselecteerd item
|
||||
- Geen extra zichtbare knop in topbar of functiebalk in v1
|
||||
|
||||
Reden:
|
||||
- De interface blijft rustig
|
||||
- De feature blijft beschikbaar voor power users
|
||||
- Het voorkomt nieuwe visuele drukte in de bestaande workspace
|
||||
|
||||
Latere uitbreiding:
|
||||
- Een functiebalkknop zoals `Info` of `F9` kan later logisch zijn, maar hoort niet in deze slice
|
||||
|
||||
## 3. Scope
|
||||
In scope voor v1:
|
||||
- Exact 1 file
|
||||
- Exact 1 directory
|
||||
- Read-only modal
|
||||
- Geen acties vanuit de modal
|
||||
- Geen thumbnails
|
||||
- Geen preview, edit of playback in deze modal
|
||||
|
||||
Niet in scope:
|
||||
- Multi-select info
|
||||
- Bestandsinhoud tonen
|
||||
- Directory tree analyse
|
||||
- Checksums/hashes
|
||||
- ACL/permissions-editor
|
||||
|
||||
## 4. Minimale informatievelden
|
||||
Aanbevolen minimale velden in v1:
|
||||
- `name`
|
||||
- `path`
|
||||
- `type`
|
||||
- `size`
|
||||
- `modified`
|
||||
- `root`
|
||||
- `extension` voor files waar zinvol
|
||||
- `content_type` voor files waar zinvol
|
||||
- `owner`
|
||||
- `group`
|
||||
|
||||
Toelichting:
|
||||
- `name`, `path`, `type`, `modified` en `root` zijn bijna altijd nuttig
|
||||
- `size` is nuttig voor files; voor directories alleen als veilig/goedkoop beschikbaar
|
||||
- `extension` is nuttig voor file-context
|
||||
- `content_type` is nuttig als lichte afgeleide metadata, niet als zware contentanalyse
|
||||
- `owner/group` is nuttig voor troubleshooting op mounted storage
|
||||
|
||||
## 5. Directory-info
|
||||
Veilige v1-richting voor directories:
|
||||
- Toon:
|
||||
- naam
|
||||
- pad
|
||||
- type = directory
|
||||
- modified time
|
||||
- root/context
|
||||
- owner/group indien beschikbaar
|
||||
- Toon niet standaard:
|
||||
- recursieve grootte
|
||||
- totale child count via diepe scan
|
||||
|
||||
Aanbeveling:
|
||||
- Geen recursieve directorygrootte in v1
|
||||
- Geen child count tenzij die goedkoop via directe listing kan worden opgehaald en duidelijk als shallow count wordt gelabeld
|
||||
|
||||
Motivatie:
|
||||
- Grote trees kunnen duur zijn
|
||||
- Dit verhoogt regressierisico en latentie zonder kernwaarde voor v1
|
||||
|
||||
## 6. Backend-impact
|
||||
Aanbevolen backendrichting:
|
||||
- Nieuw read-only endpoint, bijvoorbeeld:
|
||||
- `GET /api/files/info?path=...`
|
||||
|
||||
Herbruik bestaande infrastructuur:
|
||||
- `path_guard` voor alle padvalidatie
|
||||
- bestaande whitelist/root containment
|
||||
- bestaande not-found/type/security foutmapping
|
||||
- bestaande filesystem-adapter voor `stat`-achtige metadata
|
||||
|
||||
Veiligheidsmodel:
|
||||
- Alleen metadata lezen
|
||||
- Geen filesystem-mutatie
|
||||
- Geen directory traversal buiten whitelist
|
||||
- Geen volgen van escapes buiten toegestane roots
|
||||
|
||||
Waarschijnlijk benodigde backendvelden in response:
|
||||
- `name`
|
||||
- `path`
|
||||
- `type`
|
||||
- `size`
|
||||
- `modified`
|
||||
- `root`
|
||||
- `extension`
|
||||
- `content_type`
|
||||
- `owner`
|
||||
- `group`
|
||||
|
||||
## 7. Frontend-impact
|
||||
Aanbevolen UI-richting:
|
||||
- Aparte info-modal
|
||||
- Geen hergebruik van de tekst-viewer of edit-modal
|
||||
- Zelfde lichte modalstructuur als bestaande modals, voor consistentie
|
||||
|
||||
Gedrag:
|
||||
- Open via `Cmd+Enter` of `Ctrl+Enter`
|
||||
- Sluiten via `X` en `Escape`
|
||||
- Terwijl modal open is, geen paneelkeyboardnavigatie
|
||||
- Geen interferentie met gewone `Enter`
|
||||
|
||||
Samenwerking met bestaande openflows:
|
||||
- Gewoon `Enter` blijft directory openen en video openen waar nu al afgesproken
|
||||
- `Cmd/Ctrl+Enter` wordt exclusief voor File Info
|
||||
- Daardoor blijft bestaand open-gedrag intact
|
||||
|
||||
## 8. Regressierisico
|
||||
Belangrijkste risico's:
|
||||
- Keyboardconflict met bestaand `Enter`
|
||||
- Focusconflict met bestaande modals
|
||||
- Onbedoeld openen bij multi-select of lege selectie
|
||||
- Verwarring met bestaande view/edit/video flows
|
||||
|
||||
Laag-risico aanpak:
|
||||
- Alleen reageren bij exact 1 selectie
|
||||
- Alleen `Cmd/Ctrl+Enter`, niet gewone `Enter`
|
||||
- Eigen modal-open check in de globale keyboard handler
|
||||
- Geen wijziging aan bestaande browse/selectie/open-directory logica
|
||||
|
||||
## 9. Teststrategie
|
||||
Backend golden tests:
|
||||
- file info success
|
||||
- directory info success
|
||||
- path not found
|
||||
- traversal blocked
|
||||
- invalid root alias
|
||||
- file/directory response shape
|
||||
|
||||
UI smoke/regressietests:
|
||||
- info-modal container aanwezig
|
||||
- keyboard wiring voor `Cmd/Ctrl+Enter` aanwezig
|
||||
- geen extra zichtbare knop toegevoegd in functiebalk/topbar
|
||||
|
||||
Handmatige validatie:
|
||||
- Exact 1 file geselecteerd -> info opent
|
||||
- Exact 1 directory geselecteerd -> info opent
|
||||
- Multi-select -> niets doen
|
||||
- Lege selectie -> niets doen
|
||||
- `Escape` sluit modal
|
||||
- Gewone `Enter` blijft bestaande open-semantiek houden
|
||||
|
||||
## 10. Aanbeveling
|
||||
Aanbevolen v1-richting met laag regressierisico:
|
||||
- Nieuw read-only endpoint `GET /api/files/info?path=...`
|
||||
- Aparte compacte info-modal
|
||||
- Alleen openen via `Cmd+Enter` op Mac en `Ctrl+Enter` op Windows/Linux
|
||||
- Alleen bij exact 1 geselecteerd item
|
||||
- Directory-info beperkt houden tot goedkope metadata
|
||||
- Geen zichtbare extra knop in deze fase
|
||||
|
||||
Dit levert een bruikbare infofunctie op zonder de huidige dual-pane workflow, keyboardflow of bestaande modals onnodig te verstoren.
|
||||
Reference in New Issue
Block a user