dev@bfd:~/dev-diary$ git show 2026-02
commit 2026-02-19-stabilize-launch-and-autosave
Author: MJ
Date: Feb 19, 2026

2026-02-19 - Stabilize launch and autosave behavior

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 (Clear and Export 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 dist could 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.