Commit Graph
10246 Commits
Author SHA1 Message Date
Vitor PamplonaandClaude e72bbdb59d refactor(wip): add TextFieldState to ViewModels and update call sites
https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:06 +00:00
Vitor PamplonaandClaude 92d67f670a fix: restore SellProduct.kt with correct TextFieldState migration
https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:06 +00:00
Vitor PamplonaandClaude 1a9bcbf3f8 fix: restore PrivateMessageEditFieldRow.kt with correct TextFieldState migration
https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:06 +00:00
Vitor PamplonaandClaude 62e8b35c1c refactor(wip): migrate ViewModels and call sites to TextFieldState
- Add messageState (TextFieldState) to all IMessageField implementations
- Add TextFieldState properties: toUsersState, subjectState, titleState,
  priceState, locationTextState to respective ViewModels
- Update all ThinPaddingTextField call sites: value→state,
  visualTransformation→outputTransformation, singleLine→lineLimits
- Add forwardZapToEdittingState to IZapField
- Add messageState to EditPostViewModel and ChannelNewMessageViewModel

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:06 +00:00
Vitor PamplonaandClaude 1878d9fd13 refactor(wip): add TextFieldState to ViewModels and call sites
Part of the BasicTextField migration. Adding TextFieldState properties
alongside existing TextFieldValue for backward compatibility.

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:06 +00:00
Vitor PamplonaandClaude 019d53b77e refactor(wip): migrate ViewModels and call sites to TextFieldState
- Add messageState (TextFieldState) to all IMessageField implementations
- Update ThinPaddingTextField call sites: value→state,
  visualTransformation→outputTransformation, singleLine→lineLimits
- Add TextFieldState properties for toUsers, subject, title, price,
  locationText in respective ViewModels

WIP: remaining files to be pushed in follow-up commits

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:05 +00:00
Vitor PamplonaandClaude 6554ef78be refactor(wip): migrate ThinPaddingTextField to new BasicTextField(TextFieldState)
Migrate from the old BasicTextField (TextFieldValue/onValueChange) to the new
BasicTextField (TextFieldState) which properly sets EditorInfo.contentMimeTypes
when contentReceiver modifier is present, enabling GIF keyboard support.

Core changes:
- ThinPaddingTextField: uses new BasicTextField with TextFieldState,
  OutputTransformation, TextFieldDecorator, TextFieldLineLimits
- UrlUserTagTransformation: converted from VisualTransformation to
  OutputTransformation using TextFieldBuffer.addStyle/replace
- IMessageField: simplified to val messageState: TextFieldState
- MessageField: uses contentReceiver + new ThinPaddingTextField
- RichContentTextField: deleted (no longer needed)
- ViewModels: added messageState (TextFieldState) to IMessageField impls

WIP: call sites still need updating to new ThinPaddingTextField API

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:05 +00:00
Vitor PamplonaandClaude 6945f8a934 fix: use AndroidView with EditorInfo for GIF keyboard support
The Compose contentReceiver modifier doesn't set EditorInfo.contentMimeTypes
on the old BasicTextField, so Android keyboards never enable the GIF button.

Replace with an AndroidView wrapping EditText that uses
ViewCompat.setOnReceiveContentListener() to properly declare supported
MIME types to the IME, enabling the GIF/sticker button on keyboards
like Gboard.

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:05 +00:00
Claude 7caabd9ea2 feat: add GIF keyboard support to short new post screen
Add contentReceiver modifier to MessageField to receive images/GIFs
directly from Android's keyboard. When a GIF is selected from the
keyboard, its URI is passed to the post ViewModel's selectImage flow
for upload handling.

https://claude.ai/code/session_014FZPV258VfdeE1mcyeU7wU
2026-03-28 16:30:05 +00:00
Vitor PamplonaandGitHub 0054c01921 Merge pull request #1984 from vitorpamplona/claude/parallelize-db-tests-I6D3g
Refactor forEachDB to use coroutines with parallel execution
2026-03-28 12:22:02 -04:00
Claude d299b65c8a feat: make forEachDB action suspending, remove redundant runBlocking
Change the action lambda to `suspend (EventStore) -> Unit` so callers
can use suspend functions directly. Remove the now-unnecessary
runBlocking wrapper around delay() in ExpirationTest.

https://claude.ai/code/session_01TQRzVTAXBVWRGstcsapA5F
2026-03-28 16:15:23 +00:00
Claude 0889473c15 feat: parallelize BaseDBTest forEachDB using coroutines
Each EventStore uses an independent in-memory SQLite database, so tests
can safely run concurrently. This launches all 16 DB configurations in
parallel via coroutines on Dispatchers.Default instead of running them
sequentially.

https://claude.ai/code/session_01TQRzVTAXBVWRGstcsapA5F
2026-03-28 16:12:44 +00:00
Vitor PamplonaandGitHub 009326ae0b Merge pull request #1982 from davotoula/fix-for-githooks-in-git-worktree
Handle git worktree where .git is a file, not a directory
2026-03-28 12:08:28 -04:00
davotoula 60686d0fef fix: resolves the .git file in worktrees by reading the gitdir: pointer and using the actual git directory for hooks installation 2026-03-28 16:59:01 +01:00
Vitor Pamplona 4c5606cd8d Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  feat: complete NIP-85 Trusted Assertions implementation in quartz
2026-03-28 11:51:50 -04:00
Vitor Pamplona dd2ec3f05f moves the initialization of the Secp lib to the setup of the test to make sure it doesn't affect the expiration timing tests. 2026-03-28 11:50:43 -04:00
Vitor Pamplona b147e6d4c3 Fixes missing actual 2026-03-28 11:39:25 -04:00
Vitor Pamplona 2745b29bf7 removing some warnings 2026-03-28 11:39:15 -04:00
Vitor PamplonaandGitHub be62ca5374 Merge pull request #1981 from vitorpamplona/claude/implement-nip-85-hBlbp
Add NIP-85 trusted assertions support for events and addressables
2026-03-28 11:36:29 -04:00
Vitor PamplonaandGitHub b51efb5caf Merge branch 'main' into claude/implement-nip-85-hBlbp 2026-03-28 11:35:19 -04:00
Vitor Pamplona 5776e74bb5 Fixing some warnings 2026-03-28 11:33:03 -04:00
Vitor Pamplona eaa45aee05 Fixes constructor issue in this BigDecimal Implementation 2026-03-28 11:31:14 -04:00
Vitor PamplonaandGitHub c11e41529e Merge pull request #1980 from davotoula/toast-for-downloads
Show toast instead of dialog on media download success
2026-03-28 10:36:06 -04:00
davotoula cbf9b31a3f feat: show toast instead of dialog on media download success
Replace the interruptive AlertDialog with a brief Android Toast when
media downloads complete. Errors still show the full dialog for visibility.
2026-03-28 15:04:27 +01:00
Claude d40dccde11 feat: complete NIP-85 Trusted Assertions implementation in quartz
Add full compliance with NIP-85 by implementing all four assertion event
kinds and their associated tag types in the nip85TrustedAssertions package:

- Kind 30382 (User Assertions): Add all 15 missing tag parsers and
  builders (first_created_at, post_cnt, reply_cnt, reactions_cnt, all
  zap/report/topic/active_hours tags) to ContactCardEvent
- Kind 30383 (Event Assertions): New EventAssertionEvent with rank,
  comment_cnt, quote_cnt, repost_cnt, reaction_cnt, zap_cnt, zap_amount
- Kind 30384 (Addressable Event Assertions): New
  AddressableAssertionEvent with same tags as 30383
- Kind 30385 (External ID Assertions): New ExternalIdAssertionEvent
  with rank, comment_cnt, reaction_cnt
- Add ProviderTypes for all new assertion kinds (30383/30384/30385)
- Register all new event kinds in EventFactory
- Add comprehensive tests for all assertion event types

https://claude.ai/code/session_01XZQsSnkHJ6tFiPS7fRLzPJ
2026-03-28 13:59:12 +00:00
Vitor PamplonaandGitHub e3c6c35688 Merge pull request #1973 from vitorpamplona/claude/review-quartz-multiplatform-00Oi0
feat: add linuxX64 KMP target and restructure native source sets
2026-03-28 09:54:11 -04:00
Vitor PamplonaandGitHub 05e7b305a7 Merge pull request #1977 from vitorpamplona/claude/polls-feed-screen-DQ78j
Add Polls feed screen with filtering and discovery support
2026-03-28 09:53:50 -04:00
Vitor PamplonaandGitHub 3b15242a02 Merge pull request #1978 from vitorpamplona/claude/nip-a4-compliance-mftpU
Add NIP-A4 support: k tag in zap requests and e tag filtering
2026-03-28 09:53:15 -04:00
Claude 5db9330306 fix: update test packages after nipA4PublicMessages rename
Move test files from experimental.publicMessages to nipA4PublicMessages
to match the package rename on main.

https://claude.ai/code/session_019JsSsTTXivnNWiAtE5DE1R
2026-03-28 13:52:02 +00:00
Claude 559ad40223 feat: add Polls feed screen with Global/Follows filter
Add a dedicated Polls-only feed screen (NIP-88 kind 1068, non-zap polls)
accessible from the left navigation drawer. The screen includes the
standard top nav filter bar for Global/Follows/etc filtering, reusing
the Discovery follow list settings.

New files:
- PollsFeedFilter: filters LocalCache for PollEvent only
- PollsFilterAssembler + PollsSubAssembler: relay subscriptions
- PollsScreen: main screen with pull-to-refresh feed
- PollsTopBar: top bar with Global/Follows filter spinner
- Relay filter subassemblies for authors, follows, global, hashtag

Wiring:
- Route.Polls added to navigation
- Polls entry in left drawer with ic_poll icon
- pollsFeed added to AccountFeedContentStates
- PollsFilterAssembler added to RelaySubscriptionsCoordinator

https://claude.ai/code/session_013JWrsYpQczmZtpW3WwRRfK
2026-03-28 13:51:51 +00:00
Vitor PamplonaandGitHub 3ad42d2d8b Merge pull request #1979 from vitorpamplona/claude/nip24-compliance-check-WvjhO
Add birthday field support to UserMetadata
2026-03-28 09:48:35 -04:00
Claude b465785c27 feat: NIP-A4 compliance - add k tag to zap requests and enforce e tag prohibition
- Add KindTag to LnZapRequestEvent.create() when zapping events, as required
  by NIP-A4 ("NIP-57 zaps MUST include the k tag to 24")
- Enforce e tag prohibition in all PublicMessageEvent.build() methods by
  stripping any e tags from the tag builder output (NIP-A4: "e tags must not
  be used")
- Add comprehensive tests for both changes

https://claude.ai/code/session_019JsSsTTXivnNWiAtE5DE1R
2026-03-28 13:48:29 +00:00
Vitor Pamplona 9b483f903d Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
  feat: implement NIP-32 Labeling protocol in quartz
2026-03-28 09:41:26 -04:00
Vitor Pamplona 0c7e5fddea Fixes test cases 2026-03-28 09:41:09 -04:00
Claude 46fd8c651c feat: add NIP-24 birthday field to UserMetadata
NIP-24 defines an optional birthday object with year, month, and day
fields for kind 0 metadata events. This was the only NIP-24 field
missing from Quartz's UserMetadata model.

https://claude.ai/code/session_01Sbj2DF5XDtEuDCeJ7yR6oS
2026-03-28 13:30:51 +00:00
Vitor PamplonaandGitHub 7e1ff20e6d Merge pull request #1976 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-28 09:30:27 -04:00
Crowdin Bot 89b0064a11 New Crowdin translations by GitHub Action 2026-03-28 13:27:22 +00:00
Vitor PamplonaandGitHub b5a0c8b6d5 Merge pull request #1975 from vitorpamplona/claude/implement-nip-32-gWs2E
Add NIP-32 Labeling support with LabelEvent and tag parsing
2026-03-28 09:25:48 -04:00
Vitor Pamplona 943d46e01a Moves public messages out of experimental 2026-03-28 09:18:34 -04:00
Vitor Pamplona 5d281c34d5 Moves trusted assertions out of experimental 2026-03-28 09:16:44 -04:00
Vitor PamplonaandGitHub bfad08a4a7 Merge pull request #1974 from greenart7c3/claude/add-workflow-permissions-OO87O
Add explicit permissions to GitHub Actions workflows
2026-03-28 08:45:08 -04:00
Claude 8cbd11816e ci: add explicit permissions to workflows 2026-03-28 09:32:48 +00:00
Claude aa15085f40 feat: implement NIP-32 Labeling protocol in quartz
Add kind 1985 LabelEvent with L (namespace) and l (label) tag support
for distributed moderation, content classification, and license assignment.
Includes tag parsers, builder extensions, self-reporting helpers, and tests.

https://claude.ai/code/session_011t5ZoP1BdgZTT5Cen9GH5z
2026-03-28 03:57:46 +00:00
Claude 5fc7526076 feat: add linuxX64 KMP target and restructure native source sets
Restructure quartz module's Kotlin/Native source set hierarchy for
proper multiplatform coverage. Adds linuxX64 target with complete
actual implementations for all expect declarations.

Source set hierarchy:
  commonMain
  ├── jvmAndroid → jvmMain, androidMain
  └── nativeMain (shared pure Kotlin)
      ├── appleMain (Apple APIs) → iosMain
      └── linuxMain (POSIX/OpenSSL) → linuxX64Main

nativeMain: Address, OptimizedJsonMapper, EventHasherSerializer,
  ChessEngine, Secp256k1Instance, BitSet, StringExt, io/ utilities

appleMain: Log (NSLog), SecureRandom (SecRandomCopyBytes),
  UriParser (NSURLComponents), BigDecimal (NSDecimalNumber),
  GZip (zlib), Sha256 (CC_SHA256), crypto (Apple provider),
  LargeCache (CacheMap), UrlEncoder, UnicodeNormalizer

linuxMain: Log (println), SecureRandom (/dev/urandom),
  UriParser (pure Kotlin), BigDecimal (pure Kotlin),
  GZip (zlib cinterop), Sha256 (OpenSSL), crypto (OpenSSL),
  LargeCache (AtomicReference<LinkedHashMap>), UrlEncoder

macOS targets deferred pending negentropy-kmp macOS artifacts.
macosMain/Platform.kt retained as scaffold for future activation.

https://claude.ai/code/session_01M9CAuPUV3TfPB2xShnsBhw
2026-03-28 02:55:20 +00:00
Vitor Pamplona 007a0b0d43 More descriptive counters 2026-03-27 21:42:35 -04:00
Vitor Pamplona 391a0bfab2 Merge branch 'main' of https://github.com/vitorpamplona/amethyst
* 'main' of https://github.com/vitorpamplona/amethyst:
  New Crowdin translations by GitHub Action
  sonar fixes
  update translations: CZ, DE, PT, SE
  New Crowdin translations by GitHub Action
  update video compression library to latest
  update to use new limit short size bit more aggressive compression defaults
  add local maven repo for easier library development
2026-03-27 19:40:04 -04:00
Vitor Pamplona ea8fbd4af9 Making a localhost:3030 string work correctly in the URL Detector 2026-03-27 19:34:55 -04:00
Vitor PamplonaandGitHub 16dd14f403 Merge pull request #1972 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-03-27 19:30:35 -04:00
Crowdin Bot 8f3c9d2d93 New Crowdin translations by GitHub Action 2026-03-27 23:25:02 +00:00
davotoula 44b8ef5d8f sonar fixes 2026-03-28 00:23:31 +01:00