Commit Graph

9098 Commits

Author SHA1 Message Date
Vitor Pamplona ad578b394d Merge pull request #1759 from vitorpamplona/claude/refactor-nip64chess-structure-3iFIB
refactor: restructure nip64Chess to match nip88Polls pattern
2026-03-04 08:30:35 -05:00
Vitor Pamplona 0ebbd54498 Merge pull request #1734 from mstrofnone/feature/namecoin-nip05-resolution
feat: Namecoin NIP-05 identity verification via ElectrumX
2026-03-04 08:30:21 -05:00
Vitor Pamplona e065cbc63b Merge branch 'main' into feature/namecoin-nip05-resolution 2026-03-04 08:29:48 -05:00
Vitor Pamplona 755df5e60e Merge pull request #1760 from nrobi144/feat/desktop-deck-layout
feat(desktop): multi-column deck layout with single-pane toggle
2026-03-04 08:26:32 -05:00
nrobi144 db530a6820 fix(desktop): audit fixes for deck layout
Critical:
- GlobalFeed now renders global feed (was identical to HomeFeed)
- DeckState uses atomic _columns.update{} instead of non-atomic .value=
- lastKnownWidth marked @Volatile for thread safety

Medium:
- save() debounced 500ms via coroutine (was sync disk I/O per drag frame)
- Width redistribution fills gaps after clamping on column remove
- Hashtag column pre-fills search query
- ColumnNavigationState.stack exposed as StateFlow not MutableStateFlow
- Settings column deduped (focuses existing instead of adding duplicate)
- Exceptions logged in save/load instead of silently swallowed

Low:
- Thread column icon fixed (was Home, now Article)
- Drag divider hit target widened to 12dp (visual stays 4dp)
- Horizontal scroll added for column overflow
- Auto-fit columns on first composition / window resize
- Column shortcuts limited to actual column count
- Deterministic default column IDs
- Overlay fallback shows message instead of blank

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:02:22 +02:00
nrobi144 73b8059b55 feat(desktop): collapsible info panel in chess deck column
Hide GameInfo/MoveHistory/Actions panel by default in deck view
with a chevron toggle to expand. Add Chess to AddColumnDialog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 09:45:01 +02:00
nrobi144 991ac3b31b merge: integrate upstream main with chess PR #1702
Resolves merge conflicts in Main.kt, adds Chess column type
to deck layout (DeckColumnType, ColumnHeader, DeckColumnContainer,
DeckState, SinglePaneLayout, View menu). Updates DesktopMessagesScreen
calls for new relayManager/localCache params.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 09:33:44 +02:00
David Kaspar 931ea33694 Merge pull request #1758 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-04 05:21:06 +00:00
Claude 2df8a106d4 refactor: restructure nip64Chess to match nip88Polls pattern
Reorganize nip64Chess event classes into individual packages with
dedicated tag classes, TagArrayBuilderExt, and TagArrayExt files,
following the same structure used by nip88Polls.

New package structure:
- challenge/ - LiveChessGameChallengeEvent with PlayerColorTag, TimeControlTag
- accept/ - LiveChessGameAcceptEvent with ChallengeEventTag
- move/ - LiveChessMoveEvent with GameIdTag, MoveNumberTag, SanTag, FenTag
- end/ - LiveChessGameEndEvent with ResultTag, TerminationTag, WinnerTag
- draw/ - LiveChessDrawOfferEvent
- game/ - ChessGameEvent (Kind 64)
- jester/ - JesterEvent, JesterProtocol, JesterContent, JesterGameEvents

Each tag class follows the companion object pattern with isTag(),
parse(), and assemble() methods. Each event package includes
TagArrayBuilderExt for building and TagArrayExt for parsing.

https://claude.ai/code/session_01Qtzhka3p5N3Hbns4xrRbsv
2026-03-04 00:51:43 +00:00
Crowdin Bot a37c6b5e6f New Crowdin translations by GitHub Action 2026-03-04 00:32:36 +00:00
Vitor Pamplona 546d1e9e73 Protects against invalid URLs 2026-03-03 19:30:39 -05:00
Vitor Pamplona 5cf306683a Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
  update cz, pt, de, sv
  New Crowdin translations by GitHub Action
  update cz, pt, de, sv
  New Crowdin translations by GitHub Action
2026-03-03 19:26:25 -05:00
Vitor Pamplona 96967b9e30 Clearing AccountViewModels more precisely 2026-03-03 19:17:15 -05:00
David Kaspar ea8ed31ba4 Merge pull request #1756 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-03 22:43:07 +00:00
Crowdin Bot b1504da012 New Crowdin translations by GitHub Action 2026-03-03 22:40:22 +00:00
David Kaspar 9b6d2e9c3a Merge pull request #1755 from davotoula/update-translations
update cz, pt, de, sv
2026-03-03 22:39:09 +00:00
davotoula 8ad1cddb42 update cz, pt, de, sv 2026-03-03 22:36:06 +00:00
David Kaspar c04d93fcea Merge pull request #1754 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-03 22:24:51 +00:00
Crowdin Bot 8c8fdbc27c New Crowdin translations by GitHub Action 2026-03-03 22:23:46 +00:00
David Kaspar 43133b70f4 Merge pull request #1753 from davotoula/update-translations
update cz, pt, de, sv
2026-03-03 22:22:21 +00:00
davotoula 382273647f update cz, pt, de, sv 2026-03-03 22:18:20 +00:00
Vitor Pamplona 14e6f1bdb1 Merge pull request #1752 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-03 17:07:27 -05:00
Crowdin Bot dc817abe2c New Crowdin translations by GitHub Action 2026-03-03 21:44:54 +00:00
Vitor Pamplona d8911ef69c Account State is more than just a view model. 2026-03-03 16:42:45 -05:00
Vitor Pamplona 2e71401342 Deletes the default scope form App Modules 2026-03-03 15:17:01 -05:00
M cb1031705b Remove dead ElectrumX servers ulrichard.ch and nmc2.lelux.fi
ulrichard.ch:50006 — connects but never responds (timeout)
nmc2.lelux.fi:50006 — DNS resolution fails (ENOTFOUND)
2026-03-04 06:34:39 +11:00
M c649f2163b Add nmc2.bitcoins.sk and 46.229.238.187 as backup ElectrumX servers
Both verified to resolve Namecoin names via scripthash lookups.
Port 57002, TLS with self-signed certs.
2026-03-04 06:30:50 +11:00
Vitor Pamplona a417eb46f7 Fixes the need to have tags and kinds for inbox.nostr.wine to work 2026-03-03 13:40:26 -05:00
Vitor Pamplona 264b988b41 Fixing sending inside this function 2026-03-03 13:37:55 -05:00
Vitor Pamplona 7b80ee8bf0 Fixes the need to specify route in the check if navigation is going to the same route or not 2026-03-03 12:29:17 -05:00
Vitor Pamplona cdbee03e93 Fixes animation for settings pages 2026-03-03 12:10:57 -05:00
Vitor Pamplona cd6cdf7add Switch Surface use on KeyBackup to Scaffod 2026-03-03 12:10:45 -05:00
Vitor Pamplona edb73b3556 Updates AGP 2026-03-03 11:52:03 -05:00
Vitor Pamplona 5d8452af06 lint 2026-03-03 10:54:44 -05:00
Vitor Pamplona 386afdbe8d Merge pull request #1751 from vitorpamplona/claude/improve-zapcustomdialog-ui-2Fzic
Redesign Zap Custom Dialog with improved UI/UX
2026-03-03 10:54:05 -05:00
Vitor Pamplona 7695416ca0 Merge pull request #1750 from vitorpamplona/claude/convert-dialog-to-route-9lrlG
Convert UpdateZapAmountDialog to full-screen navigation route
2026-03-03 10:51:07 -05:00
Vitor Pamplona 583891a145 Merge branch 'main' into claude/convert-dialog-to-route-9lrlG 2026-03-03 10:51:00 -05:00
Vitor Pamplona be0e53fa08 Merge pull request #1748 from vitorpamplona/claude/convert-backup-dialog-route-ngbkf
Convert AccountBackupDialog to full-screen navigation route
2026-03-03 10:48:20 -05:00
Vitor Pamplona 1fb4860d68 Merge pull request #1749 from vitorpamplona/claude/convert-dialog-to-route-7Co1n
Convert UpdateReactionTypeDialog to screen-based navigation
2026-03-03 10:48:05 -05:00
Claude 6f80232c32 feat: improve ZapCustomDialog UI with chips and cleaner layout
- Add dialog title "Send Zap" with close button in header
- Add preset amount SuggestionChips from user's saved zap amounts
- Replace TextSpinner dropdown with FilterChip row for zap type selection
- Make amount field full-width with "sats" suffix
- Move ZapButton to bottom as full-width call-to-action
- Add imePadding for keyboard avoidance
- Add RoundedCornerShape(16dp) to dialog Surface
- Add HorizontalDivider separating header from content
- Change message keyboard capitalization to Sentences
- Add send_zap string resource

https://claude.ai/code/session_017gXfNSaqGshRth2x5tdTKz
2026-03-03 15:46:19 +00:00
Claude 9910bd0dfa feat: convert AccountBackupDialog to a navigation Route
Replaces the local dialog state in AllSettingsScreen with a proper
Route.AccountBackup, presented as a bottom-slide composable.

- Add `Route.AccountBackup` to Routes.kt (sealed class + getRouteWithArguments)
- Rename `AccountBackupDialog` → `AccountBackupScreen` accepting `INav` instead of `onClose`; remove Dialog wrapper
- Register `composableFromBottom<Route.AccountBackup>` in AppNavigation
- Update AllSettingsScreen to navigate to Route.AccountBackup instead of managing local dialog state

https://claude.ai/code/session_01KRRANB1b7wV7mpxEvpfjc7
2026-03-03 15:43:18 +00:00
Claude fb066b3b6f feat: convert UpdateReactionTypeDialog to a route
Replace the dialog-based UpdateReactionTypeDialog with a
navigation route (Route.UpdateReactionType) that slides up
from the bottom. UpdateReactionTypeScreen replaces the Dialog
wrapper with a plain Scaffold. Call sites in AllSettingsScreen
and ReactionsRow now navigate to the route instead of managing
local dialog state.

https://claude.ai/code/session_01TSjuYdBADTRXwT4w8Yx1vU
2026-03-03 15:42:51 +00:00
Claude c3a0141a47 feat: convert UpdateZapAmountDialog to Route
- Add Route.UpdateZapAmount to Routes.kt with optional nip47 parameter
- Create UpdateZapAmountScreen.kt as a Scaffold-based screen using SavingTopBar
- Register composableFromBottomArgs<Route.UpdateZapAmount> in AppNavigation.kt
- Replace dialog state in AllSettingsScreen with nav.nav(Route.UpdateZapAmount())
- Replace dialog state in ReactionsRow with nav.nav(Route.UpdateZapAmount())
- Remove UpdateZapAmountDialog composables, keeping UpdateZapAmountContent and authenticate helpers

https://claude.ai/code/session_01N95sLM14khkJupTfvJcoKq
2026-03-03 15:42:27 +00:00
nrobi144 afe126f393 feat(desktop): add single-pane/deck toggle with smart column resizing
- Add LayoutMode enum (SINGLE_PANE/DECK) persisted in DesktopPreferences
- SinglePaneLayout: NavigationRail + single content area reusing deck routing
- View menu "Deck Layout" toggle with Cmd+Shift+D shortcut
- Column resize: redistribute width on add/remove, double-click header to expand
- Constrain drag resize to window bounds via BoxWithConstraints
- FlowRow headers in FeedScreen/ReadsScreen to wrap on narrow columns

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:38:32 +02:00
Vitor Pamplona 3c32dbc701 lint 2026-03-03 10:23:27 -05:00
Vitor Pamplona 2b80ab52b7 Merge pull request #1747 from vitorpamplona/claude/nip39-kind-10011-support-EACQk
Implement NIP-39 External Identities (kind 10011) event support
2026-03-03 10:01:52 -05:00
Claude 79b06d35b9 feat: add NIP-39 kind 10011 (ExternalIdentitiesEvent) support
- Add ExternalIdentitiesEvent (kind 10011) to quartz/nip39ExtIdentities
  with createNew/updateFromPast factory methods and identityClaims()
- Generalize TagArrayBuilderExt to work with any Event type (not just
  MetadataEvent) so claims/twitterClaim etc. work with both kinds
- Extract replaceClaims logic to List<IdentityClaimTag>.replaceClaims()
  shared extension used by both MetadataEvent and ExternalIdentitiesEvent
- Register ExternalIdentitiesEvent in EventFactory (kind 10011)
- Add consume(ExternalIdentitiesEvent) to LocalCache and dispatch in
  justConsumeInnerInner
- Add ExternalIdentitiesEvent.KIND to UserMetadataForKeyKinds relay filter
  so kind 10011 is fetched alongside kind 0 when loading user profiles
- Add UserExternalIdentitiesViewModel that observes the kind 10011
  AddressableNote for a user and exposes List<IdentityClaimTag> as a Flow
- Thread UserExternalIdentitiesViewModel through ProfileScreen →
  RenderScreen → ProfileHeader → DrawAdditionalInfo
- DrawAdditionalInfo now shows kind 10011 identities, falling back to
  kind 0 for backwards compatibility
- UserMetadataState: add sendNewUserIdentities() for kind 10011 and
  remove identity claim params from sendNewUserMetadata() (kind 0)
- NewUserMetadataViewModel: load identities from kind 10011 first
  (fallback to kind 0), save identities to kind 10011 separately

https://claude.ai/code/session_017iU6ZdRu5qRXPCeDztVeeV
2026-03-03 13:47:27 +00:00
Vitor Pamplona a005ec5354 Merge pull request #1746 from davotoula/cleaner-code
Cleaner code
2026-03-03 06:46:34 -05:00
Vitor Pamplona d2ddb9ded5 Merge pull request #1745 from davotoula/defensive-backup-rules
defensive backup rules
2026-03-03 06:45:28 -05:00
davotoula 169416b548 Remove unnecessary suspend modifier from sentToTop() and simplify getNoteIfExists call 2026-03-03 10:06:32 +00:00