| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-05-21 | Implement MySharesScreen with revoke/copy-link actions reachable from ↵ | Paul Buetow | |
| Settings (8b) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-05-21 | Implement SearchFilterBar with debounce, type/favorites/sort filters for ↵ | Paul Buetow | |
| MediaGridScreen (wa) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-05-20 | Fix PlayerApiClient const constructor and Media.tags deserialization (d9+e9) | Paul Buetow | |
| - Remove const from PlayerApiClient constructor (Uri is not const-constructable) - Replace .cast<String>() with .whereType<String>().toList() in Media.fromJson to silently drop non-string and null tag elements instead of throwing TypeError - Add regression test: tags [1, 'valid', null] deserialized as ['valid'] Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | |||
| 2026-05-20 | Guard dateTimeFromJson against malformed date strings (c9) | Paul Buetow | |
| Wrap DateTime.parse in try/catch so a malformed or non-ISO-8601 date string from the server degrades to null instead of throwing a FormatException that crashes model deserialization across Media, MediaSet, User, PodcastFeed, PodcastEpisode, PlaybackHint, Share, and Note. Add player-android/test/json_helpers_test.dart with 11 tests covering null, empty, non-string, valid ISO, and malformed inputs (regression guard for the original crash). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | |||
| 2026-05-17 | Add player-android/ Flutter skeleton | Paul Buetow | |
