Timeline
- (Context) Reviewed Tiny Typer scope against README intent and identified sluggish typing and launch friction.
- (Action) Removed Python bridge persistence and moved note storage to debounced frontend localStorage.
- (Action) Simplified launcher/runtime path by pinning to Python 3.13 and removing Qt fallback branching.
- (Action) Switched packaging flow to onedir PyInstaller output with compression disabled for faster startup.
- (Observation) Launch benchmarks showed better startup behavior on Python 3.13 than Python 3.14 plus Qt fallback.
- (Action) Investigated persistence regression after packaging and traced it to private browsing mode behavior.
- (Action) Enabled persistent webview storage, fixed storage origin consistency, and added close-time save flush events.
- (Observation) Rebuilt executable and confirmed expected autosave behavior and stable launch path.
Context
- Tiny Typer was intended to remain a minimal, fast scratchpad with dark mode, export, and simple persistence.
- Session goal was to reduce over-engineering while preserving the same user-facing style.
- Follow-up testing revealed autosave loss across relaunch despite earlier localStorage migration.
Actions
- Replaced per-keystroke Python IPC/file writes with debounced localStorage saves in the single-page frontend.
- Kept both existing controls (
ClearandExport MD) while simplifying internals. - Added dark startup background configuration in the webview window creation path to reduce white-flash startup.
- Locked runtime to Python 3.13 for stable non-Qt startup and updated launcher/build documentation accordingly.
- Updated PyInstaller configuration to onedir output and disabled UPX to prioritize startup responsiveness.
- Updated build script to remove stale legacy onefile executable artifact before rebuilding.
- Diagnosed autosave loss root cause in packaged runs: webview start defaults used private mode.
- Set webview start to persistent mode with explicit storage path and retained stable localhost port for consistent origin.
- Added
beforeunload,pagehide, and visibility-change persistence flush events to protect against fast-close loss. - Rebuilt the app with the updated spec and validated compilation/build success on the pinned runtime.
Observations
- Frontend-only debounced persistence removed the primary typing sluggishness source from bridge and disk churn.
- Python 3.13 produced smoother startup than the Python 3.14 path that required Qt fallback for stability.
- Packaged persistence failure was not a manual-save issue; it was caused by private-mode storage behavior.
- A stale top-level legacy executable in
distcould mislead manual testing toward outdated behavior.
Open Threads
- Add a small non-intrusive save-state indicator if future troubleshooting requires clearer persistence visibility.
- Consider offering an optional portable onefile build profile alongside the default faster onedir profile.
Boundary Reminder:
Seeds. No maintenance. No roadmap.