Add Presto companion display to architecture overview. Document collection API cover sizes (cover, thumb/480px, mini/150px, micro/40px). Update PubSub topic table and LiveView conventions for handle_params subscription management. Bump Node.js version from 25 to 26 in production infrastructure.
Subscription management was only done in mount/3, meaning
navigating to a different record via handle_params/3 left the
old subscription active. A background update for the old record
would then overwrite the currently displayed record.
Fix: manage subscriptions in handle_params/3 (unsubscribe old,
subscribe new) via shared RecordActions.manage_subscription/2,
and guard handle_info({:update,...}) against mismatched IDs.
- Fix tuple touch normalization when pressed state is falsy
- Reconnect WiFi before retrying failed record loads
- Redraw on wake only after successful reconnect
- Remove unused STATE_ERROR and _visible_count state
- Remove ignored row-bottom return from record row drawing
- Share wrapping logic and collapse repeated whitespace
- Align drag threshold handling with scroll redraw delta
- Close jpegdec objects when firmware exposes close()
- Add timeout to wait_for_touch_release()
- Document intentional no-op behavior for record row taps
Always wrap FTS5 query terms in phrase double-quotes instead of
checking a hardcoded list of special characters. Characters like
|, ;, +, #, @ were missing from the list, causing FTS5 syntax
errors (production errors #1 and #1398). Phrase-quoting every term
produces identical results for normal ASCII search (verified via
SQL) while safely handling any character FTS5 chokes on.
Add regression tests for bare special characters and special
characters mixed with normal words.