mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
docs: add v1.12.0 changelog covering work since v1.11.0
Summarizes the 506 commits / 131 PRs merged since the v1.11.0 release: CLINK payments, private posts/reactions via NIP-17, NIP-101e workouts, LaTeX math rendering, NIP-89 app recommendations, pinned DMs, activity cards, desktop image compression + new media player, and the Quartz relay-server toolkit. User-facing sections are written for end users; build/quartz/cli sections keep developer-level language. https://claude.ai/code/session_01Y8cDkDRV48GYdQd3CR4kuV
This commit is contained in:
@@ -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.0 — Payments, Private Posts & Workouts](v1.12.00.md)
|
||||
- [v1.11.0 — NIP-52 Calendars, On-Chain Zap Polish](v1.11.00.md)
|
||||
- [v1.10.0 — On-Chain zaps](v1.10.00.md)
|
||||
- [v1.09.2 — Fixes](v1.09.02.md)
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# v1.12.0: Payments, Private Posts & Workouts
|
||||
|
||||
Highlights:
|
||||
- **CLINK payments** — a new Lightning payment rail built on Offers and Debits, with spending budgets, NIP-05 offer discovery, and a unified Send Payment screen that brings Lightning, CLINK, on-chain and Cashu together in one place.
|
||||
- **Private posts & reactions** — compose private replies and posts, react/un-react privately, and force-private zaps, all delivered end-to-end encrypted via NIP-17 gift wraps.
|
||||
- **Workouts** — record and browse NIP-101e workout records (kind 1301) in a dedicated Workouts feed.
|
||||
- **Math in notes** — write inline and block LaTeX (`$...$` and `$$...$$`) and have it render right in the timeline.
|
||||
- **Activity cards** — likes, zaps and nutzaps now render as rich gradient "activity cards" that embed the post they reacted to, tappable straight to the thread.
|
||||
- **App recommendations** — editable NIP-89 app recommendations on your profile, with richer app cards, screenshots and author attribution.
|
||||
- **Pinned DMs** — pin your most important conversations to the top of the chat list, synced across your devices.
|
||||
- **Desktop** — image-compression pipeline on upload, a new media player, group-DM parity with Android, a Replies tab, and a refreshed feed.
|
||||
|
||||
## New Features
|
||||
|
||||
### Payments
|
||||
- **CLINK — a new Lightning payment rail.** Pay and get paid through CLINK Offers and Debits, an interoperable Lightning-over-Nostr scheme. Profiles can show a tappable CLINK Offer chip, and you can pay a contact directly from their profile.
|
||||
- **Spending budgets for CLINK debits** — set one-time or recurring spending limits so a debit connection can pull funds up to a cap you control.
|
||||
- **Discover offers by NIP-05** — resolve a person's payment offer straight from their `name@domain` address.
|
||||
- **Unified Send Payment screen** — Lightning, CLINK, on-chain Bitcoin and Cashu/nutzaps are now all reachable from one screen, with a "Pay from" wallet selector to choose which wallet the money leaves.
|
||||
- **Pay Bitcoin payment targets from the in-app on-chain wallet**, and pay a contact's on-chain "Bit" recipient directly.
|
||||
- **Unified payment-rail chips** on the profile header — long-press any chip to copy that destination.
|
||||
- **Nutzap send progress bar** that matches the Lightning experience, plus a Cashu mint top-up screen and per-mint balances.
|
||||
|
||||
### Posting & Privacy
|
||||
- **Compose private replies and private posts** delivered as NIP-17 gift wraps, with an editable "Notify" block so you choose exactly who can read a private post.
|
||||
- **Private reactions and private un-react** — react and remove reactions privately, with safeguards that prevent private content from leaking publicly.
|
||||
- **Force-private zaps on private notes**, and replies to private zaps are routed into the sender's DM room.
|
||||
- **NIP-32 hashtag labels** — add first-class hashtag labels to posts; follow-hashtag labels are published through your outbox relays and surface in the hashtag feed.
|
||||
- **Richer notify chips** in the new-post screen, modernized inline payment cards that surface their descriptions, and quote-reposts (NIP-18) now counted in the repost counter.
|
||||
|
||||
### Chat & DMs
|
||||
- **Pin DM conversations** to the top of your chat list — synced across devices via a NIP-78 app-data event.
|
||||
- **@-mention search in Marmot (MLS) group chats** — search and tag users in the group composer, with conversation participants ranked first and marked with an "In this chat" chip.
|
||||
- **Quoted chat messages** now render inside chat bubbles with the proper chat-reply design, and the redundant reply row is skipped when the message is already quoted inline.
|
||||
- **MLS unread state now persists across app restarts**, and the kind:445 backlog is no longer refetched on every launch.
|
||||
|
||||
### Reading & Feeds
|
||||
- **Render LaTeX math** in notes with `$...$` (inline) and `$$...$$` (block) delimiters.
|
||||
- **Activity cards** — reactions, zaps, likes and nutzaps render as gradient cards that embed the post they're about; a single tap on a like/zap chip opens that event's thread.
|
||||
- **NIP-101e Workouts** — a dedicated feed for workout records (kind 1301).
|
||||
- **Editable NIP-89 app recommendations** on your profile, with screenshots shown in app feed cards, an "by <author>" attribution line, and a full app detail screen.
|
||||
- New community renderers: **Birdex species collections** (kind 12473) and **Agora fundraiser campaigns** (kind 33863).
|
||||
- **Reactions and zaps anchor their own thread** view, and reposts whose boosted kind isn't supported are now hidden instead of showing blank cards.
|
||||
- **Brightness/volume swipe gestures** in fullscreen video, and tap a podcast to open a show screen listing all its episodes.
|
||||
|
||||
### Settings
|
||||
- **Searchable settings** — a search box filters settings rows by title and curated keywords, with prefix matching and an empty-state.
|
||||
|
||||
## Performance
|
||||
|
||||
- Pinned-DM state reads are deferred to the individual row and menu so the chat list stays smooth.
|
||||
- Parsed CLINK offers are cached for NIP-05 lookups (case-insensitive keys).
|
||||
- The "fix missing spaces" rich-text pass now indexes URLs by their first character to avoid repeated scans.
|
||||
|
||||
## Improvements and Bug fixes
|
||||
|
||||
- **Notifications:** likes/zaps replies now correctly reach the "Curated" feed; the legacy "Global" filter migrates once to "Curated"; replies to a like/zap no longer drag in the original liked post's whole thread.
|
||||
- **Note search** no longer matches on `p`, `e`, `a`, `alt` or `client` tags, so searches return cleaner results.
|
||||
- **Anonymous posting:** profile zaps that should be anonymous are no longer accidentally encrypted as private zaps; media uploads in anonymous posts use an ephemeral signer.
|
||||
- **Wallet:** the Cashu wallet row now shows the Cashu logo instead of a generic icon; own on-chain zaps highlight the bolt and show as pending in the counter; tidied wallet screen layout.
|
||||
- **Zap settings:** preset amounts are de-duplicated so drag-to-reorder keeps working, and the chip-drag interaction was fixed.
|
||||
- **Cashu top-up** is now crash-safe on retry — funds are checkpointed the instant they leave the wallet and never re-moved on a retry.
|
||||
- **Tor:** relay backoff is honored during Tor bootstrap; a new "money operations" relay category keeps payment traffic on the right transport.
|
||||
- **Metadata:** a non-spec birthday value can no longer drop an entire profile.
|
||||
- **Deletions (NIP-09):** deleting a note now properly severs child back-references and detaches on-chain-zap, nutzap and channel sources from the cache.
|
||||
- Numerous audit and hardening fixes across the private-posts, CLINK, and MLS paths (off-main-thread crypto, leak prevention, share/bookmark hidden on private notes).
|
||||
- Reduced runtime log noise and fixed several edge-case crashes.
|
||||
|
||||
## Desktop
|
||||
|
||||
- **Image compression on upload** — a new compression pipeline with an Image Compression settings panel, per-post quality presets, batch progress in the composer, a preview-then-publish gate, and a fail-loud dialog if compression fails.
|
||||
- **New media player** — replaced vlcj with kdroidFilter's ComposeMediaPlayer (JCodec/FFmpeg backend) for video playback.
|
||||
- **Group DM parity with Android** — desktop now handles group direct messages the same way.
|
||||
- **Replies tab** on the user profile, plus reply context (parent embed + label) shown inline in feeds.
|
||||
- **Feed refresh** — inline card expansion, a "New posts" chip that slides in from the top, stick-to-top on prepend, and wired-up like/zap/comment actions.
|
||||
- Copy a Blossom image URL on click with a hover tooltip and snackbar; collapsed-sidebar polish (tighter ripple + hover tooltips); Amethyst logo on the Tor and account-loading splashes.
|
||||
- Restored inter-word spacing in rich text with mentions/hashtags, and fixed parent-author metadata loading.
|
||||
- **Namecoin diagnostics** card ported from the Android settings.
|
||||
|
||||
## Cli
|
||||
|
||||
- `amy offer` — CLINK offer info and request, including `--payer-data`.
|
||||
- `amy debit` — CLINK debit info, pay and budget.
|
||||
- `amy zap --with <ndebit>` — settle a zap invoice via a CLINK debit.
|
||||
- `amy offer discover <nip05>` — resolve a profile's offer through NIP-05.
|
||||
- Closed CLINK parity gaps (profile offer, follow, offer pay, GFY detail) and added a clink-headless interop harness.
|
||||
|
||||
## Quartz
|
||||
|
||||
- **Relay-server toolkit** — major work toward running a relay from Quartz: a `Flow<Event>` REQ-responder SPI with a storage-free dispatch engine, NIP-50 search parsing, suspendable auth hooks, and split engine/backend/policy packages.
|
||||
- **NIP-45 approximate COUNT** via HyperLogLog construction, with wire support.
|
||||
- **NIP-11** improvements — the missing `banner` field, relay limits as a single source of truth served over NIP-11.
|
||||
- **Connection observability** — stable per-connection ids and a per-connection `RequestContext` threaded into the event source; auth identity moved from policy into connection scope.
|
||||
- **NIP-46** bunker fix for double-resume and retry id-reuse races.
|
||||
- Fixed `q` (quote) tags being dropped by an inverted guard, and registered `CommunityRulesEvent` / CLINK DTO serializers (incl. Kotlin/Native targets).
|
||||
|
||||
## Build & Documentation
|
||||
|
||||
- Updated all dependencies (Kotlin, Compose Multiplatform 1.11.1, Coil 5, OkHttp 5, Jackson, AndroidX, Firebase, and more); the Blossom interceptor test was adapted to OkHttp 5's `Interceptor.Chain`.
|
||||
- `commons` `commonTest` now compiles and runs on iOS targets, and CI runs the shared `commonTest` on iOS for `:commons`.
|
||||
- Split the monolithic CHANGELOG into per-version files under `docs/changelog/`.
|
||||
- A large SonarQube cleanup pass (S1871) merging duplicate `when`/`if` arms across the codebase, plus `Log` lambda-overload migrations.
|
||||
- Documented an Amethyst→commons migration plan and target package hierarchy, refreshed several Claude skills and the Namecoin design doc, and added a rule requiring a license check when introducing any new dependency.
|
||||
- `versionName` branch detection now sets the git cwd so it works inside git worktrees.
|
||||
|
||||
## Contributors
|
||||
|
||||
- Vitor Pamplona (@npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z)
|
||||
- davotoula
|
||||
- nrobi144
|
||||
- mstrofnone
|
||||
- Daneul Kim
|
||||
|
||||
## Translations
|
||||
|
||||
Community translations contributed through Crowdin across 50+ locales, including Arabic, Bengali, Catalan, Czech, German, Greek, Spanish, Persian, Finnish, French, Gujarati, Hindi, Croatian, Hungarian, Indonesian, Italian, Hebrew, Japanese, Kazakh, Korean, Lithuanian, Latvian, Dutch, Polish, Portuguese (BR/PT), Russian, Slovenian, Serbian, Swedish, Swahili, Tamil, Thai, Turkish, Ukrainian, Vietnamese, and Chinese (Simplified/Traditional/Hong Kong). New CLINK, Send Payment, workouts, chat-history, reply-search and on-chain-failure strings (cs, de, sv, pt-BR) were added directly.
|
||||
Reference in New Issue
Block a user