Commit Graph

8878 Commits

Author SHA1 Message Date
Vitor Pamplona cf7bdef028 Adds missing actual implementations on iOS 2026-02-17 19:00:24 -05:00
Vitor Pamplona c4e3d99392 moves chess lib to version catalog 2026-02-17 18:45:35 -05:00
Vitor Pamplona bb3937edb4 Makes 24h the default end time for polls 2026-02-17 18:41:25 -05:00
Vitor Pamplona a6ff66b8ae Rounds time formatting 2026-02-17 18:39:17 -05:00
Vitor Pamplona d6c9462b46 Removing unnecessary class. 2026-02-17 17:09:45 -05:00
Vitor Pamplona 277a311fdc In Compose, a UI element with a height of 0 generally cannot receive pointer events (clicks), even if it visually scales back up later via the graphicsLayer. This commit blocks the progress from going to zero 2026-02-17 16:50:43 -05:00
Vitor Pamplona 46bc0dd750 Fixes poll rendering with images are included in the options 2026-02-17 16:40:46 -05:00
Vitor Pamplona 713e91185b Merge pull request #1702 from nrobi144/feat/chess-pgn-display-878
chess: live chess game implementation with Jester protocol
2026-02-17 16:12:26 -05:00
Vitor Pamplona b16fd2c4d1 Merge pull request #1705 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-02-17 16:05:45 -05:00
Crowdin Bot 24e4b86065 New Crowdin translations by GitHub Action 2026-02-17 21:04:02 +00:00
Vitor Pamplona f665bec63d adds basic support for NIP85 Polls 2026-02-17 16:00:54 -05:00
Vitor Pamplona 893a318fbd Correctly refreshes the Live bubbles when switching top filters. 2026-02-12 16:20:03 -05:00
Vitor Pamplona e84e748959 updating libraries 2026-02-12 15:13:07 -05:00
Vitor Pamplona e0db24e9d7 Fixes the blinking and multi-broadcasting issues of the track broadcast snackbar 2026-02-11 17:43:55 -05:00
nrobi144 5f15f0c3b1 fix: address Copilot review comments
- ChessPosition: include all fields in equals/hashCode
- AcceptedGamesRegistry: add thread safety with synchronized
- ChessEventBroadcaster: use valid filter for connection trigger
- ChessEventBroadcaster: fix misleading relayResults
- Remove println debug logging from ChessSubscription/Broadcaster
- UserProfileScreen: use proper JSON parsing via MetadataEvent

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 16:39:24 +02:00
nrobi144 8d098cf86d feat(chess): focused polling, promotion fix, and game end celebration
- Add focused game mode to ChessPollingDelegate: when viewing a game,
  only that game is polled instead of all active games
- Fix pawn promotion by parsing promotion suffix in publishMove
  (e.g., "e8q" -> "e8" + QUEEN)
- Add game end overlay with victory/defeat/draw celebration
- Remove all debug println statements for production readiness

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:14:34 +02:00
nrobi144 3c89c442bc feat(chess): add slim ViewModels and shared broadcast banner (Steps 7-10)
Step 7: ChessViewModelNew.kt - Slim Android ViewModel (~130 lines)
- Delegates all business logic to ChessLobbyLogic
- Exposes StateFlows from logic.state
- Platform adapter creation only

Step 8: DesktopChessViewModelNew.kt - Slim Desktop ViewModel (~120 lines)
- Same pattern as Android, delegates to ChessLobbyLogic
- UserMetadataCache for profile display
- External CoroutineScope injection

Step 9: ChessBroadcastBanner.kt - Shared Compose banner in commons
- Uses ChessBroadcastStatus from ChessLobbyState
- Works on both Android and Desktop via Compose Multiplatform
- Shows broadcasting progress, sync status, errors

Step 10: UI consumers ready for migration
- New ViewModels use ChessChallenge (enriched display data)
- Shared banner ready to replace Android-only ChessStatusBanner
- Existing screens continue to work with old ViewModel

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:14:34 +02:00
nrobi144 42b33ca04c feat(chess): add platform adapters and enhance lobby state (steps 5-6)
- Add ChessLobbyState with completedGames, replaceGameState(), moveToCompleted()
- Add challengerAvatarUrl to ChessChallenge
- Add CompletedGame data class for game history

Platform Adapters:
- AndroidChessAdapter: AndroidChessPublisher, AndroidRelayFetcher, AndroidMetadataProvider
- DesktopChessAdapter: DesktopChessPublisher, DesktopRelayFetcher, DesktopMetadataProvider

Shared Infrastructure:
- ChessRelayFetchHelper for one-shot relay queries
- IUserMetadataProvider interface for platform-specific metadata
- ChessFilterBuilder with simple filter methods for fetchers
- ChessSubscriptionController interface for subscription management

Fix ChessSubscription.kt to remove broken dataSources().chess reference
(subscriptions now managed by ChessLobbyLogic)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:14:34 +02:00
nrobi144 e0d0e33408 refactor impl 2026-02-10 12:14:05 +02:00
nrobi144 c2f035acc0 docs: update chess implementation status
- Mark ChessViewModel, navigation, relay subscriptions as complete
- Update file structure to reflect KMP commons migration
- Update checklist with completed items
- Revise next steps to focus on FAB and badge display

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:10:39 +02:00
nrobi144 de2ebb2f7b feat(chess): add relay subscriptions for live game events
- Subscribe to LocalCache.live.newEventBundles for chess events
- Handle incoming opponent moves (LiveChessMoveEvent)
- Handle game acceptance (LiveChessGameAcceptEvent)
- Handle game endings (LiveChessGameEndEvent)
- Track new challenges directed at user (LiveChessGameChallengeEvent)
- Auto-update badge count on relevant events

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:10:38 +02:00
nrobi144 4a02c12acd feat(chess): implement ChessViewModel with event publishing
- Add state management for active games, challenges, badges
- Implement createChallenge for new games
- Add acceptChallenge for joining games
- Add publishMove with both simple (from/to) and full (ChessMoveEvent) APIs
- Add resign and offerDraw for game termination
- Wire up to existing ChessGameScreen and Chess.kt UI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:10:38 +02:00
nrobi144 607cdf0c17 refactor(commons): migrate chess UI to KMP commonMain
- Move chess UI components from src/main/java to src/commonMain/kotlin
- Add consume functions for chess events in LocalCache
- Resolve merge conflicts with main branch KMP migration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 12:10:38 +02:00
nrobi144 63fc5e86f6 fixes 2026-02-10 12:10:38 +02:00
nrobi144 06accf5831 full chess implementation 2026-02-10 11:58:00 +02:00
nrobi144 18c8156ab2 integrate chess events 2026-02-10 11:56:43 +02:00
nrobi144 19c36c2979 initial nip64 implementation 2026-02-10 11:54:36 +02:00
Vitor Pamplona a70101f5e5 cleans up broadcasting tracker 2026-02-09 20:28:35 -05:00
Vitor Pamplona 89b058fff3 Adds yabu and nostr1 profile relays 2026-02-09 17:54:04 -05:00
Vitor Pamplona 97251b345a Correcting relay url 2026-02-09 17:41:27 -05:00
Vitor Pamplona 9d32c314d1 Switching nostr.band to antiprimal on app defaults. 2026-02-09 16:27:19 -05:00
Vitor Pamplona bc9adc8352 Breaks the search filter down into two subscriptions to prioritize Metadata without punishing content. 2026-02-09 16:12:11 -05:00
Vitor Pamplona ae84a64b71 Fixes reformatting bug 2026-02-09 14:09:07 -05:00
Vitor Pamplona eb66182211 - Updates several libraries
- Reformats code to the newest Klint
- Fixes isEmpty bug on Filters
2026-02-09 14:06:07 -05:00
Vitor Pamplona 710f15f790 - Fixes copyright using KDoc patterns instead of simpler comments
- Moves spotless and git-hooks to hidden folders
2026-02-09 13:06:41 -05:00
Vitor Pamplona 6125394354 Migrates to AGP 9 2026-02-08 16:33:39 -05:00
Vitor Pamplona f8a232385d Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
2026-02-08 12:05:02 -05:00
Vitor Pamplona 9d8c1f3ffe Avoid dependency of AccountSettings for NwcSignerState 2026-02-08 12:04:51 -05:00
Vitor Pamplona c319b25077 Merge pull request #1700 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-02-08 11:52:00 -05:00
Crowdin Bot 234ca70c4e New Crowdin translations by GitHub Action 2026-02-08 16:43:29 +00:00
Vitor Pamplona 913b694f78 Clean up on unnecessary methods on Note 2026-02-08 11:35:26 -05:00
Vitor Pamplona aa4cfdc237 Small refactoring 2026-02-07 18:54:48 -05:00
Vitor Pamplona 393d3b33f1 deletes old test 2026-02-07 18:52:17 -05:00
Vitor Pamplona f37ab8e656 Moves to LruCache from androidx 2026-02-07 18:25:23 -05:00
Vitor Pamplona 2e64d36f39 Moves Blossom server list to use the ICacheProvider 2026-02-07 18:23:42 -05:00
Vitor Pamplona 571fb6af4b Moves the new observables to commons 2026-02-07 18:20:50 -05:00
Vitor Pamplona 7813d20f8e Increases the limit of Zap downloads for profiles to 1000 2026-02-07 18:20:23 -05:00
Vitor Pamplona 838fb3ed7e Groups zaps in profile by user
Moves author's zap cache to the Profile viewmodel
Redesigns composables to match.
Updates Notifications to not use the old zap cache.
2026-02-07 17:52:26 -05:00
Vitor Pamplona 452d549e43 Fixes the fact that SortedSets can have duplicated objects in parallel adds.
Moves to concurrent sets with a Comparator that checks the object's reference to remove duplications in the set when events from addressables differ
2026-02-07 17:50:39 -05:00
Vitor Pamplona 2e85d1356e Fixes Addressable vs Replaceable bases 2026-02-07 17:48:37 -05:00