-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture Overview
Portable scratchpad + prompt workbench. Python 3.11+, PyQt6. SQLite WAL persistence. Zero-install Nuitka EXE. Summon via Alt+X global hotkey, write, close — state persists instantly.
+------------------------------------------------------------------+
| FastPrompter UI (PyQt6) |
| +------------------+ +--------------------+ +---------------+ |
| | SnippetPanel | | VaultTextEdit | | QueuePanel | |
| | (F1-F10 Silos) | | (Markdown + Mixins)| | (Watcher Q) | |
| +------------------+ +--------------------+ +---------------+ |
+----------------------------+-------------------------------------+
| events / state sync
v
+------------------------------------------------------------------+
| FastPrompterState (core) |
| SQLite WAL DB — silos, snippets, settings, themes, queues |
| In-memory cache + undo stack + per-silo state (cursor/scroll) |
+------------------------------------------------------------------+
| | | | |
v v v v v
+--------+ +---------+ +--------+ +---------+ +-----------+
|Hotkeys | | IPC | | Sound | | Watcher | | File |
|(pynput)| |(QLocal) | |Manager | |Engine | | Container |
+--------+ +---------+ +--------+ +---------+ +-----------+
Entry point. QApplication init, single-instance IPC check (QLocalServer), DB connect, global exception hooks, UI window build, system tray, hotkey registration. All mixins compose onto FastPrompter (QMainWindow):
- FormattingMixin — markdown shortcuts (bold, italic, list, code)
- HotkeyMixin — shortcut binding interface
- ScalingMixin — DPI/font scaling
- SearchMixin — multi-word AND search
- SendSelectionMixin — send text via watcher
- SnippetOpsMixin — silo ops (trash, duplicate, reorder, clear)
- ThemeMixin — app stylesheet, 6 retro Win95 themes + custom
- TrayMixin — systray icon + menu
- WatcherMixin — watcher engine integration
- WindowMixin — frameless window, snapping, borderless
QLocalServer on named pipe FastPrompter_Server_V15. Second instance sends SHOW command → existing instance brings its window forward. UUID token in %TEMP%/fastprompter_ipc.token for auth. No more silent no-op on crash (server.removeServer recovers stale socket names).
SQLite DB (data/local_data_v15.db) with WAL + synchronous=NORMAL. Key tables: presets (snippets), settings (k/v), temp_presets_v2 (silo text), archive_temp_presets_v2 (archived silos).
Auto-backup on startup (full DB copy to .bak). Throttled incremental backup every 60s. Per-category data stores: silo_colors_all, pinned_silos_all, silo_ticked_all, silo_children_all, silo_gaps_all, silo_project_paths_all, etc. All aliased to flat keys (temp_presets) for active category.
Two-layer: (1) pynput global listener thread for summon/emergency quit; (2) PyQt6 QShortcut for window-local bindings. HotkeyFilter (Win32 WH_KEYBOARD_LL) intercepts physical VK codes — layout-independent. Works on QWERTY, JCUKEN, AZERTY, QWERTZ.
VaultTextEdit extends QPlainTextEdit. Features:
- MarkdownHighlighter — live syntax (headings, bold, italic, code fences, checkboxes, links, images)
- Line gutter — numbers, fold arrows (▾), code-fence copy button
- Section fold — click collapse on header blocks
- Collapsible images —
renders as 150px clickable pill - Drop overlay — 4-option drop target (insert text, insert link, copy file, shortcut)
- Margin marks — line-level pins, ticks, queue anchors, heatmap
- Hide markup mode — toggle
**bold**→bold(T-603)
Up to 100 silos per project tab. Features:
- Pins (📌) — anchor to top
- Ticks (✅) — completion marker
- Hierarchy — drag onto another silo to nest (max depth 2)
- Recency heatmap — warm tint on recently edited
- Sidebar gaps — user-defined spacers (Ctrl+drag to move)
- Multi-select — Shift=range, Ctrl=toggle, batch ops
- File containers — per-silo disk folder (
data/silo_files/<cat>/<idx>/) - Kanban (Alt+arrows move cards) + Table builder (Tab walk cells) — T-630
Prompt drainage + target automation. Finite state machine: DISARMED → ARMED → WATCHING → SENDING. Chrome CDP (Electron apps) + Win32 window probes. Queue pinning per target. Rate limits: settle_ms=2500, min_gap_ms=4000, max_sends=25, max_failures=3.
Frameless window, Win95 dark-gold aesthetic. Ctrl+Q cycles snap positions (7 zones + FancyZone picker + user presets). 3-stage Ctrl+D: Zen (minimal editor), Solo (minimise other windows), back. Overflow menu (») collects hidden buttons in ultra-narrow mode (<700px). Header density tiers auto-adjust (dense <1280px, ultra <700px).
Countdown timers with color-coded urgency, snooze, toast notifications (Win95 3D bevels). Pomodoro work/break state machine.
Multi-layer: (1) SQLite WAL — crash-safe writes; (2) .bak on startup + every 60s; (3) daily Markdown mirror to ~/Documents/.fastprompter/ (silos + snippets + archive per project); (4) portable backup ZIP builder.
FastPrompter Wiki — Built with SAIPEN Protocol | GitHub Repo