Spent this weekend making ScreenMind feel less like a CLI tool and more like something you'd actually want to double-click on.
What changed
Desktop launcher — ScreenMind now has a proper splash screen (tkinter) that shows up while the server loads, then opens your browser to the dashboard. No terminal needed. The shortcut gets auto-created on first run after pip install.
Run at startup — Added cross-platform startup registration. Windows uses the Registry, macOS uses LaunchAgents, Linux uses XDG autostart. Toggle it from Settings or screenmind --install-startup.
Graceful shutdown — Added a "Stop Server" button to the dashboard sidebar. It sends SIGINT so everything shuts down cleanly — DB gets flushed, llama-server gets killed, no orphaned processes. The endpoint is localhost-only.
Bug fixes
analyzer.pywas callingImage.open()directly on encrypted screenshots — they'd fail silently during backfill. Switched toopen_image()wrapper.- Same fix in
analysis_worker.py— encrypted files were being flagged as corrupt. - Capture pause state now persists across restarts. If you paused it, it stays paused.
pythonw.exeon Windows sets stdout/stderr toNone— this crashed uvicorn and half the logging stack. Added devnull redirects and a crash log at~/.screenmind/crash.log.
New CLI flags
screenmind --launch # splash screen + open dashboard
screenmind --install-shortcut # create desktop shortcut
screenmind --install-startup # register at system login
screenmind --uninstall-startup # remove from startup
Notes
- Logo and favicon are now bundled in
screenmind/assets/so they work after pip install, not just in dev. - The launcher uses a lockfile to prevent double-click race conditions (two instances fighting over port 7777).
- Cross-platform: Windows
.lnk, macOS.command, Linux.desktop.
Full Changelog: v0.1.1...v0.1.2