171 lines
5.1 KiB
Markdown
171 lines
5.1 KiB
Markdown
# 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.
|