mobile bluesky app made with flutter lazurite.stormlightlabs.org/
mobile bluesky flutter
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 412 lines 11 kB view raw view rendered
1--- 2title: Smoke Test Checklist 3updated: 2026-04-01 4--- 5 6A manual walkthrough to verify core functionality after a build. Each section covers a 7feature area with steps and expected outcomes. 8Test on both iOS and Android unless noted otherwise. 9 10--- 11 12## 1. Authentication 13 14### OAuth Login 15 16- [ ] Launch app → Login screen appears 17- [ ] Enter a valid handle and tap "Sign in with BlueSky" 18- [ ] System browser opens → complete OAuth flow 19- [ ] Redirected back to app → Home feed loads 20 21### App Password Login (Debug only) 22 23- [ ] Toggle to app-password mode 24- [ ] Enter handle + app password (xxxx-xxxx-xxxx-xxxx) 25- [ ] Tap sign in → Home feed loads 26 27### Session Restore 28 29- [ ] Kill and relaunch app → session restores without login prompt 30- [ ] Token refresh works silently (wait for expiry or force) 31 32### Logout 33 34- [ ] Log out from settings → returns to login screen 35- [ ] Relaunching app shows login screen (session cleared) 36 37--- 38 39## 2. Home Feed 40 41### Feed Loading 42 43- [ ] Following feed loads with posts on launch 44- [ ] Pull-to-refresh fetches new posts 45- [ ] Scroll down → infinite pagination loads more posts 46 47### Post Cards 48 49- [ ] Posts display: avatar, name, handle, relative timestamp 50- [ ] Rich text renders correctly (mentions, links, hashtags highlighted) 51- [ ] Image embeds display (single + multi-image grids) 52- [ ] Video embeds display with thumbnail 53- [ ] Link card embeds render (title, description, thumbnail) 54- [ ] Quote posts render inline 55- [ ] Engagement counts shown (likes, reposts, replies) 56 57### Post Actions 58 59- [ ] Tap like → icon fills, count increments (optimistic) 60- [ ] Tap like again → unlike, count decrements 61- [ ] Tap repost → menu: "Repost" and "Quote Post" 62- [ ] Repost → count increments 63- [ ] Tap reply → compose modal opens with reply context 64- [ ] Tap share → system share sheet 65- [ ] Overflow → Save post (bookmark icon fills) 66- [ ] Overflow → Copy link 67 68### Navigation from Feed 69 70- [ ] Tap post body → thread view opens 71- [ ] Tap avatar or name → profile screen opens 72 73--- 74 75## 3. Feed Management 76 77- [ ] Open feed management from home screen 78- [ ] Pinned feeds listed (Following + custom generators) 79- [ ] Drag to reorder feeds → order persists 80- [ ] Toggle pin off → feed removed from home tabs 81- [ ] Add a suggested feed → appears in home tabs 82 83--- 84 85## 4. Post Composition 86 87### Basic Compose 88 89- [ ] Tap compose FAB → compose screen opens 90- [ ] Type text → character counter updates (max 300 graphemes) 91- [ ] Mentions auto-highlight as typed 92- [ ] Links and hashtags auto-highlight 93- [ ] Submit → post appears in feed 94 95### Media 96 97- [ ] Attach 1–4 images → thumbnails shown 98- [ ] Add alt text to an image 99- [ ] Remove an image attachment 100- [ ] Attach a video → upload progress shown 101- [ ] Images and video are mutually exclusive (UI enforces) 102 103### Reply & Quote 104 105- [ ] Compose as reply → parent post context shown above input 106- [ ] Compose as quote → quoted post shown below input 107 108### Drafts 109 110- [ ] Save draft → confirmation shown 111- [ ] Open drafts → saved draft listed 112- [ ] Load draft → text and media restored 113- [ ] Submit loaded draft → posts successfully 114 115### Scheduled Posts 116 117- [ ] Schedule a post for a future time → confirmation shown 118- [ ] Post publishes at scheduled time (background task) 119 120## 5. Search 121 122### Post Search 123 124- [ ] Type query → results load 125- [ ] Sort toggle: "Top" vs "Latest" works 126- [ ] Tap result → thread view opens 127 128### Actor Search 129 130- [ ] Switch to Actors tab → type query 131- [ ] Autocomplete suggestions appear as you type 132- [ ] Tap result → profile screen opens 133 134### Starter Pack Search 135 136- [ ] Switch to Starter Packs tab → type query 137- [ ] Results show pack cards 138- [ ] Tap result → starter pack detail opens 139 140### Search History 141 142- [ ] Recent searches appear below search bar 143- [ ] Tap history item → re-executes search 144- [ ] Swipe to delete a single entry 145- [ ] "Clear all" removes all history 146 147## 6. Notifications 148 149### Notification List 150 151- [ ] Alerts tab shows notifications (likes, reposts, follows, mentions, replies, quotes) 152- [ ] Grouped by day 153- [ ] Unread count badge on nav tab 154- [ ] Tap notification → navigates to post or profile 155- [ ] "Mark all as read" clears unread badge 156 157### Unread Polling 158 159- [ ] Leave app open → badge count updates (30s poll interval) 160 161## 7. Direct Messages 162 163### Conversation List 164 165- [ ] Messages sub-tab shows conversations sorted by recency 166- [ ] Unread count per conversation displayed 167- [ ] Requests sub-tab shows unanswered conversations 168 169### Message Thread 170 171- [ ] Tap conversation → message thread opens 172- [ ] Messages paginate (scroll up for older) 173- [ ] Own messages right-aligned, others left-aligned 174- [ ] Type and send a message → appears immediately 175- [ ] Tap message → copy option 176 177### Conversation Actions 178 179- [ ] Mute conversation from overflow → muted indicator shown 180- [ ] Unmute → indicator removed 181 182## 8. Profile 183 184### Own Profile 185 186- [ ] Profile tab shows: banner, avatar, display name, handle, bio 187- [ ] Follower/following/post counts displayed 188- [ ] Posts tab → author's posts (no replies) 189- [ ] Replies tab → posts and threads 190- [ ] Media tab → only posts with media 191- [ ] Lists tab → lists created by user (Curation | Moderation sub-tabs) 192- [ ] Packs tab → starter packs created by user 193 194### Other User's Profile 195 196- [ ] Tap user anywhere → their profile loads 197- [ ] Follow button shown → tap to follow → button changes 198- [ ] Unfollow → button reverts 199- [ ] Overflow: Mute, Block, Report, Copy DID, Share 200 201### Suggested Follows 202 203- [ ] Overflow → "Suggested Follows" → sheet with suggestions 204- [ ] Follow/unfollow buttons in sheet work 205 206## 9. Profile Context (Constellation) 207 208- [ ] Open profile context from profile overflow menu 209- [ ] **Blocked By** tab: shows count, "Show accounts" expands list 210- [ ] Paginated account tiles load 211- [ ] **Blocking** tab: shows outgoing blocks (own profile only) 212- [ ] Shows "unavailable" message for other profiles 213- [ ] **Lists** tab: shows lists user is a member of 214- [ ] List cards display: name, owner, purpose badge, description 215- [ ] Tap account → navigates to profile 216- [ ] Tap list → navigates to list detail 217 218## 10. Post Thread 219 220- [ ] Thread loads: parent chain above, replies below 221- [ ] Root post visually highlighted 222- [ ] Nested reply chains render correctly 223- [ ] All post actions work within thread (like, repost, reply, save) 224- [ ] Tap profile in thread → profile screen 225 226## 11. Lists 227 228### My Lists 229 230- [ ] Navigate to lists screen 231- [ ] Curation and Moderation tabs separate lists correctly 232- [ ] Tap list → detail screen 233 234### Create List 235 236- [ ] Tap FAB → create dialog 237- [ ] Enter name (1–64 graphemes), optional description, pick avatar 238- [ ] Select purpose (curation or moderation) 239- [ ] Save → list appears in My Lists 240 241### List Detail 242 243- [ ] Header: name, avatar, description, creator, member count 244- [ ] Feed tab (curation lists): shows posts from members 245- [ ] Members tab: lists member profiles 246- [ ] Overflow: Edit, Delete, Add/Remove members 247 248### List Members 249 250- [ ] Search for actors to add 251- [ ] Add member → appears in list 252- [ ] Remove member → removed from list 253 254### Moderation Actions 255 256- [ ] Mute list → all members muted 257- [ ] Block via list → all members blocked 258 259## 12. Starter Packs 260 261### Starter Pack Detail 262 263- [ ] Header: name, description, creator 264- [ ] Stats: joined this week, joined all-time 265- [ ] Sample members displayed (up to 12) 266- [ ] Recommended feeds displayed (up to 3) 267- [ ] "See all members" → navigates to list members 268- [ ] "Follow all" → follows all members (with confirmation) 269 270### Create Starter Pack 271 272- [ ] Tap create from own profile's Packs tab 273- [ ] Enter name (max 50 graphemes), optional description 274- [ ] Search and add members 275- [ ] Pick up to 3 feeds 276- [ ] Save → pack appears on profile 277 278### Edit / Delete 279 280- [ ] Edit pack → update name, description, feeds 281- [ ] Delete pack → removed from profile 282 283## 13. Media 284 285### Image Viewer 286 287- [ ] Tap image → full-screen viewer 288- [ ] Pinch to zoom, pan around 289- [ ] Multi-image post → swipe between images 290- [ ] Alt text shown at bottom (if present) 291- [ ] Download → saved to gallery 292- [ ] Share → system sheet 293- [ ] Swipe down → dismiss viewer 294 295### Video Player 296 297- [ ] Tap video → full-screen player 298- [ ] Play/pause, seek bar, mute controls work 299- [ ] Elapsed/total time displayed 300- [ ] Fullscreen toggle works 301 302### Long-Press Context Menu 303 304- [ ] Long-press image thumbnail → Save / Share options 305 306--- 307 308## 14. Saved Posts 309 310- [ ] Navigate to saved posts screen 311- [ ] Previously saved posts listed 312- [ ] Tap post → thread view 313- [ ] Unsave → removed from list 314- [ ] Empty state shown when no saved posts 315 316--- 317 318## 15. Moderation & Labelers 319 320### Content Filtering 321 322- [ ] Blurred content shows click-through overlay 323- [ ] Alert badge renders on warned content 324- [ ] Filtered content hidden from feeds 325- [ ] Media blur shows blurred images, text visible 326 327### Labeler Management 328 329- [ ] Settings → Moderation → labeler list shown 330- [ ] Tap labeler → detail with label definitions 331- [ ] Toggle per-label preference (ignore/warn/hide) 332- [ ] Subscribe to new labeler 333- [ ] Unsubscribe from labeler 334- [ ] Adult content toggle gates 18+ labels 335 336--- 337 338## 16. Connectivity & Offline 339 340### Network Loss 341 342- [ ] Disable network → offline banner appears at top 343- [ ] Cached feed data still displays 344- [ ] Post actions (like, repost, compose) disabled with tooltip 345- [ ] Notifications/DMs show empty or cached state 346 347### Network Restore 348 349- [ ] Re-enable network → banner disappears 350- [ ] Actions re-enabled 351- [ ] Pull-to-refresh loads fresh data 352 353### Optimistic Updates 354 355- [ ] Like a post on slow connection → UI updates immediately 356- [ ] If API fails → UI rolls back, error snackbar shown 357 358--- 359 360## 17. Settings & Preferences 361 362### Theme 363 364- [ ] Change theme palette (Oxocarbon, Catppuccin, Nord, Rosé Pine) 365- [ ] Toggle Light / Dark / System mode 366- [ ] Theme applies immediately across all screens 367 368### Account Switching 369 370- [ ] Open account switcher → all accounts listed 371- [ ] Switch to another account → feeds/profile reload for new account 372- [ ] Add new account → OAuth flow → account added to list 373 374### Dev Tools 375 376- [ ] Logs: view logs, filter by level, search text, share log file 377- [ ] PDS Explorer: resolve handle, browse collections, view record JSON 378 379### About 380 381- [ ] App version and build number displayed 382- [ ] Licenses accessible 383 384--- 385 386## 18. Cross-Cutting Concerns 387 388### Navigation 389 390- [x] Bottom nav switches between Home, Search, Alerts, Profile 391- [x] Back button / swipe-back navigates correctly through stack 392- [ ] Deep link to a post URI opens thread view 393 394### Performance 395 396- [ ] Feed scroll is smooth (no jank) 397- [ ] Image loading doesn't block UI 398- [ ] Search results appear within reasonable time 399 400### Error States 401 402- [ ] Invalid handle on login → error message shown 403- [ ] Network error on post submit → error snackbar, draft preserved 404- [ ] 404 on deleted post → appropriate error state 405 406### State Persistence 407 408- [ ] Kill app mid-scroll → relaunch restores session 409- [ ] Drafts survive app restart 410- [ ] Saved posts survive app restart 411- [ ] Search history survives app restart 412- [ ] Theme selection survives app restart