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.

chore: update changelog

+5 -50
+4
CHANGELOG.md
··· 67 67 - Added url resolution for in-app links (profiles, posts, hashtags) with dedicated hashtag 68 68 screen (matches bsky.app implementation with Top/Latest sorting) 69 69 - Jump to hashtag action from the hashtag screen with related hashtags & search 70 + 71 + #### 2026-04-29 72 + 73 + - Configurable autocomplete/typeahead for login & profile/actor search
+1 -50
docs/tasks/typeahead.md
··· 1 1 # Typeahead Milestones 2 2 3 - ## M0 - Data Layer 4 - 5 - - [x] Create `lib/features/typeahead/data/typeahead_result.dart` - `TypeaheadResult` model (`did`, `handle`, `displayName`, `avatarUrl`, `labels`) 6 - - [x] Create `lib/features/typeahead/data/typeahead_repository.dart` 7 - - [x] Unit tests for `TypeaheadRepository` 8 - 9 - ## M1 - Settings Integration 10 - 11 - - [x] Add `typeahead_provider` column to settings table (Drift migration) 12 - - [x] Add `typeaheadProvider` to `SettingsState` 13 - - [x] Add `setTypeaheadProvider(String)` to `SettingsCubit` 14 - - [x] Settings UI: add "Typeahead Provider" option under a "Search" section 15 - - [x] Unit test: `SettingsCubit` persists and restores typeahead provider 16 - - [x] Widget test: settings screen shows typeahead provider selector 17 - 18 - ## M2 - TypeaheadCubit 19 - 20 - - [x] Create `lib/features/typeahead/cubit/typeahead_cubit.dart` 21 - - [x] Create `lib/features/typeahead/cubit/typeahead_state.dart` 22 - - [x] Unit tests: debounce fires, cancel-on-new-query, empty input handling 23 - 24 - ## M3 - TypeaheadTextField Widget 25 - 26 - - [x] Create `lib/features/typeahead/presentation/typeahead_text_field.dart` 27 - - [x] Widget tests: overlay appears on input, results render, tap selects, tap-outside dismisses 28 - 29 - ## M4 - Login Integration 30 - 31 - - [x] Modify `LoginScreen` to use `TypeaheadTextField` for the handle field 32 - - [x] Preserve existing validation (`validator`, `TextInputAction.next`) 33 - - [x] Preserve debug app-password form (unaffected) 34 - - [x] Widget test: login typeahead shows community results, selecting triggers login flow 35 - - [x] Integration test: type handle → see suggestions → tap → OAuth initiates 36 - 37 - ## M5 - Search Integration 38 - 39 - - [x] Inject `TypeaheadRepository` into `SearchBloc` (replace direct `SearchRepository.searchActorsTypeahead` usage) 40 - - [x] Update `SearchBloc._onTypeaheadRequested` to call `TypeaheadRepository.search` 41 - - [x] Map `TypeaheadResult` back to `ProfileViewBasic` for `state.typeaheadActors` compatibility (or migrate state to `TypeaheadResult`) 42 - - [x] Update jump-to-profile dialog to use `TypeaheadCubit` + `TypeaheadTextField` 43 - - [x] Update list member add screen to use `TypeaheadRepository` 44 - - [x] Update starter pack member search to use `TypeaheadRepository` 45 - - [x] Unit tests: `SearchBloc` typeahead delegates to `TypeaheadRepository` 46 - - [x] Widget tests: search typeahead renders results from configured provider 47 - 48 - ## M5.1 - Runtime Provider Propagation 49 - 50 - - [x] Ensure `TypeaheadRepository` resolves provider dynamically so existing consumers pick up `SettingsCubit.typeaheadProvider` changes without app/session rebuild 51 - - [x] Wire authenticated app-scope `TypeaheadRepository` to `SettingsCubit` via resolver callback 52 - - [x] Unit test: same repository instance switches between community and Bluesky backends when provider changes at runtime 3 + Completed [2026-04-29](../../CHANGELOG.md#2026-04-29)