Commit Graph

3 Commits

Author SHA1 Message Date
SkyLiCoder 97e294f1d6 fix: use singleton IndexedDB connection to prevent blocking
Replaced open/close-per-operation pattern with a single persistent
connection held for the app lifetime. This prevents the DB upgrade
(v1→v2) from being blocked by lingering connections, and eliminates
transaction contention.

Also added onblocked handler that surfaces a clear error instead of
hanging indefinitely.
2026-08-01 18:52:12 +08:00
SkyLiCoder a7697fd4a1 fix: pack all frames into single blob for IndexedDB storage
Previously each frame was stored as a separate Blob in the Recording
object, causing IndexedDB to hang when writing 100+ blobs in one
transaction. Now all frames are packed into a single binary blob:
  [4B frameCount][per frame: 4B ts, 4B len, JPEG data]

DB version bumped to 2 (old store deleted on upgrade).
PlaybackPanel unpacks frames on demand with a per-recording cache.
2026-08-01 17:03:47 +08:00
SkyLiCoder 386d8d5852 refactor: flatten project structure, remove ti2026h-web subdirectory 2026-08-01 16:08:44 +08:00