nrobi144
fd1b435020
feat(desktop): add QR code scanning for bunker login
...
Adds a QR scan button to the login card that decodes QR codes from
clipboard images or image files using ZXing. Useful for scanning
bunker:// URIs from Amber's QR display.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
5661c6df27
fix(desktop): clear stored credentials on logout
...
All user-initiated logouts now pass deleteKey=true to remove
nsec from secure storage, clear last_npub, and delete bunker state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
eafedda99e
feat(desktop): update login hints to mention bunker:// option
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
26ea0be4c7
fix(desktop): simplify settings logout to just a button
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
2346d92f16
feat(desktop): add logout option to menu bar and settings
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
1821b9ff71
test: add NIP-46 test suite for desktop, quartz, and fix pre-existing chess test errors
...
Add comprehensive test coverage for NIP-46 bunker login across quartz and desktopApp:
Quartz (4 files, 48 tests):
- ResponseParserTest: all 7 response parsers (success/error/unexpected)
- FromBunkerUriTest: URI parsing, validation, edge cases
- ConvertExceptionsTest: SignerResult→Exception mapping
- NostrConnectEventTest: canDecrypt, talkingWith, verifiedRecipientPubKey
Desktop (6 files, 45 tests):
- BunkerUriUtilsTest: validateBunkerUri + stripBunkerSecret
- AccountManagerKeyLoginTest: nsec/npub/invalid login, save, generate
- AccountManagerLogoutTest: logout, forceLogout, state transitions
- AccountManagerLoadAccountTest: internal/bunker/missing-key scenarios
- AccountManagerBunkerLoginTest: hasBunkerAccount, setConnectingRelays
- AccountManagerHeartbeatTest: start/stop, no-crash with internal signer
Production changes:
- AccountManager: constructor private→internal, add homeDir param for test injection, extract stripBunkerSecret to internal top-level, constants internal
- desktopApp/build.gradle.kts: add mockk test dependency
Fix pre-existing chess test compilation errors:
- ChessStateReconstructorTest: add missing jester subpackage imports
- ChessGameEventTest: altText()→alt() + add nip31Alts import
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:16:09 +02:00
nrobi144
6c24c52104
feat(desktop): add NIP-46 remote signer (bunker://) login
...
Support bunker:// URI login for desktop, enabling private key delegation
to remote signers (nsec.app, Amber). Includes heartbeat monitoring,
force-logout on revocation, and ConnectingRelays startup state.
- AccountManager: bunker login/save/load, heartbeat ping, force logout
- LoginCard: auto-detect bunker:// URI, validation, connecting state
- LoginScreen: wire bunker callback, ConnectingRelays screen
- Main.kt: relay timeout, error recovery, scope cleanup, data objects
- ForceLogoutDialog: alert on signer revocation/disconnect
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 10:15:24 +02:00
Vitor Pamplona
9f903709e7
Move location permission watcher to the outside of the screens to avoid recreating them
2026-03-10 20:01:55 -04:00
Vitor Pamplona
8cd9449ba6
Improves upload of music and documents.
2026-03-10 19:49:15 -04:00
Vitor Pamplona
8a03f0b501
Replaces Aboutme for NIP-05 in the user search
2026-03-10 19:12:27 -04:00
Vitor Pamplona
2567a7c022
Better alignment and options in the UI.
2026-03-10 18:56:00 -04:00
Vitor Pamplona
178fcbb4c1
removes unused imports
2026-03-10 18:47:00 -04:00
Vitor Pamplona
cc4e81146f
Saves the position of the screen on import follows dialog
2026-03-10 18:46:18 -04:00
Vitor Pamplona
7a3794eabb
New string resource
2026-03-10 18:19:10 -04:00
Vitor Pamplona
a8d4705fa6
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
...
* 'main' of https://github.com/vitorpamplona/amethyst :
New Crowdin translations by GitHub Action
2026-03-10 16:58:24 -04:00
Vitor Pamplona
a1e90b8c9f
save the lazy list state and make it scroll in the search view model to avoid coming back on another feed position
2026-03-10 16:56:31 -04:00
Vitor Pamplona
26b7efafe8
enforces specific keys when using nip05/namecoin
2026-03-10 16:41:59 -04:00
Vitor Pamplona
ef1d7e1249
Merge pull request #1800 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-10 16:29:14 -04:00
Vitor Pamplona
9a3b11e522
Adds the ability to upload any file form any new post screen
2026-03-10 16:23:02 -04:00
Crowdin Bot
ffff1399b9
New Crowdin translations by GitHub Action
2026-03-10 20:18:49 +00:00
Vitor Pamplona
087e5878a6
Fixes some compilation issues
2026-03-10 16:14:38 -04:00
Vitor Pamplona
c0e97c19c0
Improves wording to download to the phone as opposed to the profile gallery
2026-03-10 16:07:45 -04:00
Vitor Pamplona
b4184d2235
Moves the upload file button closer to the image upload
2026-03-10 15:54:03 -04:00
Vitor Pamplona
b2a8a422b2
- Breaks the new Import Follow interface into two screens
...
- Improves user suggestion search by evaluating specific nip-05s and npubs
2026-03-10 15:48:04 -04:00
Vitor Pamplona
dbaa02cdb0
merge
2026-03-10 15:29:28 -04:00
Vitor Pamplona
cdc9ff783d
Accepts INIP05Client on the check and update function
2026-03-10 14:39:33 -04:00
David Kaspar
8f5e69e5ba
Merge pull request #1799 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-10 18:38:29 +00:00
Vitor Pamplona
558e8a2dd2
Adds constructor to DualCase class
2026-03-10 14:37:55 -04:00
Vitor Pamplona
1de38ad9ec
Creates an interface for Nip05Client
2026-03-10 14:37:40 -04:00
Crowdin Bot
132959a5cf
New Crowdin translations by GitHub Action
2026-03-10 18:23:38 +00:00
Vitor Pamplona
9b233c8679
no message
2026-03-10 14:23:31 -04:00
Vitor Pamplona
835001bd6c
Making nip05 client stable
2026-03-10 14:22:06 -04:00
Vitor Pamplona
ccb3ca69dc
Merge pull request #1798 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-10 14:21:39 -04:00
Vitor Pamplona
d69a9fdde1
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
...
* 'main' of https://github.com/vitorpamplona/amethyst :
fix: preserve search screen scroll position across navigation
feat: add audio and PDF file upload support to ShortNotePostScreen
New Crowdin translations by GitHub Action
2026-03-10 13:50:13 -04:00
Vitor Pamplona
9e105e017d
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
...
* 'main' of https://github.com/vitorpamplona/amethyst :
update cz, pt, de, sv
New Crowdin translations by GitHub Action
2026-03-10 13:49:26 -04:00
Crowdin Bot
98a09db9b0
New Crowdin translations by GitHub Action
2026-03-10 17:47:16 +00:00
Vitor Pamplona
7b8352afe2
Merge pull request #1795 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-10 13:45:34 -04:00
Vitor Pamplona
cdecc2087c
Merge pull request #1796 from vitorpamplona/claude/add-audio-pdf-upload-dy1dy
...
Add file upload support for audio and PDF documents
2026-03-10 13:45:23 -04:00
Vitor Pamplona
4ad9e435e0
Merge pull request #1797 from vitorpamplona/claude/fix-search-scroll-position-U10Lv
...
Persist search screen scroll position across navigation
2026-03-10 13:44:24 -04:00
Claude
a64e9bb3cf
fix: preserve search screen scroll position across navigation
...
Replace ephemeral rememberLazyListState() with rememberForeverLazyListState()
so the scroll position is persisted when navigating to a search result and back.
https://claude.ai/code/session_01PmSFQqSMzP51mtqPLwFEtp
2026-03-10 15:15:27 +00:00
Vitor Pamplona
ab9ecdc939
Adds methods to follow a bunch of users at the same time
2026-03-10 11:12:23 -04:00
Claude
a7cec6f5fd
feat: add audio and PDF file upload support to ShortNotePostScreen
...
Add a new "attach file" button that opens a document picker filtered to
audio/* and application/pdf MIME types. This uses OpenMultipleDocuments
contract since PickVisualMedia only supports images/videos.
- Add SelectFromFiles composable with AttachFile icon button
- Add isAudio() and isDocument() helpers to SelectedMedia
- Add FilePreviewPlaceholder for audio/PDF thumbnail display
- Add upload_file string resource
https://claude.ai/code/session_018naEzfHjLRQLgaWAtY4aSz
2026-03-10 14:48:47 +00:00
Vitor Pamplona
b8f9b18506
Moves the account import idea to a route after login
2026-03-10 10:19:18 -04:00
Crowdin Bot
bc7d0fd758
New Crowdin translations by GitHub Action
2026-03-10 14:07:56 +00:00
David Kaspar
f42939c3b0
Merge pull request #1794 from davotoula/update-translations
...
update cz, pt, de, sv
2026-03-10 14:04:37 +00:00
davotoula
1e65228488
update cz, pt, de, sv
2026-03-10 14:56:33 +01:00
David Kaspar
b749fbdb88
Merge pull request #1793 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-10 13:37:53 +00:00
Crowdin Bot
1aa368221a
New Crowdin translations by GitHub Action
2026-03-10 13:30:51 +00:00
Vitor Pamplona
ff4356ce31
Moves away from calling relay feeds "favorites"
2026-03-10 09:26:09 -04:00
Vitor Pamplona
3146b91c59
Make user import stable
2026-03-10 09:13:16 -04:00