Skip to content

Latest commit

 

History

History
75 lines (54 loc) · 2.85 KB

progress.md

File metadata and controls

75 lines (54 loc) · 2.85 KB

Fogelmire — Progress Log

Living document tracking design decisions, milestones, and open work.


Stack

  • Runtime: Electron ^28.0.0 (CommonJS)
  • Main process: src/main.js — BrowserWindow + IPC for filesystem and window controls
  • Preload: src/preload.js — contextBridge exposes a narrow window.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).


Architecture

Main process IPC surface

  • 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.

Renderer layout

  • 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.

Theme

Dark base (#0a0a12) with paired --fire-* (orange) and --ice-* (cyan) gradient accents.


Milestones

v0.1 — Baseline (done)

  • 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.

v0.2 — Tree view (in progress)

  • 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.

Backlog

  • 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).

Decisions

  • Junction-point filtering centralized in main.js to 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).

Changelog

  • 2026-04-27 — Created progress.md. Starting v0.2 tree-view scaffold.