Adds real video playback to the bskyembed iframe embed system:
- Lazy-load the video player using preact/compat lazy/Suspense so hls.js
and all player code are in a separate chunk, keeping the default bundle small
- Full video controls: play/pause, scrubber, volume, fullscreen, time display
- HLS.js integration with bandwidth estimation and error handling
- GIF presentation support with simplified controls
- Thumbnail + play button shown until user clicks to activate the player
- Ported patterns from the main app's web video player, adapted for
Preact + Tailwind (no React Native, no ALF, no Lingui)
https://claude.ai/code/session_01Mva57VZnFgdaQ7LPPoVNsP
* show composer error if draft over char limit
* adjust cancel discarding if over the limit
* use richtext for validation
* don't allow saving a draft that can't actually be saved
* account for 1k chars
* update discard sheet
* show composer error if draft over char limit
* adjust cancel discarding if over the limit
* use richtext for validation
* don't allow saving a draft that can't actually be saved
* account for 1k chars
* update discard sheet
* pr comment fixes
* pluralization
Sets the "What to test" field in TestFlight to distinguish between
TestFlight and Production builds.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Fix text input not updating
* Fix autofocus
* make placeholder text fainter
* Await invalidation
* Image only drafts
* tweaks to gif presentation
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Add encouragement message to drafts list
Shows "So many thoughts, you should post one" at the bottom of the drafts list when user has more than 5 drafts.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Use Text component and center-align encouragement message
- Switch from ButtonText to Text component for better styling
- Add text-center alignment to the message
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>