Remove Moko Resources dependency that blocks AGP 9.0 migration.
Migrate to built-in Compose Multiplatform Resources which is compatible
with the new KMP Android plugin.
- Remove moko-resources plugin and libraries from commons module
- Move strings.xml from moko-resources/ to composeResources/values/
- Update imports from SharedRes.strings.* to Res.string.*
- Add compose.components.resources dependency to desktopApp
- Configure resource package as com.vitorpamplona.amethyst.commons.resources
Closes#1675
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Retrying state to RelayResult for in-flight retry tracking
- Implement synced 360° rotating animation for pending/retrying icons
- Refactor BroadcastDetailsSheet for multi-broadcast sections (max 2 expanded)
- Add overflow summary for additional broadcasts beyond 2
- Fix sheet text colors using theme colors for better visibility
- Make sheet fully expandable (skipPartiallyExpanded)
- Add event cache to BroadcastTracker for retry support
- Implement retry that updates existing broadcast in-place
- Add tracked broadcasting for posts and quotes via createPostEvent/consumePostEvent
- Fix relay list computation for new posts (use event-based, not empty note)
- Make post editor close immediately, broadcast continues in background
- Style CompletedBroadcastIndicator consistently with BroadcastBanner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 2 progress - added BroadcastTracker instance to AccountViewModel.
Integration with reaction buttons pending.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 1 - Core infrastructure:
- BroadcastModels: BroadcastEvent, RelayResult, BroadcastStatus data classes
- BroadcastTracker: State management with live progress updates
- BroadcastBanner: Global progress indicator (animated)
- BroadcastSnackbar: Result notifications with actions
- BroadcastDetailsSheet: Relay status detail bottom sheet
Refs: #1682
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix import paths to use desktop.subscriptions instead of commons.subscriptions
- Update DesktopLocalCache to match ICacheProvider interface changes
- Use correct commons.relayClient paths for ComposeSubscriptionManager
- Add missing justConsumeMyOwnEvent and getOrCreateAddressableNote methods
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Resolved import conflicts caused by package reorganization:
- upstream moved classes to amethyst/service/relayClient/*
- upstream moved models to commons/model/*
- kept our desktop additions (zaps, bookmarks, search)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cleanup deletes the actual shared file (and on error) instead of the old temp path in
Guard against empty response.body
Gate media-type detection so image sharing only checks image headers
Added unit test for rename-failure fallback