fix(ux): filter clear pinned, no-match text, instant avatar save, market avatar, favourites, WoT drawer

Six reported UX issues:
- Inventory 'clear filters' is now pinned outside the horizontal scroll,
  always visible — you no longer have to scroll past every chip to find it.
- Empty result now reads 'No seeds match your filters' (not 'no seeds
  yet') when a SEARCH or the 'this month' filter hid everything — the
  'filtered' flag was missing query + sowThisMonthOnly. Guarded by a test.
- Profile avatar saves + publishes the instant you pick it, so it no
  longer looks saved when it wasn't (the Save button sits below the fold).
- Market offer detail shows the author's real avatar (photo/illustration)
  instead of a generic person icon — resolves + caches their kind:0 picture.
- 'Wishlist' renamed to Favourites/Favoritos (en/es/pt/ast).
- The drawer 'following' item now opens the web-of-trust 'your people'
  screen when the social layer is on (was a dead item).

analyze clean; inventory/market/home + overflow suites green.
This commit is contained in:
vjrj 2026-07-12 02:56:08 +02:00
parent 514d3c7364
commit be5977d688
14 changed files with 91 additions and 33 deletions

View file

@ -35,6 +35,23 @@ void main() {
await disposeTree(tester);
});
testWidgets('a search with no matches reads "no matches", not "no seeds yet"',
(tester) async {
final repo = newTestRepository(db);
await repo.addQuickVariety(label: 'Tomate', category: 'Solanaceae');
await tester.pumpWidget(
wrapScreen(repository: repo, child: const InventoryListScreen()),
);
await tester.pumpAndSettle();
await tester.enterText(find.byKey(const Key('inventory.search')), 'zzzz');
await tester.pumpAndSettle();
expect(find.text('No seeds match your filters.'), findsOneWidget);
expect(find.text('No seeds yet. Tap + to add your first.'), findsNothing);
await disposeTree(tester);
});
testWidgets(
'renders seeds from the repository grouped under their category',
(tester) async {