Living document tracking design decisions, milestones, and open work.
- Runtime: Electron
^28.0.0(CommonJS) - Main process:
src/main.js—BrowserWindow+ IPC for filesystem and window controls - Preload:
src/preload.js—contextBridgeexposes a narrowwindow.electronAPI - Renderer: vanilla HTML/CSS/JS in
src/renderer/ - Scripts:
npm start,npm run dev(opens DevTools)
Rationale: Electron is proven for the user, ships cross-platform, and the narrow API surface keeps the renderer sandboxed (contextIsolation: true, nodeIntegration: false).
fs:getDrives— enumerates accessible Windows drive letters A–Z.fs:listDirectory(path)— entries with{name, isDirectory, path, size, mtime}. Filters dotfiles and Windows junction points.fs:getFolderChildren(path)— folders only (used by tree view).fs:getFilePreview(path)— base64 image data URLs (png/jpg/jpeg/gif/bmp/webp/svg).fs:getFileContent(path)— text preview with a 1 MB size guard.window:minimize/window:maximize/window:close.
- Custom frameless title bar (draggable) with min/max/close.
- Drive bar across the top.
- Content area: tree view (left) | file list (center) | details/preview (right), with draggable resizers.
Dark base (#0a0a12) with paired --fire-* (orange) and --ice-* (cyan) gradient accents.
- Frameless Electron shell with custom window controls.
- Drive bar + single-pane file list with sort (folders first),
..parent row. - Right panel: metadata + image/text preview (1 MB guard).
- Keyboard nav (arrows, Enter, Backspace) and mouse side buttons (back/forward history).
- Resizable splitter between list and right panel.
- Left-side collapsible folder tree, lazy-loaded via
fs:getFolderChildren. - Tree selection drives the file list; file list dblclick still navigates.
- Tree expands to current path on navigation.
- Resizer between tree and file list.
- Address bar / editable breadcrumb.
- Context menu (open, copy path, delete, rename).
- Search / filter within the current folder.
- Multi-select + drag-and-drop.
- Persisted window size and split positions.
- Icon set (replace emoji + abbr badges).
- Tests (smoke + IPC contracts).
- Junction-point filtering centralized in
main.jsto avoid duplicate logic per IPC handler. - Stat per entry in
listDirectory— accepted cost for accurate size/mtime; revisit if large directories lag. - No framework in the renderer yet; reassess when state complexity grows (tree + list + selection + history).
- 2026-04-27 — Created
progress.md. Starting v0.2 tree-view scaffold.