Files
Trailhead/BRIEF.md
T
David 56ef96026b Initial commit: Folder Bookmark Tray
Windows tray app for bookmarking folders with quick-action buttons
(Explorer, Terminal, Claude, Visual Studio, Redeploy).

Features:
- Tabs containing columns of bookmarks
- Per-row launcher buttons configurable from a header settings panel
- Optional auto-start on Windows login
- In-app confirm dialogs for destructive actions
- Dark theme, frameless tray-anchored popup, pinnable
2026-04-29 09:36:59 -04:00

56 lines
2.9 KiB
Markdown

# Folder Bookmark Tray — initial brief
A Windows system tray app for **bookmarking folder paths** with **quick-action buttons**. Spawned as a sibling of `claude-usage-tray` (`E:\Personal Repo\PersonalProjects\ClaudeTracker`) and intended to look and feel similar.
## What it does
A persistent tray icon. Left-click → popup window listing the user's saved folders. Each saved folder is a row with:
- An **alias** (display name) + the underlying path
- A row of **quick-action buttons**, e.g.:
- **Explorer** — open the folder in File Explorer
- **Terminal** — open a new Windows Terminal / cmd in that directory
- **VS Code** — `code <path>`
- **Claude** — `cmd /K claude` started in that directory (mirrors `launchClaude` in ClaudeTracker)
- **Copy path** — copy the path string to the clipboard
- An **edit/remove** affordance
Right-click tray menu mirrors the action set: each saved folder appears as a submenu with the same actions, plus "Browse for folder…" and "Manage…".
## Look and feel
Match `claude-usage-tray`:
- **Electron + React + Vite** stack (see its `package.json`, `electron/main.js`, `vite.config.mjs`)
- Frameless, non-resizable popup, tray-anchored (~360px wide), dark theme
- Pin-to-keep-open toggle that persists window position (see `popupWindow.on('moved', ...)` debounce in ClaudeTracker)
- Saved-paths persistence via `app.getPath('userData')/config.json` — same pattern ClaudeTracker uses for `savedPaths`
- IPC architecture: `contextBridge` in `preload.js` exposing `window.bookmarks` (or similar), main-process handlers for folder picker, launcher, clipboard, etc.
- NSIS installer via `electron-builder`
## Reference reading (do this before planning)
Skim these in `E:\Personal Repo\PersonalProjects\ClaudeTracker\` to match conventions:
- `README.md` — project layout summary
- `package.json` — scripts (`dev`, `build`, `dist`), electron-builder config
- `electron/main.js` — tray creation, popup window, context-menu structure, `launchClaude`, `pickFolder`, `add-saved-path` / `remove-saved-path` IPC handlers, config read/write helpers
- `electron/preload.js` — contextBridge surface
- `src/styles/index.css` — color tokens, popup chrome, button styles (dark theme baseline)
- `src/components/` — popup layout, list-row composition (especially how ChatList renders detail rows with action buttons)
## Non-goals (v1)
- macOS / Linux support
- Cloud sync of bookmarks
- Tagging / folder grouping
- Drag-to-reorder (nice-to-have, not required v1)
## What I want from you next
Produce a step-by-step plan that:
1. Confirms the directory layout (mirroring ClaudeTracker's structure)
2. Lists the IPC surface with handler signatures
3. Describes the config schema (saved bookmarks shape)
4. Outlines components and their props
5. Calls out anything you want to deviate from ClaudeTracker's patterns and why
Don't write code yet — plan first.