Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vitor Pamplona
2026-06-19 19:01:59 -04:00
co-authored by Claude Opus 4.8
parent 19b1797f2d
commit 805f7e8e84
6 changed files with 89 additions and 14 deletions
+3 -3
View File
@@ -7,7 +7,7 @@ description: Integration guide for using the Quartz Nostr KMP library in externa
Reference for integrating `com.vitorpamplona.quartz:quartz` into external Nostr KMP projects.
**Published artifact**: `com.vitorpamplona.quartz:quartz:1.12.5` (Maven Central)
**Published artifact**: `com.vitorpamplona.quartz:quartz:1.12.6` (Maven Central)
**Targets**: JVM 21+, Android (minSdk 21+), iOS (XCFramework `quartz-kmpKit`)
**License**: MIT
@@ -19,7 +19,7 @@ Reference for integrating `com.vitorpamplona.quartz:quartz` into external Nostr
```toml
[versions]
quartz = "1.12.5"
quartz = "1.12.6"
[libraries]
quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref = "quartz" }
@@ -41,7 +41,7 @@ kotlin {
```kotlin
dependencies {
implementation("com.vitorpamplona.quartz:quartz:1.12.5")
implementation("com.vitorpamplona.quartz:quartz:1.12.6")
}
```
@@ -3,7 +3,7 @@
## Current version
```
com.vitorpamplona.quartz:quartz:1.12.5
com.vitorpamplona.quartz:quartz:1.12.6
```
Check latest: https://central.sonatype.com/artifact/com.vitorpamplona.quartz/quartz
@@ -16,7 +16,7 @@ Check latest: https://central.sonatype.com/artifact/com.vitorpamplona.quartz/qua
```toml
[versions]
quartz = "1.12.5"
quartz = "1.12.6"
[libraries]
quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref = "quartz" }
@@ -55,7 +55,7 @@ kotlin {
```kotlin
// build.gradle.kts (app module)
dependencies {
implementation("com.vitorpamplona.quartz:quartz:1.12.5")
implementation("com.vitorpamplona.quartz:quartz:1.12.6")
}
```
@@ -70,7 +70,7 @@ plugins {
}
dependencies {
implementation("com.vitorpamplona.quartz:quartz:1.12.5")
implementation("com.vitorpamplona.quartz:quartz:1.12.6")
// JNA needed for libsodium (NIP-44) on JVM
implementation("net.java.dev.jna:jna:5.18.1")
}
+5 -5
View File
@@ -297,16 +297,16 @@ repositories {
Add the following line to your `commonMain` dependencies:
```gradle
implementation('com.vitorpamplona.quartz:quartz:1.12.5')
implementation('com.vitorpamplona.quartz:quartz:1.12.6')
```
Variations to each platform are also available:
```gradle
implementation('com.vitorpamplona.quartz:quartz-android:1.12.5')
implementation('com.vitorpamplona.quartz:quartz-jvm:1.12.5')
implementation('com.vitorpamplona.quartz:quartz-iosarm64:1.12.5')
implementation('com.vitorpamplona.quartz:quartz-iossimulatorarm64:1.12.5')
implementation('com.vitorpamplona.quartz:quartz-android:1.12.6')
implementation('com.vitorpamplona.quartz:quartz-jvm:1.12.6')
implementation('com.vitorpamplona.quartz:quartz-iosarm64:1.12.6')
implementation('com.vitorpamplona.quartz:quartz-iossimulatorarm64:1.12.6')
```
Check versions on [MavenCentral](https://central.sonatype.com/search?q=com.vitorpamplona.quartz)
+1
View File
@@ -2,6 +2,7 @@
Release notes for Amethyst, one file per version. Files are named with zero-padded version numbers so they sort correctly in any file browser. Use [`TEMPLATE.md`](TEMPLATE.md) as the starting point for the next release.
- [v1.12.6 — Napplets, Static Sites & Cashu Multi-Mint](v1.12.06.md)
- [v1.12.5 — macOS Desktop Signing Fix (cont.)](v1.12.05.md)
- [v1.12.4 — macOS Desktop Signing Fix](v1.12.04.md)
- [v1.12.3 — Relay Latency Health & a macOS Notarization Fix](v1.12.03.md)
+74
View File
@@ -0,0 +1,74 @@
# v1.12.6: Napplets, Static Sites & Cashu Multi-Mint
Highlights:
- New protocol support for **Nostr Web Applets (NIP-5D)** and **static websites
(NIP-5A)**, resolved straight from signed manifests over Blossom.
- Cashu tokens that span **multiple mints** now redeem in full, and both Base64
alphabets are accepted.
- A batch of stability fixes across notifications, playback, feeds, and the
emoji pack screens.
## New Features
- Add support for **Nostr Web Applets (NIP-5D)** and **static websites
(NIP-5A)**. Napplet manifests (snapshot/root/named kinds) and the NIP-5A
aggregate-hash layer land in Quartz, with a resolver that downloads each
listed Blossom server in order and accepts only the blob whose recomputed
SHA-256 matches the signed manifest — a substituted or corrupted blob fails
verification and is skipped.
## Performance
- Cashu token-prefix dispatch now compares against precomputed `DualCase`
prefixes instead of case-folding the cashuA/cashuB markers on every call.
## Improvements and Bug fixes
- Cashu: redeeming a pasted token now redeems **every mint/keyset group** in it
(previously only the first), validating all mints are in the wallet up front
and summing the redeemed amounts. The parser also tolerates both standard and
url-safe Base64 and mixed-case `cashuA`/`cashuB` prefixes.
- Stop the `DisappearingScaffold` top/bottom bars from overshooting their
resting edge during the show/hide animation.
- Dedupe emoji shortcodes in the Emoji Pack screen to prevent a `LazyGrid`
crash, and dedupe emoji pack addresses in the My Emoji List grid.
- Cap media-session artwork to the platform bitmap limit so large covers no
longer crash playback.
- Handle a missing camera app gracefully when taking photos or videos.
- Snapshot live-stream status order before sorting, and snapshot feed filters
too, to avoid `TimSort` "contract violation" crashes.
- Notifications: call `startForeground` on every start command and always
`stopSelf` when foreground promotion fails.
- Guard the Health Connect permission check against service-bind failures.
- Add a descriptive message to the media-download HTTP check.
## Cli
- `amy napplet fetch` resolves and fetches a NIP-5D napplet.
- `amy nsite fetch` resolves and verifies a NIP-5A static site / napplet.
## Quartz
- Implement NIP-5D napplets and the NIP-5A static-site resolver (manifest model,
path lookup, hash verification, Blossom candidate assembly) in `commonMain`,
with HTTP injected so Quartz keeps no networking dependency.
- Move the out-of-band Cashu token parser, the `cashuB` (v4) encoder, and the
token container model into Quartz, so Desktop's rich-text viewer can now parse
received Cashu tokens. Adds `kotlinx-serialization-cbor` (Apache-2.0).
- Centralize Blossom protocol strings in Quartz.
- Never let signer timeouts crash from auto-signing launches.
## Build & Documentation
- Generate the changelog translator credits offline from a committed
`translators.json`, track a rolling "since last tag" contributor list, and
seed it from Crowdin on every sync without rewriting the timestamp each run.
## Contributors
- @npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z
## Translations
- _None this release._
+2 -2
View File
@@ -2,8 +2,8 @@
# Amethyst app version — single source of truth consumed by both Android (amethyst/)
# and Desktop (desktopApp/). `appCode` is the Android versionCode: a monotonic
# integer that must increment on every release, even when `app` is unchanged.
app = "1.12.5"
appCode = "453"
app = "1.12.6"
appCode = "454"
accompanistAdaptive = "0.37.3"
cachemapVersion = "0.2.4"
composeMultiplatform = "1.11.1"