Address all review findings: fix Bouncy spring damping (0.55→0.65),
add BouncyQuick for press feedback, document stagger pattern and
already-animated tracking, add reduced motion support, fix nav
transitions with popEnter/popExit, add disconnect confirmation
dialog as new behavior, and add PulsingPlaceholder component.
FeedViewModel was created at NavGraph scope, so its init block called
refresh() before credentials existed when starting on the setup screen.
Guard the init refresh with an isConfigured check and explicitly trigger
refresh after setup completes.
- 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