Last Notes
do videos play well on Windows? checking this link issue. It should send to the default browser...
1. Create amazing content
2. There is no 2
Anthropic's IPO filing warns AI could pose "catastrophic or existential risks to humanity."
In the same filing: please buy our stock at a valuation bigger than SpaceX.
Which is it? AI Bad or AI Good?
Anyways, if the most powerful technology of our time is this dangerous, the answer isn't to hand control of it to a handful of companies and their shareholders.
Open models for the win.
https://www.bbc.com/news/articles/cq398p1wd1evo
Did you install from the play store? If so, you need to uninstall first.
You can delete your spam messages if you want to get out. I don't have an exceptions list anywhere in the app.
https://nostr.download/e65ee75ce9aa54fa76aa9a366adcc508a74a3b4ea0b60faaad677f85c2ddd955.png
The amount of posts can't define if it is a spammer or not otherwise a lot of people would be spammers.
The important part is the number of equal posts over and over again. That's the annoying behavior that everybody hates.
Sure, I can always add more rules. But don't put the blame on me for something you did to yourself. I don't know why you would call News Agencies spammers.
You can advertise for free.. just not all the time like a spammer.
Because you kept sending the same message on our all of our chats OVER and OVER and OVER again to send people to a chat you control.
https://nostr.download/02e02d469edb001c083884c57938d9e6545878e906528370260bddc1873d433b.jpg
The spam filter has nothing to do with Web of Trust because it doesn't matter for your trusted network. The spam filter is only for strangers, which by definition is not in your web of trust.
It's funny that Vyram claims he is hidden yet majority of people he interacts with are Amethyst users that can see him just fine...
Some people just talk shit without any proof. And if there is proof, I am more than happy to show exactly why the app has decided to filter them out.
Most of the time is because they think they can just spam everything so that people are forced to see their content.
Nostrich is run by an AI data mining company.
> Mesut Darendeli holds more than 100 patents internationally in the area of data mining, predictive analytics, artificial intelligence and other complex networks.
https://rhxotech.com/
#nevent1q…vt4f
It has been fully built.. Needs a through testing before going public. Has slipped behind
https://fertschnigfotography.com/wp-content/uploads/nostr/c/7/c747ebdcb5a9bde1cf27b8f1db8bf7bda3dce7b0087c966fbe46f04be7c959d0.jpg
#Scotland #hdr #photography
You don't switch from Airbnb, you still use your regular booking platforms for marketing, manage bookings, take payments. Sundvala is to coordinate the team that manages the properties
If you have juggled multiple properties, multiple cleaners, multiple booking platforms you'd know the pain with a messy chat and a spreadsheet.
Hosts: instant overview of property readiness, low stock, any faults, block dates as "private stay" that needs a turnover
House keepers: be able to take on turnover jobs that suit them, see live calendar, know the minute guests are checked out, upload photos of faults or flat readiness
Admin: overview of whole portfolio
Push notifications to relevant team members only. App translated to multiple languages.
Coming "soon": consolidate calendars from multiple booking platforms, read/write api for own hosted booking websites, guest portal
Nothing super original around here. :(
Ish, a Celsius thermometer
Live on ZapStore and Flatpak on Orchard.
#nevent1q…2rd9
#Amethyst v1.19.0: A New Login, Remote Signers on Android, Wayland, and Marketplace Cards
Highlights:
- Redesigns the **login and sign-up screens** around signers: your signer
app or a remote signer first, then the key field, on every platform.
- Adds **NIP-46 remote signer login on Android**, and makes it work with
Opal and other signers that percent-encode their bunker addresses.
- Opens **gift wraps in parallel** for remote-signer accounts: a cold start
that waited ~85s using a remote signer for DMs now takes ~20s.
- Gives the **desktop first-class key storage**: a status card in Key
Backup, a password file when there is no system keyring, and an opt-out.
- Draws **natively on Wayland** in every Linux release, with the
compositor's own title bar where it has one.
- **Compresses videos on desktop** through the system's ffmpeg, with the
same quality table as Android.
- Honors **relay rate limits**: a relay's `rate-limited:` back-off now holds
and re-sends the refused commands instead of losing them.
- Adds cards for **NIP-15 marketplaces**, NIP-85 trust assertions, Trusted
Lists, decentralized lists and NIP-29 group metadata.
## New Features
### Login and Sign-up
- Redesigns the login, sign-up and remote-signer screens on one shared frame:
the logo over a soft glow, rounded fields and buttons, Tor settings as a
chip, and a brand-and-card split on windows 840 dp and wider.
- Shows the same order everywhere: the signer app where one is installed,
the remote signer wherever it works, then "or", then the key field.
- Names and draws the installed signer app ("Login with Amber" and its
icon), or says "a signer app" when there are several.
- Lights up Login once a key is typed, and Create Account once there is a
name, and puts the terms checkbox at the top, gating every way in.
- Puts each error right under what it is about: the key field, the password
field, the signer app's button or the remote signer's button.
- Fits the logged-off screens and the remote-signer dialog on small phones,
and keeps the Add New Account bar above the form, not over it.
- Uses white and frosted cards instead of grey for the login, remote-signer,
key-storage and Key Backup surfaces.
### Remote Signers (NIP-46)
- Logs in with a NIP-46 remote signer on Android too: paste a `bunker://`
or show the `nostrconnect://` code.
- Hands the code to a signer app with Open signer, from an in-app menu when
several take it, never to Amethyst itself.
- Shows the code in a large frame ringed by the logo's colors while it
waits, with Copy, Open signer and the relays as pills.
- Lets you pick the relay your signer uses, or one of your inbox relays,
when it can't reach the defaults.
- Uses relay.nip46.com, nrs.primal.net and bucket.coracle.social, the relays
Amber and Opal default to, instead of relay.nsec.app, which stopped
answering.
- Reads percent-encoded bunker addresses, as Opal writes them, and fails
with an error instead of spinning forever.
- Accepts only an answer that carries the code's secret. Anyone who saw the
code could reply first and pose as the signer.
- Resends the same request on a retry, so a signer that queues requests for
approval (Amber) no longer asks twice.
- Waits five minutes for the signer instead of two, and introduces each
platform by its own name and icon.
- Opens gift wraps, seals and drafts up to 8 at a time ahead of the indexer.
With Amber over NIP-46, a desktop cold start opened its 118 wraps in
~20 s instead of ~85 s.
- Tries remote-signer accounts last when decrypting push notifications, so
an offline bunker no longer holds every other account's notifications.
### Desktop Key Storage
- Shows where your keys live in a status card at the top of Key Backup,
with Try again when the keychain refuses and Unlock when the key file is
locked.
- Keeps keys in a password-protected NIP-49 file (`keys.ncryptsec`) when the
computer has no system keyring, asking for the password once per launch.
- Adds "Remember my key on this device": turn it off and the key is asked
for at each launch.
- Adds Save keys to take back this run's "Don't save".
- Stops rewriting the private key to the macOS Keychain on every settings
save, which brought the Keychain password prompt back over and over.
- Fixes view-only, bunker and signer-app logins failing to load after a
restart on Windows and Linux.
- Fixes the Linux OS keyring in release builds (deb, rpm, AppImage and
Flatpak), which always fell back to the password file.
- Treats KWallet's missing item as absent, so a fresh KWallet no longer
shows "Keychain error" on every launch.
- Upgrades a read-only session when you Unlock, Try again or log in again
with the nsec.
- Reports a key the vault could not keep once per run, instead of on every
settings save.
- Keeps the `nostrconnect://` secret out of the logs.
### Desktop Video Compression
- Compresses videos through the system's ffmpeg at the quality slider's
level, with Android's resolution and bitrate table, HEVC when asked, and
H.264 otherwise.
- Strips video metadata by remuxing the original when it is the one going
up, and asks before uploading if the strip fails.
- Names the picked video and its target on the slider, such as
"High · 4K video → 2160p, 8 Mbps".
- Hides the H.265 and GIF-to-MP4 switches without ffmpeg, showing an
install hint instead.
- Tells you when an encode was discarded for not being smaller.
- Finds Homebrew and other package-manager installs of ffmpeg when the app
is launched from Finder.
### Marketplaces (NIP-15)
- Adds cards for stalls, products, marketplaces, auctions, bids and bid
confirmations, which showed as raw JSON or not at all.
- Shows a product's gallery, price, stock, stall, specs and a Message
seller button that drafts a DM with the listing.
- Shows an auction's starting bid, its start and end with the merchant's
extensions, an Upcoming/Live/Ended badge, and its highest bid and bid
count.
- Reads marketplace events leniently (prices as strings, missing ids, tag
form auctions from hash21 and mkauction), and keeps other apps' records
on the same kinds out.
### Trust and List Cards
- Adds one card for NIP-85 trusted assertions (30382-30385): what it scores,
the rank, hops, every other metric as a tile, timestamps as dates, and the
provider.
- Shows a kind 10040's designated providers, with the services each serves.
- Adds cards for Trusted Lists (30392-30395) with members best first and
their scores.
- Adds cards for decentralized list headers and items (9998/9999,
39998/39999), loading a header's items while it is on screen, with `url`,
`tel` and `email` fields as links.
- Adds a card for NIP-29 group metadata (39000) that opens the group.
- Renders hashtags, links and people in bookmark lists and sets, and quotes
pinned notes instead of printing raw `nevent` strings.
- Pages long rosters (3, then 50 per Show more) and caps chip rows with a
"+N more" chip, since event authors decide how many tags a card gets.
### Feeds and Cards
- Adds an info button to each feed filter that explains what it shows, and
on the Notifications screen, what it does to notifications.
- Loads the relay lists of people-list members you don't follow, so list
feeds, follow packs and All Follows find their notes.
- Draws live streams with their summary, start time, viewer count, and a
Watch recording button over the cover once ended.
- Shows a classified's location and a Sold badge, a zap goal's end
countdown, a calendar event's own time zone, and a long-form article's
reading time and topics.
- Renders every kind as the thread's main note the way the feed does:
RSVPs, calendars, lists, chess, live activities and more drew nothing or
plain text there.
- Resolves NIP-30 custom emoji on reaction notification cards, and draws an
untagged `:shortcode:` reaction as text instead of an empty image.
- Plays Blossom's `.mpga` audio files and Podcasting 2.0 trailers.
- Draws a kind 31337 as a music track only when it has a file to play, and
leaves the rest (ad-skip data, game state) out of the feeds.
## Performance
- Makes the outbox's delivery state mutable under its lock: a publish cost
O(relays²) in copies, ~3,400 ns per relay at 100 relays, now ~150 ns.
- Makes a screen's subscription invalidation lock-free: 1.1 ns instead of
up to 8,300 ns while an update is running.
- Returns at once when pruning frees a note that is not a zap.
## Improvements and Bug fixes
- Shows a relay that refused a post with a back-off as retrying while the
client waits it out.
- Stops one relay's hang-up during a publish retry from reconnecting the
whole relay pool.
- Fixes acks from different relays being lost, which kept an event in the
outbox and re-sent it on every reconnect.
- Fixes a forged copy of a note getting the real one dropped as its
duplicate, and deleting an addressable's old version removing the
current one.
- Downloads the Web of Trust network in ~10 s and 39 MB instead of minutes
and 380 MB: it no longer fetches every deletion the provider signed, and
learns of retracted cards over NIP-77.
- Routes the Web of Trust provider's relays like your own: clearnet by
default instead of through Tor.
- Stops a Web of Trust download on mobile data when it is not allowed,
keeps it through list updates, and checkpoints it so an interruption
loses less.
- Fixes the zoom animation for images scrolled partly out of the feed or
under the bars, and makes GIFs shrink back into their thumbnail.
- Fixes tapping a quoted reply in a chat scrolling to the wrong message.
- Stops the like icon crossfading from an empty heart on every scroll.
- Stops demoting the threads of audio rooms and video playback, which made
audio stutter under load.
- Stops an audio room's service restarting after the app was killed and
holding audio focus and a wake lock for a room that was gone.
- Stops any app from controlling picture-in-picture video playback.
- Reads timestamps written in milliseconds as seconds, which made goals
and live streams end in "54,000 years".
- Keeps the Git Repositories search's `kind:git` chip out of the Namecoin
and `.bit` lookups.
- Gives a room's name width before its label in Messages, so a Cordn group
no longer shows only its coordinator.
- Follows the testls.space ElectrumX port swap for Namecoin.
## Desktop
- Draws natively on Wayland in every Linux package, with the JetBrains
Runtime. Set `AMETHYST_X11=1` to stay on XWayland.
- Uses the compositor's title bar on KDE, sway, Hyprland, COSMIC and niri;
GNOME keeps the GTK one.
- Fixes video playback on Windows, which said "Video playback unavailable"
in 1.18.0, and on macOS release builds.
- Keeps the chart library intact in release builds, which ProGuard broke.
- Lets the `.deb` install on Ubuntu 22.04, Debian 12 and their derivatives.
- Fixes `.deb` and `.rpm` installs and removals failing on systems without
`/usr/share/desktop-directories`, and upgrades that removed the menu
entry.
- Requires the system libraries and a font in the `.rpm`, so minimal Fedora
and openSUSE installs launch.
- Renames the Flatpak app ID to `com.vitorpamplona.amethyst.Amethyst`, so it
doesn't share the Android package's listing in Nostr app stores. See
`BUILDING.md` to move your v1.18.0 data.
- Fixes the Web of Trust download, which never started on desktop, and
keeps Cordn's group state on disk.
- Drops the image viewer's URL tooltip and click-to-copy; Copy URL stays in
its menu.
- Removes the Intel macOS options from the README: only Apple Silicon is
built.
## Cli
- Fixes `amy` 1.18.0's self-contained bundles crashing on every command with
`NoClassDefFoundError: java/lang/management/ManagementFactory`.
- Lists relays `amy fetch --paginate` could not page under `unpaged_relays`,
and warns that the result may be partial.
- Adds `retry_after_ms` to `rejected_by` entries.
- Fetches all of a search such as `include:spam` on search.brainstorm.world:
`amy fetch` returned 5,000 of 35,578 events, and `amy sync` none.
## Quartz
- Implements NIP-01 rate-limit back-offs (nostr-protocol/nips#2498):
`OkMessage` and `ClosedMessage` carry `params` and `retryAfterMs`.
- Holds a relay's refused commands on its connection (`RateLimitGate`) and
re-sends them when the back-off passes, across reconnects and pool
changes, with the subscription's current filters.
- Adds `RateLimiter` and `RateLimitPolicy` for relays, with
`PolicyResult.Rejected.rateLimited`.
- Pages a NIP-50 search with no words to rank, keeps `observer:` searches on
one page, and carries the search on `fetchByIds`.
- Re-asks a page cut short inside its boundary second instead of reporting
DRAINED.
- Fixes a decoder hang on short OK, CLOSED and NEG-ERR frames, a truncated
JSON object looping, and a field like `jE` replacing an event's `id`.
- Fixes `subscribeAsFlow` and `fetchAsFlow` dropping the newest list on a
burst.
- Fixes `QuicReader` overflowing on a peer-chosen length, and a bad datagram
escaping to the crash handler.
- Reads NIP-15 marketplace events leniently, with `isWellFormed()`,
`AuctionData.endsAt()` and `AuctionBidSummary`.
- Adds `AssertionMetric` readers, Trusted List accessors and D-list
`fieldDeclarations()`, `displayHints()` and `listImage()`, with `tel` and
`email` field types.
- Adds `TimeUtils.toUnixSeconds` for millisecond timestamps.
- `EmojiUrlTag.decode` returns null unless both shortcode and url are present.
## Geode
- Adds a `[rate_limits]` section for events and REQs per client per minute,
answering with the NIP-01 back-off and 429 with `Retry-After` over NIP-FE.
Off by default.
- Counts an IPv6 client by its /64.
- Caps WebSocket frames at 1 MiB by default; one header could cost 2 GB.
## Build & Documentation
- Fails the desktop release if ProGuard strips a JNI native method, a
D-Bus transport or leaves a stale jar signature.
- Fails the `amy` build when its runtime lacks a JDK module its jars use.
- Self-tests the OS keyring on every packaged desktop build in CI.
- Speeds up `.deb` post-processing from 156 s to 51 s.
- Splits the iOS CI jobs and caches the Kotlin/Native toolchain, so they
finish under their timeout.
- Adds `tools/desktop-run` to run and screenshot the shared UI headless, and
asks agents to look at a UI change before calling it done.
- Clears the build and lint warnings across modules, and removes 125 unused
Android strings and 10 unused drawables.
- Publishes the Flatpak to Orchard.
- States that issue bounties are not a promise of payment.
## Contributors
- @nprofile…vhl6
- @nprofile…kcfw
- @nprofile…znmg
## Translations
- Czech, German, Swedish, and Brazilian Portuguese by @nprofile…kcfw
- Hindi by @nprofile…z0lu
- Hungarian by @nprofile…ns2l
- Polish by @nprofile…8c53
No. But are you looking for purely an overlay network on top of the current internet or a new internet? FIPS was interesting to me because it at least claimed to be for replacing the current internet (by which I mean it is supposed to work on top of physical links), although now I see people treating it just as an overlay network like Tor, which is sad.
I had this idea a long time ago of how to connect and route between mesh networks potentially scaling through the entire globe, but I'm thinking here only about physical links and a new internet: #naddr1qq…smcd
I have no idea of how bad this idea is, because I couldn't find anyone to criticize it or any other idea to compare it to and I have zero experience with any of this.
As far as I know all the mesh networks in the world are sadly much less ambitious than I want: they're all happy to just be a local thing. And in some cases they clearly state that their routing algorithms don't scale at all (they're either based on a centralized supernode, or nodes flooding the network with packets, or on everybody keeping a routing table of the entire network locally).
Projects like Meshtastic are just a stupid psyop. They get people to be excited about a completely useless thing, thinking they are contributing to creating a new decentralized internet, and that their stupid toy is actually a step towards that, but in fact it can never be more than that toy.
What I wanted to see was an actual meshnet project that employed some routing algorithm capable of easily adapting to new nodes joining freely, but also adapting to a new mesh network being connected by some new node, and then some other mesh connects to that, and so on, until you're able to route a message to someone a thousand miles away.
I think my method above works, and it is not magic because it has this important tradeoff: you can't route only with keys, i.e. your address can't be just your key like all these other projects do, you also need route hints in the address. It's like using an nprofile instead of an npub.
My method needs a lot of flushing, though. All the details are unspecified. And it would probably not work with any existing base network software, as it wouldn't deal with IP addresses at all (addresses would be much bigger than even IPv6 can support). It also needs a name, then we would have to adapt TCP and UDP to work on top of it (the name is important so we can call it TCP/<name> thing). I also didn't think about the incentives for routing at all.
And they say we don't have enough addictive content.
#nevent1q…tyuz
Ditto Relay (relay.ditto.pub) is now available over Tor 😎
ws://ditto3gnoedy3ld6vh2l6hynla2meuszaggtblxtyhcycgb7a6o3xcad.onion
Everybody on the text based platform prefers text communication.
#nevent1q…4z6c
Can't seem to open this video file.. can you see it?
i love it when nostr makes me giggle like a little kid 🤣
They only pull every week or so. It's their own schedule.
Omandroid: work-in-progress update 🧪📱
Native Omarchy running on a Pixel 7 Pro: Arch Linux ARM, Hyprland and Omarchy's own packages, on a mainline Linux kernel. No Android underneath.
Hardware working
- Boots our own mainline kernel (7.3-rc) from the second boot slot, with stock Android kept on the other slot
- Display (1440×3120 OLED)
- GPU: Mali-G710 with OpenGL ES 3.1 and Vulkan 1.4 through Mesa (we added the G710 to Mesa's Panfrost driver), and Hyprland renders on it
- Touchscreen with multi-touch
- Power and volume buttons
- Battery level in the status bar
- Internal storage, with the system partitions locked read-only
- USB networking and SSH
Software working
- Omarchy themes, the menu, the notification shade and the Omarchy boot animation
- A phone-style home screen and launcher with app search and "ask your agent"
- On-screen keyboard
- App switcher: swipe up, tap to switch, flick to close
- Lock screen with a PIN pad: locks after boot and after the screensaver
- Power + volume down takes a screenshot
- Apps open full screen, like on Android
- Kernel updates installed from inside Linux
Next up: Wi-Fi (driver in progress), Bluetooth, charging, audio, then camera, cellular and Android apps through Waydroid.
#Amethyst v1.18.0: Amethyst Desktop, Web of Trust, Privacy Lock, and a Deck
Highlights:
- Ships **Amethyst Desktop**: the desktop app now runs the same screens and navigation as Android, and the legacy desktop app is gone.
- Adds a **Web of Trust** network from your NIP-85 provider. Strangers' DMs go
to New Requests, and Curated notifications and replies leave them out.
- Adds a **Privacy lock** for the whole app, your messages or your wallet,
with biometrics on Android and a password on desktop.
- Adds **Custom feeds** built from people, hashtags, kinds and relays, and an
opt-in **Deck** of columns for wide windows.
- Rewrites **web-app signing prompts** to say what each request does, and
stops one stuck prompt from blocking every later signature.
- Lets you **drag the panes** in wide windows, and opens every chat type
beside its list.
- Redesigns **My Fitness** around weekly goals, with streaks, history and
charts.
- Makes the **Messages toggles** stop loading NIP-04 or NIP-17, instead of
only hiding them.
- Renders **NIP-82 software releases** with their app, release notes, and
downloads for your device first.
## New Features
### Privacy Lock
- Adds a Privacy lock settings screen with three switches, all off by default:
lock the entire app, lock messages, lock the wallet. Plus an idle timeout.
- Unlocks with biometrics or the device credential on Android, and with an
app password on desktop.
- Locks you out for 30 s after five wrong passwords, doubling up to
5 minutes, and keeps the lockout across restarts.
- Asks for the credential before a lock is turned off or its timeout made
longer.
- Hides message text in notifications while the messages or app lock is on,
and guards the secret-key backup behind any lock.
- Locks the Marmot and Cordn group screens, drafts, and the payment and mint
top-up screens too.
### Custom Feeds and Deck
- Adds custom feeds: pick people, hashtags, kinds and relays, minus hidden
people and keywords. They show in the Home feed picker under "Your feeds",
with a manage screen and an editor.
- Adds an opt-in Deck (Settings › App › Deck) for windows 1,200 dp and wider,
in place of the notification panel.
- Makes every Deck column any screen, with its own back stack. Columns can be
added, moved, resized, reset and closed, across up to nine workspaces.
- Adds Deck shortcuts on desktop: Ctrl/Cmd+T, +W, +Shift+PageUp/PageDown,
+Alt+1–9 and +Shift+S, plus a Deck menu on macOS.
- Imports the legacy desktop app's feeds, workspaces and lock settings.
### Web of Trust
- Downloads your NIP-85 rank provider's trust cards into a compact index on
the device, and keeps it current with small, cheap updates.
- Treats people below a minimum trust score as strangers. Their DMs go to New
Requests, Curated notifications drop them (in-app and push, zaps exempt),
and their thread replies start collapsed. Follows always pass.
- Adds a Web of Trust settings screen: the network's size over a histogram of
ranks, a minimum-score slider with a live count, and sync status.
- Sets up Brainstorm's GrapeRank with a guided sign-up, or any NIP-85 provider
by its key and relay.
- Reads rank and follower badges from the index, without a subscription per
profile.
- Shows on a profile whether the person is in your network, with their score
or "You follow them". Tapping it opens the Web of Trust settings.
- Collapses runs of public-chat messages from people outside your network
into one "3 messages from outside your network · Show" row, in NIP-28,
live-stream, ephemeral and relay-group chats.
- Orders people search, mentions and people lists by follows, then trust
score, then everyone else.
- Resumes a cut-off trust network download instead of starting over.
- Lets you copy another person's trust view, or enter a provider key with its
tags as chips, under "Set up by hand".
- Opens the provider's website in Amethyst's browser, signed in with this
account.
- Adds the Brainstorm relay to the default search and indexer relays.
### Signing
- Times out a web-app signing prompt after 120 s. A prompt left behind Home
used to block every later request from every web app.
- Brings a pending prompt back when Amethyst returns to the foreground.
- Shows what each request does: the private message inside a seal, the relay
of a relay login, the method and URL of a NIP-98 request, and the verb, file
and server of a Blossom upload or delete.
- Previews a profile edit as the new profile, with "Changes your bio ·
Removes your lightning address" lines.
- Summarizes follow, mute, deletion and report changes in one line, and shows
reports as report cards.
- Asks before signing a report under the Reasonable trust level, and asks
once, not twice, in Paranoid mode.
- Warns when a prompt has been open a minute or more that the app may have
stopped waiting.
- Fixes Connected Apps for web apps: Forget now forgets an app's decisions, a
new trust level takes effect, and an app no longer shows once per account.
A forgotten app could keep signing logins without a prompt.
- Only the buttons and Back decide a prompt now. A tap beside it no longer
denies silently.
- Removes the 40-requests-per-10-seconds limit on Amethyst's own NIP-46
signer for paired apps, and answers their requests in parallel, so busy
clients are no longer refused. Unpaired keys get 10 requests a minute each,
100 in total, and the rest are dropped unanswered.
### Messages
- Turns NIP-04 or NIP-17 loading, paging and subscriptions off when you turn
its toggle off. With NIP-17 off, its rooms, composer and calls are gone, and
the gift-wrap subscription asks only for what Marmot or Concord still need.
- Brings cached messages back when a protocol is turned on again.
- Pages NIP-17 history one round at a time. A quiet chat offers Keep looking
and Stop instead of walking every gift wrap you ever received, and names the
relays that didn't answer.
- Pages NIP-17 history from your DM relay list only, 500 gift wraps at a time.
- Pages history (messages, notifications, Cashu wallet) only for the account
on screen. With several accounts logged in, a NIP-17 group showed only its
last message.
- Keeps pinned conversations in the list when none of their messages is
loaded yet.
- Opens every chat type beside its list on wide screens: Buzz, Marmot, Cordn,
Concord, relay groups and location channels, like DMs.
- Softens the bubble colors: other people's bubbles are lighter in the light
theme, and your own keep the accent's hue without the neon glare.
- Checks the stock Concord relays for invites every 15 minutes instead of
keeping them open.
### Wide Windows
- Lets you drag the splitters between the drawer and the content, the content
and the notification panel, and a chat list and its chat. Widths are saved
per device.
- Opens a note's menu as a dropdown by its ⋮ button, with keyboard navigation
and submenus, instead of a dialog in the middle of the screen.
- Wraps the composer's tools under the text instead of scrolling them
sideways, with hover tooltips.
- Opens the account switcher as a menu from the docked drawer.
- Scrolls the feed with the mouse wheel over the empty gutters beside it.
- Adds a refresh button to the docked notification panel, and shows today's
counts and the 7-day chart in it.
- Opens the drawer from a tab pager only after a 120 dp swipe or a fast
flick, instead of on the first pixel, and keeps wheel and trackpad scrolls
with the pager.
- Puts Navigate before You in the drawer when there is no bottom bar.
### My Fitness
- Redesigns My Fitness around weekly goals: rings for active minutes, workouts
and active days, plus an optional weekly distance, each "on track" or
"behind pace".
- Adds a goal editor. The default is 150 active minutes a week, the WHO
guideline.
- Adds 12 weeks of weekly active time, a 18-week consistency heatmap with
streaks, your busiest days and times, and the activity mix against the
previous four weeks.
- Fetches your own published workouts, instead of only those another screen
had loaded.
- Stops counting fasting, diet and meditation as active time.
### Composer and Uploads
- Adds a custom-emoji picker to the note, comment, DM and public-chat
composers. It inserts your NIP-30 emoji as `:shortcode:`.
- Makes the image quality slider also set a maximum size: 640, 1280 or
1920 px, then uncompressed. Posts start at 1280 px on phones, now at JPEG
quality 85 instead of 75.
- Resizes photos on Android to exactly that size. A 12 MP photo used to go up
at about 2016 px whatever the setting.
- Previews the first image compressed in the upload dialog, with its size and
dimensions next to the original's. Tap it to compare both full screen at
their real resolution, with zoom; tap again to flip between them.
- Deletes the temporary copies a compression leaves behind when the quality
slider moves on before it finishes.
- Tags music uploads with their `format` (m4a, mp3, …), so other clients
know the `.mp4` Blossom returns is audio.
- Adds imeta (hash, size, type, dimensions, blurhash) to images pasted as
links in the note, comment, public message, classified and new group DM
composers, so readers can lay them out before they load. Links without an
image extension count when their preview is an image.
- Waits up to 3 s for a link just pasted before posting, so its imeta goes
out with the post.
- Fetches a pasted link once for its preview card and its imeta.
### Feeds and Cards
- Renders NIP-82 software releases with the app's icon and name, markdown
release notes and OS chips.
- Groups release downloads by OS, with the best match for this device on top,
and splits pre-releases from the latest release.
- Trusts a release only from the app's publisher or its listed maintainers.
- Opens Zapstore apps instead of an empty group chat. Only group content
follows its `h` tag to a NIP-29 group.
- Loads an app's releases on its own page, even when it is opened from a
link, profile or mention.
- Fills bare app cards with their OSes, license and links, renders app
descriptions like a note body with translation, and groups platform chips
by OS.
- Adds cards for Kanban boards and cards, WalletScrutiny verdicts and Mostro
instance terms.
- Adds a CI status badge and runs sheet, and cover notes, to NIP-34 git PRs,
patches and issues.
- Finds Marmot key packages of White Noise users who publish only the legacy
kind 443, so they can be invited.
- Shows the caption above the reactions on video and file cards.
- Plays an audio-only `.mp4` as audio, with its cover, by reading the file's
track list. Blossom serves every M4A upload as `.mp4` / `video/mp4`, so
these showed a black video box. A music track or podcast whose file is a
real music video plays as video instead of inside the waveform strip.
- Shows the cover, title and player of audio tracks, and the player of audio
headers that carry their file in a `url` tag.
## Performance
- Moves blocking and lock-touching work off `Dispatchers.Default`: external
signer calls, proof-of-work mining, relay health saves, cache scans and
cyberspace bag sweeps. One slow job no longer stalls feeds and relay
verification behind it.
## Improvements and Bug fixes
- Shows each relay's median post, query and first-result times, and a
"Slow N×" chip on a relay that lags the others.
- Hides the broadcast banner once your outbox relays accept a post, instead of
waiting for every relay. It can always be dismissed, and an outbox failure
stays with a Retry.
- Stops a dead outbox relay or a dropped connection from showing a post as
failed.
- Counts every connected relay under a job in the always-on notification, and
says "Connected to N relays" instead of "inbox relays".
- Asks before opening a scanned 64-character hex key as a profile, since it
might be a private key.
- Completes multi-part QR codes from the camera and from images, waits for a
tap when several codes are in view, and keeps zoom and torch when the camera
reopens.
- Fixes the wallet invoice QR being clipped in wide windows.
- Converts GIFs to MP4 in comment, public message, classified and edit
composers, which ignored the switch.
- Fixes uploads of keyboard GIFs and stickers failing with a permission error
after the upload dialog had been open a while.
- Makes text fields in embedded web apps behave as in the browser: Enter
sends, cleared fields stay cleared, chips, paste, maxlength, and Next on
forms.
- Fixes the image zoom animation popping to full size instead of growing from
the thumbnail with its rounded corners.
- Fixes a pasted `nevent` to a music track, or any addressable event, showing
twice in search.
- Shows a reaction notification for a reaction to your reply. It was checked
against the thread root's author.
- Shows nested NIP-22 replies in community feeds.
- Fixes zap splits without a relay being saved so that Amethyst and other
clients read them as weight 0. Old splits still load.
- Counts on-chain and BOLT12 zaps toward your zap income only when you are the
payee, and attaches a BOLT12 zap only to the live activity it names.
- Fixes hashtag feeds asking only the first relay.
- Shows "Messages" in the Messages top bar instead of the Amethyst logo.
- Fixes weekday labels on the notification chart after a daylight-saving
change.
- Opens scanned links written in uppercase, and keeps a split nsec in an
image from being listed piece by piece.
- Reports an LNURL server's error as "service unavailable" with its message.
- Stops a bare word in a relay hint turning into a fake relay.
- Fixes a StackOverflowError on reply cycles in threads, and a link detector
that took 27 s on colon-heavy text.
- Fixes a second reaction with the same emoji missing from the reaction
gallery.
- Keeps a feed's subscription when the app comes back right at the end of its
background grace period.
- Opens a chat when you tap its name next to a community label.
- Fixes a crash on videos with side-loaded captions. They now show as
subtitles, and formats no parser reads are left out.
- Fixes padding under the disappearing bars on My Fitness.
- Fixes the call timer showing blank in Polish, and the web-app profile-edit
prompt not naming the changed fields in Polish.
- Shows errors with a severity icon, a selectable message and the stack trace
behind Details. Messages queue instead of replacing each other.
- Moves the navigation to Navigation 3. Tabs keep their scroll position, and
pinned web apps no longer share one saved screen.
## Desktop
- Runs the shared app: the same screens, navigation shell, login, account
switcher and settings as Android. The legacy desktop app is deleted, and its
accounts, feeds, deck and lock settings are imported.
- Gains what the legacy app lacked: zaps and the reactions row, chess, Git
repositories, calendar RSVPs, post editing, markdown with inline media,
Cordn groups, the audio-room list, and crash reports offered on the next
start.
- Drops the hashtag-spam filter, the WoT badge, the live-now bar, the relay
dashboard, the advanced search and the GIF search.
- Adds a 2560 px step to the image quality slider, and starts posts at
1920 px.
- Keeps phone photos upright: compression applies the EXIF orientation, and
the metadata strip keeps that one tag. Photos stored sideways were uploaded
on their side.
- Strips metadata from photos with two EXIF blocks, as some editors save
them. These were uploaded unstripped, GPS location included.
- Keeps the space for images and GIFs without a declared size while they
load, and caches decoded GIF frames so a GIF shown again isn't downloaded or
decoded again.
- Fixes tall photos spilling over the text and reactions around them.
- Draws QR codes with the shared renderer. Long payloads fall back to a lower
error-correction level instead of crashing.
- Plays video like Android: autoplay muted, pause out of view, resume where it
stopped, Android-style controls and a now-playing bar. Encrypted media plays,
and Tor-routed videos stream through Tor.
- Renders music tracks, podcast episodes, audio tracks, audio headers, voice
messages and audio in posts, which drew nothing before, with a waveform
player that seeks on click. Podcast soundbites and chapters jump there.
- Plays audio linked in posts, including audio-only `.mp4`s, in the audio
player instead of the video engine ("Can't play this video").
- Fits portrait videos, preloads the next videos in a feed, and no longer
blinks to black when one starts.
- Zooms photos and videos from their card to full screen and back.
- Redesigns the now-playing bar with thin sliders and hours in long times, and
keeps its stop button in narrow windows.
- Renders PDFs in notes, with a full-window reader that turns pages with the
arrow keys.
- Shows OS notifications with the same title and text as Android, when
previews are on, and skips muted authors.
- Replaces the bare system error box with a crash window that can send the
report to the developers.
- Uses desktop text sizes, a lighter hover, and a menu bar only on macOS. The
title bar blends into the app on macOS.
- Sizes the drawer's text and rows for the desktop, and keeps the photo
viewer's close button clear of the macOS window buttons.
- Opens a notice instead of crashing on screens the desktop doesn't have yet,
and hides their entry points, such as DM calls and the geocache Map tab.
- Drops the media setting's Wi-Fi choice, where it behaved like Always.
- Keeps the top bar on Scheduled posts when there is no post store, instead
of a blank screen.
- Shows a text reply button on voice notes where recording isn't available.
- Brings a background window forward on the first click without pressing what
is under the pointer, and stops hover while scrolling.
- Fixes the pull-to-refresh indicator staying half-pulled after a mouse-wheel
scroll.
- Opens at a larger size and reopens where you left it, and never saves a
window collapsed to a sliver.
- Names the app "Amethyst" in Linux docks and app switchers.
- Only hands http, https and lightning links to the OS.
- Keeps accounts, drafts and settings in the Flatpak across restarts. Every
Flatpak shipped so far lost them.
- Renames the Flatpak app ID to `com.vitorpamplona.amethyst`, on runtime
26.08. Remove the old `com.vitorpamplona.amethyst.Desktop` bundle and log
in again (see `BUILDING.md`).
- Declares GStreamer as a dependency of the Linux `.deb` and `.rpm`.
## Cli
- Adds `amy notes show`, `thread`, `reply`, `quote`, `react` and `repost`,
plus `delete`, `notifications` and `notes feed --hashtag`, on the app's own
routing, tagging and thread code.
- Adds `amy trust setup`, `status`, `sync`, `check` and `copy` for the Web of
Trust network.
- Reports `relay_errors` from `amy fetch`, and fails with `no_relay_served`
when no relay served the request. It used to exit 0 with `count: 0`.
- Streams `amy fetch --paginate --limit 0` with flat memory, and logs every
REQ with `--verbose`.
- Runs every `amy sync` direction through negentropy.
- Answers AUTH in `amy fetch`.
- Refuses reposts and quotes of NIP-29 group content, and sends group content
only to its host relay.
- Shows a zap's sender only when the zap request proves it, so a spoofed
zapper no longer shows.
- Fails interaction verbs with `read_only` on npub-only accounts, filters
`amy notifications --type` at the relay, and applies deletions by address.
- Trims `notes post` text and rewrites bare npub/note words like the composer.
- Keeps amy's data files owner-only on Windows (NTFS ACLs), without eight
warnings per file.
## Quartz
- Makes `fetchAllPages` hold up on production relays: it learns each relay's
limit, drops repeated events, paces throttled relays, and walks each filter
on its own cursor. Multi-filter walks lost most of their events before.
- Fixes `negentropySync` finishing "clean" on relays that truncate their set,
and makes `fetchByIds` public.
- Returns null from `count` at once on relays without NIP-45.
- Fixes a WebSocket dial race that opened two connections per relay, and
REQs sent while a WebSocket was still opening being dropped silently.
- Breaking: `fetchAllPages` drops `DEFAULT_PAGE_SIZE`; `pageSize` is now an
optional cap. Adds `streamAllPagesFromPoolWithHooks` for walks too large to
hold in memory.
- Keeps a relay's CLOSED or connection message in `PagedFetchResult.message`,
and adds an `onRelayResult` callback to `fetchAllPagesFromPool`.
- Adds NIP-85 trust network sync and a compact index.
- Types the event kinds found by a census of 743 relays: Marmot 443, NIP-34
cover notes and NIP-C1 CI, Mostro, RoboSats, Ditto, Zapstore identity
proofs, Kanban, WalletScrutiny, NIP-4E key transfer, private note storage
and more.
- Completes hint providers on 184 kinds and NIP-50 indexing on 72. Existing
stores need `reindexFullTextSearch()`.
- Adds `RelayUrlNormalizer.normalizeHintOrNull`, a strict parser for relay
hints from other clients.
- Names every tag relationship with an accessor, such as `mentions()`,
`quotedEvents()` and `recipient()`.
- Writes the `a` and `f` tags NIP-82 releases require, and adds NIP-82 version
ordering.
- Verifies Zapstore identity proofs (kind 30509) against an APK signing
certificate (RSA, EC, Ed25519) on JVM and Android.
- Reads NIP-4E draft 10044 keys, which were always empty before, and adds
`EncryptionKeyStore`. Parses NIP-69 bonds as decimals.
- Registers `FeedDefinitionEvent` (31890) and `EncryptionKeyListEvent` (10044)
in `EventFactory`, and indexes an emoji pack's public shortcodes instead of
its encrypted content.
- Breaking: adds abstract `BaseRepostEvent.originalAuthorKeys()` and
`ZapReceiptEventInterface.zappedAddresses()`, and `DecoupledCipher` takes an
`EncryptionKeyStore`.
- Shares secp256k1 across every target and one native crypto set across
Apple and Linux, and implements `LargeSoftCache` on iOS.
- Adds a "One-shot Reads" section to `CLIENT.md` (`fetchAll`, `fetchFirst`,
`fetchAllPages`, `count`), switches it to the Maven artifact and the bundled
OkHttp transport, and ships an installable agent skill for projects that
use Quartz (`quartz/agent-skill/`).
- Adds `AudioTrackEvent.title()`, `url()`, `image()` (with `mediaUrl()`,
`coverUrl()`, `displayTitle()`), `AudioHeaderEvent.url()` / `mediaUrl()`,
and a `format` parameter to `MusicTrackEvent.edit`.
## Build & Documentation
- Continues One UI: Navigation 3 with the navigation shell in `commonsUI`,
more screens and ViewModels moved to `commons`/`commonsUI`, a headless
`BaseAccountViewModel` with typed user notices, and feature-based ViewModel
packages.
- Adds plans for iOS and web apps on the shared UI.
- Adds Navigation 3 1.1.2 and Apache PDFBox 3.0.8 (desktop only), both
Apache-2.0, and removes `navigation-compose`.
- Turns on incremental compilation for the KMP modules: a one-line change in
`commons` rebuilds in 9.5 s instead of 38.6 s.
- Builds zxing-cpp reproducibly from any NDK path, from a pinned commit.
- Requires a human to review the diff and test on a device before an AI
contribution becomes a PR.
- Gives Claude Code and Codex the same rules, skills and pre-push checks:
`AGENTS.md` holds the rules, `.agents/skills` links to `.claude/skills`, and
the checks live in `tools/agent-hooks/`. A new check, run before every push
and in CI, keeps them in sync.
- Cuts the agent skills from 33 to 14, each rewritten against the current
code, so the list fits Codex's skill budget.
- Fixes the Compose string-escaping pre-push check, which never blocked a
push.
- Documents Homebrew as autobumped, and verifies the cask instead of
submitting it.
- Bumps `appCode` to 463.
## Contributors
- @nprofile…vhl6
- @nprofile…kcfw
## Translations
- Czech, German, Swedish, and Brazilian Portuguese by @nprofile…kcfw
- Hindi by @nprofile…z0lu
- Hungarian by @nprofile…ns2l
- Polish by @nprofile…8c53
https://fountain.fm/episode/tSoqJLiYQFM4mSDlxz9X
It's finally getting ready. Full Amethyst running on the Desktop.
https://image.nostr.build/09abb10a73482403e697592b463e5f7fb8dd858c1763fa22247ec222470717c6.png
In response to armada.exposed, I created armadaexposed.exposed 😂 https://armadaexposed.exposed
People Want To Forget October 7. America Has To Remember.
https://www.dailywire.com/news/people-want-to-forget-october-7-america-has-to-remember
#Zap to support, DM to suggest new feeds.
All Adobe products reimplemented from scratch, free and open source:
getartcraft.com/apps
What a time to be alive.
Web of Trust doesn't work. Because too many of you dummies are following @npub1j2r…cmzd who is running a bot farm manipulating trends.
Hmm...
"Testing zap in x.com / nostr-component.web.app"
Someone seems to be building something cool. 👀
What a great conference Imagine If 2026. High signal people coming together to imagine a better world together, building the future together. The amount of conversations had make me incredibly bullish on Nostr...even more so. Yes, that's possible. Nostr as infrastructure IS a major part of the Nostr conversation. I look forward to 2027.
Available on the ZapStore 🚀
#nevent1q…92nq
⚡️🇮🇱 NEW - Netanyahu:
I heard from defense officials that they need more equipment.
A sixth submarine has arrived in Israel. They want more vessels and other capabilities that I do not intend to detail here.
But I want to tell you one thing: in this field as well — both above and below the surface — I intend for Israel to become one of the world leaders in this type of warfare.
We will protect the State of Israel from the sea as well.
https://blossom.primal.net/f3faaf28c885503ab713b5273ffb2b897628f9068a7b884ba950771974c64215.mp4
GM
This was a solid 200km ride with my dad 👊👌💜
https://inner.sebastix.social/3208ac21f0719049774972de7e0d6a1218f3456ef7fff6b23d1028e138e92563.jpg
https://inner.sebastix.social/10d5c7af9d570b0679dbf518a6e4b84604981c3b0cccaa9e6e1e643df5bd8726.jpg
11 Million US Workers May Need To Switch Careers By 2035
https://www.zerohedge.com/markets/11-million-us-workers-may-need-switch-careers
#Zap to support, DM to suggest new feeds.
⚡️🤡🇮🇱 NEW - Netanyahu:
Trump asked me, "Where do you get this strength?"
I told him: "It is the heritage of our fathers, passed down to the sons and to the generations to come."
https://blossom.primal.net/4cc1723754a8826f602742ff5eaa65b8a5a85fc205148ef630b45a4368cc2352.mp4