Vitor Pamplona
71242e50d2
Merge pull request #1933 from vitorpamplona/claude/improve-navhost-performance-AE9WZ
...
perf: move cache lookups from NavHost route lambdas into screen composables
2026-03-24 17:42:34 -04:00
Vitor Pamplona
5d0f9ac866
Cleaning up residue from removing the need for rfc 3986 and smpForKmp
2026-03-24 17:41:20 -04:00
Vitor Pamplona
ad9596ab92
Fixes flow value and improves tor binding lifecycle.
2026-03-24 17:32:24 -04:00
Vitor Pamplona
d847c06979
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
...
* 'main' of https://github.com/vitorpamplona/amethyst :
New Crowdin translations by GitHub Action
2026-03-24 17:23:31 -04:00
Vitor Pamplona
0d8b4e8baa
merge
2026-03-24 17:21:52 -04:00
Vitor Pamplona
70d034e50c
Merge pull request #1930 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-24 17:20:31 -04:00
Vitor Pamplona
f11172216d
Improvements to the status of attestations. Validity first, then Processing status.
2026-03-24 17:20:11 -04:00
Claude
2ef8be8fdc
perf: move cache lookups from NavHost route lambdas into screen composables
...
Route lambdas in NavHost run during navigation composition and should be
kept lightweight. Cache lookups (getNoteIfExists, checkGetOrCreateNote,
getOrCreateAddressableNote) and object construction (RoomId,
RelayUrlNormalizer) are now deferred to the screen composables themselves,
either via remember {} or inside LaunchedEffect blocks.
Affected screens: PublicChatChannelScreen, LiveActivityChannelScreen,
EphemeralChatScreen, GeoHashPostScreen, HashtagPostScreen,
ReplyCommentPostScreen, NewProductScreen, LongFormPostScreen,
ShortNotePostScreen, NewPublicMessageScreen,
ImportFollowListPickFollowsScreen.
https://claude.ai/code/session_01NrVHL4zdCghQvqE8xmi4Gf
2026-03-24 21:18:40 +00:00
Crowdin Bot
cc850c5b7f
New Crowdin translations by GitHub Action
2026-03-24 21:17:34 +00:00
Vitor Pamplona
728ff9a4cd
Merge pull request #1926 from vitorpamplona/claude/reply-click-navigation-7lKuO
...
feat: scroll to replied message when clicking reply preview in chat
2026-03-24 17:16:16 -04:00
Vitor Pamplona
6f9fc23a64
Merge pull request #1929 from vitorpamplona/claude/relay-info-dialog-uuE8W
...
feat: make profile relay rows open relay info dialog
2026-03-24 17:16:01 -04:00
Claude
bcdaf8630c
feat: make relay rows clickable to open relay info dialog on profile page
...
Adds onClick parameter to RelayCompose and navigates to RelayInformationScreen
when a relay row is tapped in the profile relay tab.
https://claude.ai/code/session_01PBFQz53xzXoFsEHD5Ghyqr
2026-03-24 20:34:01 +00:00
Vitor Pamplona
2d25bb2592
Sorts followers into a set to avoid LazyColumn key conflicts.
2026-03-24 14:23:21 -04:00
Vitor Pamplona
405d1d0519
Merge pull request #1928 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-24 13:42:23 -04:00
Crowdin Bot
88042f06d4
New Crowdin translations by GitHub Action
2026-03-24 17:40:05 +00:00
Vitor Pamplona
8437a819f8
Merge pull request #1909 from KotlinGeekDev/kmp-completeness
...
Kmp completeness, part 3 - adios, Swift bridge.
2026-03-24 13:38:44 -04:00
Vitor Pamplona
cef07a2460
Fixes single label domains with non ascii chars around them
2026-03-24 13:33:14 -04:00
Vitor Pamplona
2a2c61973e
Avoids crashing the app in weird urls.
2026-03-24 13:30:36 -04:00
KotlinGeekDev
349781d9be
Use uri-reference-kmp in commonMain. Remove platform-specific implementations.
2026-03-24 16:34:13 +01:00
KotlinGeekDev
334aabbf02
Merge branch 'upstream-main' into kmp-completeness
2026-03-24 16:12:14 +01:00
KotlinGeekDev
2933454fb6
Merge branch 'main' of https://github.com/vitorpamplona/amethyst into upstream-main
...
# Conflicts:
# quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/URLs.ios.kt
2026-03-24 16:11:04 +01:00
Vitor Pamplona
09054d6ac5
Fixes pool rendering when one label is large and the other is small
2026-03-24 10:58:59 -04:00
Claude
4d8be5e272
feat: scroll to replied message when clicking reply preview in chat
...
When a user clicks on the reply preview (inner quote) in a chat message,
the chat feed now scrolls to the original replied-to message in the same
screen instead of doing nothing.
https://claude.ai/code/session_01UF4VxoWGvvvwtLYBLBYw9w
2026-03-24 14:51:39 +00:00
Claude
0ad3180fc5
feat: add anonymous reply with throwaway keypair
...
Allow users to reply to notes using a fresh, randomly generated keypair
that is not linked to their account. When the "Anonymous" toggle is
activated in the compose screen, the reply is signed with a new
throwaway identity and broadcast to the user's outbox relays without
being cached as the user's own event.
- Add AnonymousPostButton composable (PersonOff icon toggle)
- Add wantsAnonymousPost state to ShortNotePostViewModel
- Add signAnonymouslyAndBroadcast to Account (creates temp KeyPair)
- Show warning banner and hide user avatar when anonymous mode is on
- Add string resources for anonymous post UI
https://claude.ai/code/session_013MaeT2T9Bg4HaVe2ACNADy
2026-03-24 14:25:25 +00:00
Vitor Pamplona
c913c0e1ab
Merge pull request #1921 from vitorpamplona/claude/hide-video-controls-k09Ga
...
Hide video controls on playback start
2026-03-24 10:20:55 -04:00
Vitor Pamplona
30ff9ab09b
Merge pull request #1918 from vitorpamplona/claude/draggable-video-progress-CQODi
...
feat: add drag-to-seek on video progress indicator
2026-03-24 10:12:31 -04:00
Vitor Pamplona
159f1a121b
Merge pull request #1916 from vitorpamplona/claude/add-multiple-choice-polls-CQUAv
...
feat: add multiple choice poll type selector
2026-03-24 10:07:33 -04:00
Vitor Pamplona
9b5b50f237
Merge branch 'main' of https://github.com/vitorpamplona/amethyst
...
* 'main' of https://github.com/vitorpamplona/amethyst :
code review: - Removed redundant equality guards in SideEffect — MutableState already suppresses no-op writes for value types - Changed mutableStateOf({}) to mutableStateOf(null) with explicit nullable type — clearer intent, no accidental no-op invocation - stopRecording() now early-returns with ?: return when not recording, so the Toast only shows for genuinely failed recordings (too short)
entire solid recording indicator bar stops recording when tapped, not just the small stop icon.
New Crowdin translations by GitHub Action
update skill
update translations: CZ, DE, PT, SE
2026-03-24 10:00:10 -04:00
Vitor Pamplona
898e6ac677
Added credits
2026-03-24 09:41:23 -04:00
Vitor Pamplona
d6d4bdc5e3
avoids duplicating quote tags by key + value
2026-03-24 09:40:02 -04:00
Vitor Pamplona
c39eca5172
Add new utility methods
2026-03-24 09:39:09 -04:00
Vitor Pamplona
3d9efa9938
Tries to solve a duplicate user in a lazy column bug
2026-03-24 09:33:50 -04:00
Vitor Pamplona
11dabd46ba
Checks if p tags are user pubkeys when loading drafts.
2026-03-24 09:33:37 -04:00
Vitor Pamplona
94e708b5fc
Reduces the need to compute naddr to index articles in bookmarks
2026-03-24 09:32:38 -04:00
Vitor Pamplona
8d81d6d57c
Removes the clickable NIP-05 url in the @ tagging of users
2026-03-24 09:30:40 -04:00
Vitor Pamplona
8c4b2fe62b
Makes sure quotes only happen once in events.
2026-03-24 09:30:07 -04:00
Vitor Pamplona
514e90ff17
Fixes non http uris in the references tag
2026-03-24 09:13:48 -04:00
KotlinGeekDev
4c14554263
Merge branch 'vitorpamplona:main' into kmp-completeness
2026-03-24 13:27:40 +01:00
nrobi144
efa294ea72
feat(highlights): add article highlights and note-taking system
...
Phase 1: HighlightData model + DesktopHighlightStore (Preferences-based)
Phase 2: Text selection highlight via Cmd+H/Cmd+Shift+H, inline bold/italic
rendering, HighlightAnnotationDialog, SelectionContainer wrapping
Phase 3: MyHighlightsScreen with grouped view, HighlightPublishAction for
NIP-84 (kind 9802), deck/sidebar/menu wiring
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 12:16:54 +02:00
David Kaspar
22142d17f9
Merge pull request #1924 from davotoula/larger-stop-area-for-voice-recording
...
Larger stop area for voice recording
2026-03-24 10:59:41 +01:00
nrobi144
c75176891f
feat(reads): integrate long-form into deck layout with zoom and reactions
...
- Wire Article, Editor, Drafts into DeckColumnType + DeckColumnContainer
- Add Drafts to sidebar nav, Add Column dialog, and Window menu
- Add article navigation (onNavigateToArticle) in SinglePaneLayout
- Add NoteActionsRow to ReadsScreen LongFormCards (zaps, reactions, replies)
- Add Cmd+/Cmd- zoom in ArticleReaderScreen via fontScale on RenderMarkdown
- Add kind 30023 to ProfileSubscription for long-form in user profiles
- Add fontScale param to RenderMarkdown using scaled LocalDensity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 11:18:37 +02:00
nrobi144
328fcf86d7
refactor(reads): address all review findings — security, performance, simplicity
...
P1 Critical:
- Add 300ms debounce on editor preview to prevent AST re-parse per keystroke
- Hoist Regex constants in ReadingTimeCalculator and TableOfContents
- Add URI scheme allowlist to editor onLinkClick (was missing vs reader)
- Add MAX_CONTENT_BYTES (100KB) validation before publish
P2 Important:
- Delete MarkdownSpikeScreen (278 LOC spike artifact)
- Delete HighlightCreator (95 LOC, zero callers — YAGNI)
- Delete DraftLongTextNoteEvent (162 LOC, no consumers — YAGNI)
- Replace ArticleMediaRenderer interface with onLinkClick lambda
- Extract inline subscription to FilterBuilders.longFormByAddress()
- Replace SimpleDateFormat with thread-safe DateTimeFormatter
- Remove dead placeholders (bookmark button, reactions row, unused param)
- Cache draft index in memory to avoid redundant disk reads
- Add TODO for publish-before-relay-ack issue
P3 Nice-to-have:
- Remove timestamp from subscription subId for stability
- Remove redundant slug ".." removal (regex handles it)
- Add metadata field length limits (title 256, summary 1024)
- Fix identical isMacOS branches in editor
- Validate image URLs (http/https only) in ArticleHeader
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 11:03:29 +02:00
nrobi144
4fcbffdb3b
feat(reads): Phase 2 — editor, drafts, publish, highlights
...
- Create DraftLongTextNoteEvent (kind 30024) in quartz with EventFactory registration
- Create LongFormPublishAction for signing + publishing kind 30023 events
- Create split-pane ArticleEditorScreen with live markdown preview
- Create MarkdownToolbar (bold, italic, heading, link, image, code, quote)
- Create MetadataPanel (title, summary, banner, tags, slug)
- Create DesktopDraftStore with JSON index + .md files, atomic writes, slug sanitization
- Create DraftsScreen with draft list, delete, new draft button
- Create HighlightCreator dialog for kind 9802 highlight creation
- Add Drafts nav rail entry and Editor/Drafts screen routing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 10:59:52 +02:00
nrobi144
5ef36363cd
feat(reads): Phase 1 — article reader with markdown, ToC, reading time
...
- Add richtext-commonmark deps to commons for shared markdown rendering
- Create RenderMarkdown composable with URL scheme allowlist (security)
- Create ArticleMediaRenderer interface for platform-specific media
- Create ArticleHeader with banner, title, author, reading time metadata
- Create TableOfContents with heading extraction and scroll-spy
- Create ReadingTimeCalculator (238 WPM prose, 80 WPM code, image decay)
- Create ArticleReaderScreen with Medium-style typography (680dp, 1.58x)
- Add DesktopScreen.Article navigation with address tag routing
- Update ReadsScreen to navigate via address tags instead of event IDs
- Responsive ToC sidebar (shown when window > 1100dp)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 10:59:52 +02:00
davotoula
e976bf9e2e
code review:
...
- Removed redundant equality guards in SideEffect — MutableState already suppresses no-op writes for value types
- Changed mutableStateOf({}) to mutableStateOf(null) with explicit nullable type — clearer intent, no accidental no-op invocation
- stopRecording() now early-returns with ?: return when not recording, so the Toast only shows for genuinely failed recordings (too short)
2026-03-24 09:25:07 +01:00
davotoula
4e43b14b09
entire solid recording indicator bar stops recording when tapped, not just the small stop icon.
2026-03-24 09:25:07 +01:00
David Kaspar
6f3308e45c
Merge pull request #1923 from vitorpamplona/l10n_crowdin_translations
...
New Crowdin Translations
2026-03-24 09:00:06 +01:00
Crowdin Bot
1dbe552821
New Crowdin translations by GitHub Action
2026-03-24 07:35:59 +00:00
davotoula
6436668808
update skill
2026-03-24 08:32:56 +01:00
davotoula
346a7ecac2
update translations: CZ, DE, PT, SE
2026-03-24 08:27:32 +01:00