# 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._
