- Add Media3 ExoPlayer dependencies (media3-exoplayer, media3-ui 1.2.1)
- Extend FeedPost with videoUrl and audioUrl fields
- Parse video/audio card URLs from mobiledoc JSON in FeedViewModel
- Map LocalPost video/audio URIs to FeedPost in toFeedPost()
- Create VideoPlayer composable: ExoPlayer in AndroidView, play button overlay, tap to play
- Create AudioPlayer composable: play/pause button, progress slider, duration text
- Integrate compact VideoPlayer and AudioPlayer in FeedScreen post cards
- Integrate full-size VideoPlayer and AudioPlayer in DetailScreen with reveal animations
- Load video/audio URIs when editing a post in ComposerViewModel
- Move inputs/button to bottom of screen for easier thumb access
- Add full-screen animated radial pulse background (3 circles with independent animations)
- Add contextual hint linking to Ghost integrations page when URL is entered
- Add pull-to-refresh and connection error handling to feed screen
- Add CLAUDE.md and restore gradle wrapper
Full Kotlin/Jetpack Compose app for personal microblogging against a Ghost instance.
- Setup screen with Ghost URL + Admin API key (EncryptedSharedPreferences)
- Twitter/Mastodon-style feed with pull-to-refresh and infinite scroll
- Composer with image attach, link preview (OpenGraph), publish/draft/schedule
- Post detail view with edit and delete actions
- Ghost Admin API JWT auth (HS256, key splitting, 5-min expiry)
- Offline queue with Room DB and WorkManager for connectivity-aware uploads
- Material 3 theming with dynamic color support
- Settings screen for reconfiguring instance credentials
https://claude.ai/code/session_01CpMtDAEfMd14A8MQubMppS