nostr-summary
Nostr Summary
A bot that posts the latest commit from repositories tagged with the #nostr topic once an hour.
Public Key
npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux Profile Code
nprofile1qqs8l6lz5kd2sfhc7cehksgpjw024jp06nnv5heu0w838jsr45n090cpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsr65qcw
Show more details
Published at
2025-10-25T11:41:20Z Event JSON
{
"id": "bfb41c55da755ebe522bb72e494a57dde1eb48219fdd4f4e4940f6a25ba8037f" ,
"pubkey": "7febe2a59aa826f8f6337b4101939eaac82fd4e6ca5f3c7b8f13ca03ad26f2bf" ,
"created_at": 1761392480 ,
"kind": 0 ,
"tags": [],
"content": "{\"name\":\"nostr-summary\",\"display_name\":\"Nostr Summary\",\"picture\":\"https://robohash.org/npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux?set=set4\u0026size=120x120\",\"website\":\"https://github.com/SnowCait/nostr-summary\",\"nip05\":\"[email protected] \",\"lud16\":\"[email protected] \",\"about\":\"A bot that posts the latest commit from repositories tagged with the #nostr topic once an hour.\"}" ,
"sig": "6333533d54ed48a64a26fac5452aa7cc141efdd4a4b987669ca2cb51a1582aa2dc67b7dad9c2f02ce8d3d18ac8cce0b7d7730bbc72aad5d34c26d1309a52bb7d"
}
Last Notes npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ PR0M3TH3AN/bitlogin ] window.bitlogin.activeMethod()/activeSession(): session state for every method Hosts had no method-agnostic session check: isActiveSigner() answers who backs window.nostr, which is deliberately false during a NIP-07 session (the extension IS the signer and rightly owns the slot) even though the user signed in through BitLogin. Sites using it as a login check mis-read extension sessions. A page-level registry (globalSession.ts, public data only -- method, pubkey, npub) is written at the single dispatchLogin point and cleared https://github.com/PR0M3TH3AN/bitlogin/commit/a7cf55ea84ad35d350fa6cdbcebf57d10c5586ec npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ v0l/nostrsearch ] Honour --parallelism during the archive index rebuild The rebuild's parallel walk decompresses one shard per reader thread, each with its own decode buffer and chunk, so on a many-core host the core count is a memory multiplier rather than just a speed knob. rebuild_index used every core regardless of --parallelism, so on the 80-core production host it opened 80 concurrent decoders the moment it finished scanning -- an hour of healthy sequential work followed by an abrupt OOM with nothing in the log to connect the two. https://github.com/v0l/nostrsearch/commit/4c239cc477ccbdbe8258b3ecf8ba23cbcd0f770b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ kehto/web ] feat(paja): complete advertised NAP adapters (#234) * feat(paja): complete advertised NAP adapters Tested: pnpm build; pnpm type-check; pnpm test:unit; pnpm test:e2e; pnpm docs:check; npx aislop scan Protocol: exact napplet/naps draft heads recorded in quick-260802-q92 verification Co-Authored-By: Codex <[email protected] > https://github.com/kehto/web/commit/d23797957fe7430a20f98a051627f910a305b2a9 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Origami74/myco ] docs: record v0.4.2 baseline and Android UI conventions https://github.com/Origami74/myco/commit/9d724cba72e260b5416f943ca196991e3e712211 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] post card: save it to your Notes The 📸 Screenshot card could go to Effects or the Meme Builder or the clipboard — everywhere except the one place in this app built for keeping things. The picture goes in as an ENCRYPTED attachment, not as the Blossom link sitting right there next to it. A note that linked the blob would go blank the day it ages out or the phone loses signal, and it would leave the image readable by a server this library is specifically encrypted against. The public link stays in the text, where it is a reference and not the content. The note carries the post's own https://github.com/loblawbob873-svg/posterchanai/commit/f64673b792015add50941cb274bb09499dc8542a npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ plotsklapps/GYMPLY ] - Bumped to 0.0.8+81; - Uploaded to Github; - Uploaded to Play Store. https://github.com/plotsklapps/GYMPLY/commit/e8ec645b8302d2410a058b62bef29163fe8735a0 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ naturallaw777/Sovran_SystemsOS ] docs: update CHANGELOG.md for v1.0.5 https://github.com/naturallaw777/Sovran_SystemsOS/commit/4d1c3565c995c7340408c2f53cba92c739c197b8 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request: explain gopherkind on every surface https://github.com/forgesworn/gopherkind/commit/71b25168170efc8cb0c28526d80b5701f471624b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ mattn/buzz-runbot ] bump up version to 0.0.9 https://github.com/mattn/buzz-runbot/commit/bd77aa38872e77b3614b2853312a0d5a288348ac npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ WalletScrutiny/WalletScrutinyCom ] Merge branch 'improve_xss_situation' into 'master' Improve JS to avoid XSS + tests Closes #956 See merge request walletscrutiny/walletScrutinyCom!1602 https://github.com/WalletScrutiny/WalletScrutinyCom/commit/eef3358126a84187f817119ffeb7daabbef9ae93 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ concord-protocol/concord ] Merge pull request #14 from concord-protocol/cord08 Add CORD-08: Disappearing Messages https://github.com/concord-protocol/concord/commit/475ebcc9dd8279e5fd168b6f89085124de747861 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ HORNET-Storage/Scionic-Merkle-Tree ] feat: fastcdc-v1 content-defined chunking as the default mode - Content-defined boundaries (512 KiB min / 2 MiB target / 8 MiB forced max) so identical bytes chunk identically everywhere and an edit re-chunks only its neighborhood - cross-context dedup for the content-addressed store, with worst-case chunk sizes still bounded against degenerate input - Frozen normative spec (docs/fastcdc-v1.md), seed-derived gear table, and an 11-case conformance corpus under spec/fastcdc-vectors shared with the Rust and Swift ports - Legacy fixed-size chunking stays available via SetChunkSize; fastcdc roots https://github.com/HORNET-Storage/Scionic-Merkle-Tree/commit/610af48661641e2be4292e3fbce30ff83946058e npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] Faces and pictures arrive before the row does (#128) Fetching an image was gated on holding one of the nine avatar ids or six picture ids, and those are lent only to rows already on screen. So every row arrived cold: blank, then a request, then a face a moment later. Scroll and it happens again, and again, for as long as you keep moving. That is most of what makes a feed feel like it is dragging even when the frame time is fine. Nothing about downloading an image needs a registry slot. Only DISPLAYING it does. The two were tied together because the fetch wrote straight into the slot https://github.com/zig-nostr/plaza/commit/5927132d885e4f60e430f50921fb6d10b843ec73 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] A note card stops asking the database who you follow (#127) Scrolling a feed built from a real follow list was unusable, and it got worse the more people you followed, which is exactly backwards for a client whose pitch is that it is fast. A stack sample of a scroll on a three-hundred-follow account put 1437 of 1462 app-side samples inside one function: `noteContextItems`, the right-click menu every note card builds. Almost all of it was one question. The menu's follow line calls `followBlockedReason`, which calls `canWriteFollows`, which called https://github.com/zig-nostr/plaza/commit/6e461a8bdbb6b79e76fdaf8cbfd797a86cad7594 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #28 from forgesworn/codex/practical-signer-limit-v0.11.3 fix: enforce practical hardware signer limit https://github.com/forgesworn/gopherkind/commit/d17c36ffe3d3d3e781ee48369c55eac401148f31 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ chebizarro/nostrc ] Mark WI-5/6 complete in rich media plan status Co-Authored-By: Claude Fable 5 <[email protected] > https://github.com/chebizarro/nostrc/commit/84d02323d5f253da948f2d2991f8c25af3aae152 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] chore: remove google maps api key https://github.com/Trustroots/nostroots/commit/c5fc503d2e98d0ab56d04d5a45308ac3c6a99d54 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ TP-Lab/key-generator ] remove iost https://github.com/TP-Lab/key-generator/commit/4e8796316202f4b37fca4e2f1fa1d29a14e54f71 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ plotsklapps/GYMPLY ] - Finished refactoring from FontAwesome to Material Icons; - Testing now. https://github.com/plotsklapps/GYMPLY/commit/299dcbd2f55c6f78806c583150bdd6617684c414 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ WalletScrutiny/WalletScrutinyCom ] Consume only spam reports made by admins https://github.com/WalletScrutiny/WalletScrutinyCom/commit/7fed5a92d88dfda5e2ddbec01967ae3a5bf39fbe npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] passwords: the cache could break every read, and a review of the whole feature THE BLOCKER FIRST. "why images no load, why no attachments load in notes" and "could not open attachment: operation failed for an operation-specific reason" — that string is a STORAGE error, and it was escaping from the cache I added: caches.open() and cache.match() sat outside any try, so once the origin's storage came under pressure their rejection propagated out of respondWith() and EVERY drive blob failed. Caching gigabytes of attachments is precisely how that pressure is produced, so the feature broke itself, and it read to the user as though their files were gone. https://github.com/loblawbob873-svg/posterchanai/commit/a31964f44ab10f2766dcf1f0677f858c07a87693 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ nostrdevkit/nostr ] nostr: upgrade `bitcoin_hashes` to 1.x `bitcoin_hashes` 0.21.0 added SIMD SHA-256 backends (ARMv8 crypto extensions, x86 SHA-NI, AVX2, SSE4.1) chosen by runtime feature detection with a software fallback. The 0.14 line we pin is pure software on every target. The bump needs these API changes that 0.21.0 introduced: - `HmacEngine<T>` takes the engine type now instead of the hash type, so https://github.com/nostrdevkit/nostr/commit/8c7e9f606a527a46bd15af34dc95a509b8e5b974 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #22 from forgesworn/codex/gopherkind-v0.10.1-live-proof docs: record v0.10.1 live revision https://github.com/forgesworn/gopherkind/commit/711557545c085ee635521492506acc66200249e6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ kaiverse-io/agnova ] chore: OSS hygiene — canonicalize kaiverse-io URLs Point package Source, scaffold DEFAULT_REPO, and docs at kaiverse-io/agnova; soften control-plane doc cross-refs. https://github.com/kaiverse-io/agnova/commit/a00b275c0c9193b786f24b20c22f7a4ba946404c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] Review the dual-chain build spec: math verified, Solana half blocked Reviewed BERM_DUAL_CHAIN_SIMPLIFIED_MECHANICS_BUILD_SPEC_20260804_R1 against the live API, the Fee Share V2 IDL, and the Robinhood ABIs at bagsfm/bags-idl. VERIFIED RATHER THAN ASSUMED. The cumulative range math is exact through TWO levels of flooring — cohort pools partition R, slots partition each pool. 3,000 revenue values across all 450 slots, zero mismatches, zero dust at either level. One program ID owning both authority PDAs is the https://github.com/berm-protocol/berm/commit/3a276e7100f1c82b52f1d3b8be364993ba68bb86 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/website ] Refresh contributions listing and brand logo (#38) * Split Lightning into its own contributions category and add Rust Bitcoin entries * Move bosun to Apps & Tools, expand Sonar to six PRs, keep Zeus under Bitcoin Wallets * Move DTails from Bitcoin Infrastructure to Developer Tools * Refresh brand: crisp SVG logo with corrected Latin tagline, brand assets folder, proper app icons https://github.com/privkeyio/website/commit/db81a578ee78b1c8d09a09e87e950759ebb39fee npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Synvya/reservation-protocol ] Merge pull request #14 from Synvya/alejandro-dev NIP-RP: optional asset-reference `a` tag on kind:9901 https://github.com/Synvya/reservation-protocol/commit/03ad4283d6dd6f37484571d67f78069b87ba8014 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] notes: an import must never wait forever; and stop deleting profile aliases THE HANG. publish() has an 8s timeout but a blob upload is a bare fetch(), and a fetch that stalls — a dropped connection the OS hasn't given up on, a proxy holding the socket — never settles. One of those anywhere in an import freezes the whole run with the progress bar stuck, and Stop is useless because the cancel flag is only read BETWEEN items. Reported as "I don't think it will ever stop", at 114/114 notes, which is the 8.5 MB note whose oversized body is offloaded to a blob — the single largest upload in the run. https://github.com/loblawbob873-svg/posterchanai/commit/9b65c4892cffd012b2f938bc5639cef7d2b32224 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ MonumentalSystems/blossom-rs ] Merge pull request #38 from MonumentalSystems/agent/fix-rustsec-ci-permissions ci: fix RustSec reporting permissions and Node runtime https://github.com/MonumentalSystems/blossom-rs/commit/099375570b101e1cdd780f6a2da19454fd601003 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/keep-esp32 ] Pin libnostr-c to v0.2.1 (#161) * Pin libnostr-c to v0.2.1 * Record the component lock the new libnostr-c pin resolves to https://github.com/privkeyio/keep-esp32/commit/f195c74de3ab4fedd34e6f05ec56d07d1c580297 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] notes: notes bigger than one relay message, and a UI worth using THE 3 FAILING NOTES. A relay message is capped at 512 KB and NIP-44 + base64 expands plaintext by ~1.37x, so anything past roughly 380 KB of JSON cannot be published as one event -- and a real notebook has such notes. This library had a 8,565,945-byte one ("Receipts 2023", 16x the limit) plus two more over it. They failed to save with nothing to explain why, on every import. An oversized BODY is now offloaded to an encrypted Blossom blob with the event keeping a pointer -- the same spill FilesIdx already does past its inline limit. https://github.com/loblawbob873-svg/posterchanai/commit/0df85edfbd8736a1d4e420712b7cb43f8be3ce8d npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] The store gets room to grow into (#123) LMDB never grows past its map size, and the library's default is 1 GiB. There is no pruning here and no retention window: the store only grows, at a measured 2.4 MB a day on a development machine with a modest follow set and the app not even running continuously. A reader on eight relays all day with a real follow list, taking kind:6 and kind:7 engagement as well, gets there materially faster. Arriving is silent, and it is the reader's own notes that pay. `plazaIngest` is `catch {}` at the write of a note this app just signed, deliberately, so a https://github.com/zig-nostr/plaza/commit/cd2ed66ea9e0f2fc3ea48583e19349c90356e630 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Routstr/routstr-core ] Merge pull request #636 from Routstr/ppq-auto-topup ppq-auto-topup https://github.com/Routstr/routstr-core/commit/c971862ac6d33305bd2a450e73b384878eb704f6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ sonivalabs/hermes-buzz-gateway ] docs: HF-downloader — use modern hf CLI; document deprecated huggingface-cli + sandbox-PATH gotcha (T12) Signed-off-by: Agent <agent@local> https://github.com/sonivalabs/hermes-buzz-gateway/commit/e54748b93198fd2b8ed699004e47eaf00d523a1c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ PlebeianApp/market ] fix: prevent AI_GUARDRAILS crash + profile unload after tab backgrounding (#1207) https://github.com/PlebeianApp/market/commit/59d8862cb0c2aad916b142de084d6ef512ec54a9 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ vitorpamplona/amethyst ] Merge pull request #3851 from vitorpamplona/fix/relay-subscription-lock-convoy fix(relay): stripe the subscription-state lock per relay to end an ANR convoy https://github.com/vitorpamplona/amethyst/commit/ba78eb599ede242a572603945a422d29f62ba720 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] Adopt cumulative weight ranges into the minimum contract A second review proposed committing a weight RANGE per leaf rather than a fixed amount, with entitlement floor(R*end/W) - floor(R*start/W). It is better than what I specced, and it improves v1 rather than only R2. Contiguous ranges telescope, so payouts sum to exactly R for any revenue and any weights — no rounding dust, no dust recipient to argue about. Naive per-share flooring loses a unit per claimant. Verified over 400 randomised partitions, zero mismatches. https://github.com/berm-protocol/berm/commit/01bb617c461234887c0e8995f584bb91db283071 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ naturallaw777/Sovran_SystemsOS ] Nixpkgs Upddate https://github.com/naturallaw777/Sovran_SystemsOS/commit/a343afffaacaa6ab659d5867d61ab69450ff49ca npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] notes: private encrypted note taking that survives every auto-cleaner One kind-30078 event per note (d=pcai:note:<id>, folders pcai:notefolder:<id>, both tagged l=pcai-notes), NIP-44-encrypted to the user's own key. Per note rather than one document like Budget: a document is a read-modify-write of the whole dataset per save, so two devices editing different notes lose one, and a Joplin library does not fit in one event. No index doc anywhere. Three auto-cleaners would each have deleted the whole feature, silently: https://github.com/loblawbob873-svg/posterchanai/commit/b59b5fa88b565182078944fcb0cd78ab07f362c9 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ sonivalabs/hermes-buzz-gateway ] security: hf_ token scan pattern; honest systemd hardening; precise allow-list semantics Signed-off-by: Agent <agent@local> https://github.com/sonivalabs/hermes-buzz-gateway/commit/fc80ac8ca921d9190d0004f240809872ca1e06cc npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] Nothing of the account that left survives into the one that arrives (#118) Four things outlived a sign-out, and each of them ended with one account's state acting under the next account's key. THE LIKE TABLE was keyed by note id alone. A note id is the same under every account, nothing ever cleared the table, and the heart renders from it. So a note liked as one account showed a filled red heart to the next account signed in on the same machine, who had never touched it, and their first press took the UN-like branch: Plaza signed a kind:5 under THEIR key naming a reaction the https://github.com/zig-nostr/plaza/commit/56639a6f5373965fabddb7d55c23e20bc28a8f09 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Vic-Nas/hailstone ] Consensus: exhaustive gapless Collatz sweep, replacing random per-block ranges Previously each block's search range started at an independent random point (derived from hashPrevBlock + a magnitude that climbed on a fixed chain-work budget). That meant coverage of any given magnitude window was never exhaustive and never converged toward exhaustive -- each block covered a vanishing fraction of an ever-doubling window, with no mechanism to track what had already been checked. It also let range_count (and therefore most of a block's real difficulty) be known several blocks in advance, since it only changed at fixed https://github.com/Vic-Nas/hailstone/commit/f9877c73990a4d816b8edd1734bf28f3b92cc7a1 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/buzz-relay-startos ] Merge pull request #12 from privkeyio/feature/drift-watch Add upstream drift-watch workflow for pinned relay digest https://github.com/privkeyio/buzz-relay-startos/commit/b70457920a3176cbbdb5e894ba51c046ed703730 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ MonumentalSystems/blossom-rs ] Merge pull request #37 from MonumentalSystems/agent/fix-gitleaks-installer ci: install Gitleaks for self-hosted runner platform https://github.com/MonumentalSystems/blossom-rs/commit/464e793da671e37fd1c019cc4325ebb5c2209dd4 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] test(nr-app): establish Jest coverage and PR overview (#284) * test(nr-app): establish comprehensive Jest coverage * ci(nr-app): publish Jest coverage overview --------- Co-authored-by: K <[email protected] > https://github.com/Trustroots/nostroots/commit/9643d3f458824faa66a69ffc34a929cb57a742f2 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Routstr/routstr-core ] Merge pull request #631 from Routstr/fix/xcashu-cost-breakdown-port fix: expose cost breakdown in paid responses https://github.com/Routstr/routstr-core/commit/47d0d87a88e97aa3b3e9b0976cdffc5045a0b103 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Vic-Nas/hailstone ] Fix genesis crash, wallet encryption, and block-index persistence Three real bugs found while auditing after the last release: - WalletGetEncryptionInfo() opened wallet.dat read-only with no DB_CREATE flag. On a brand new node that file doesn't exist yet, and Berkeley DB reports that by throwing DbException straight out of Db::open -- uncaught here, unlike the LoadBlockIndex() call right before it, so the whole process aborted right after genesis mining succeeded. https://github.com/Vic-Nas/hailstone/commit/92832bf9dabb44bedf46661babeff6d6ff814439 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ KotlinGeekDev/Rhodium ] Initialize error output buffer for bootIOSSimulator. https://github.com/KotlinGeekDev/Rhodium/commit/bc72612ccb1cabef8914ee936582e099c7fbe347 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #18 from forgesworn/ops/reference-https docs: publish secure reference bridge https://github.com/forgesworn/gopherkind/commit/e8520b0ba4e6307f2adaa979816e5cc4c5db28cf npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] chore(nr-app): refresh transitive packages (#274) * chore(nr-app): refresh transitive packages Move pnpm workspace settings to the supported root configuration, apply range-qualified transitive package floors, and regenerate the lockfile from the existing resolution baseline. * ci: use repository-pinned pnpm Set up pnpm directly from the repository packageManager declaration so workflow runs cannot reuse an incompatible cached binary. https://github.com/Trustroots/nostroots/commit/22612432afefb97682028c43a6f6ec989d18b3c4 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/keep-esp32 ] Release v0.2.2 (#159) https://github.com/privkeyio/keep-esp32/commit/47336e853c465b91c31d25b79458d7ea3200a1b5 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] offline: make the app usable with no network, on phone and desktop The client already had the hard parts — an IndexedDB event store, a local filter engine, a media cache — but every seam failed OUTWARD, toward the network. sw.js: the precache could never answer a single request. The page asks for app.js?v=<mtime> while SHELL lists bare paths, and Cache.match is exact-URL, so offline only ever worked because SWR had separately stored the versioned URL on an earlier online visit. Match exact-first, ignoreSearch only after the network fails (loose-first would serve the previous build after a UI-only deploy, which https://github.com/loblawbob873-svg/posterchanai/commit/e9b90a43d4881c2706cdbbc4958ea92ebc12e797 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ geyserfund/geyser-app ] chore(release): prepare v0.50.3 https://github.com/geyserfund/geyser-app/commit/47acbf45933735b322f4c0c8130175de39878201 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Vic-Nas/hailstone ] readme data update https://github.com/Vic-Nas/hailstone/commit/6a3aa8af1e9eebd05083bb68e552f75d3ceb46b6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] fix: fit HTTP frontend to mobile screens (#14) Co-authored-by: TheCryptoDonkey <[email protected] > https://github.com/forgesworn/gopherkind/commit/d2eb1ec6ea85a7f69be1efbb7789a9c79ed9e6ae npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Bitflash-sh/bitflash ] gui: name the icon resource GLFW_ICON so the window actually wears it (#126) The right icon has been in the exe the whole time. GLFW never found it. GLFW registers its own window class and fills hIcon with LoadImageW(module, L"GLFW_ICON", ...), falling back to IDI_APPLICATION when that exact resource name is missing. Ours was named "bitflash", so the lookup failed and every window this program has opened wore the generic Windows icon -- in the title bar and in the taskbar -- while the correct artwork sat unused a few kilobytes away. https://github.com/Bitflash-sh/bitflash/commit/6beddf1ef4df24e735e4c2c123453e6ce99c5460 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ satoshidude/zapclub.io ] radio: reconcile enabled-but-undriven streams; watchdog: exponential restart backoff Root cause of today's 15-min relay restart loop: after a restart, a club with no active DJs (5-min stage window) is never entered by driveClub, so its enabled radio neither streams nor pauses — the station sits enabled/unpaused with nothing feeding it, the watchdog reads 0 bytes forever and restarts the relay every cooldown period without ever healing anything. - conductor tick now reconciles: enabled+unpaused streams whose club has no active DJs, no auto-DJ and no resumed playback state are paused (onNoDJs, https://github.com/satoshidude/zapclub.io/commit/bdaccd707af99ebcaf6264d0cd4d3ba1cf935caf npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ plotsklapps/GYMPLY ] refactor: replace FontAwesome with Material Icons in IconUtils and update modals - Refactor `IconUtils` to expose `IconData` constants using standard Material `Icons` - Replace FontAwesome icon usage across all modal sheets (`about_modal`, `bodymetrics_modal`, `workoutsummary_modal`, etc.) with `IconUtils` and Material `Icons` - Update UI components to use native `IconData` references with `Icon` widgets https://github.com/plotsklapps/GYMPLY/commit/1ba79e878ab0e841642afad72c86f6ea50b5d6ad npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ protolayer-io/choke ] Merge pull request #170 from protolayer-io/feat/announcements-5-tool feat: refuse to publish an announcement the app would drop https://github.com/protolayer-io/choke/commit/5965623c367dae6a4d56989df5c29d9a07220169 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ betonetojp/nokakoi ] feat(georelays,mute,omochat): GeoRelaysキャッシュ手動更新の追加とミュート件数自動更新・各種改善 - 表示設定のキャッシュクリアおよびomochat設定モーダルでのGeoRelays手動更新機能を追加 - omochatタブの初期表示(history)取得を直近5分前以降のイベントに制限 - ミュートリスト編集モーダルでスマホ等の折り返し時に単語が右揃えになる表示崩れを修正 - プロフィール操作や編集モーダル保存時に表示設定内のミュート件数が自動更新されるよう修正 https://github.com/betonetojp/nokakoi/commit/66c59e26677d1d2e27cb37273273febe7df9688e npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] feat(vibe): add Food Circle sharing app Add a map-first Food Circle web app for free-food pop-ups, community fridges, restaurants, dumpster spots, and food requests. Support Plus Code privacy levels with optional matching pins, local persistence, filters, expirations, and Nostroots-compatible kind 30397/30398 synchronization. Add the shared #foodsharing Nostr chat, Squatbridge-style site header and identity controls, hub card, focused location/event/chat tests, and the Food Circle OpenSpec capability. https://github.com/Trustroots/nostroots/commit/7e3842e041e145f62bbedc697e84721dfe11dd00 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/keep-esp32 ] Give the drift job a token and stop hiding why the compare failed (#157) https://github.com/privkeyio/keep-esp32/commit/1b30d27148ed9bff04d0448370f17ab5734920b3 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Marc26z/FunWithFreedomTech ] A Screenshot from the Citizen Four Trailor used under fair use to write about threat models. https://github.com/Marc26z/FunWithFreedomTech/commit/a7eb44ea31cfcfbff5e139d9f63e8b6dde169b6c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ v0l/dtan ] chore: bump https://github.com/v0l/dtan/commit/cbfbf44eda845ccfd605f1c1b014cfd6e54f468f npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] fix: set environment for ota updates https://github.com/Trustroots/nostroots/commit/1bf12335e9b4cb667cf54478eacaea3f903ae50b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ ClarkQAQ/nostr ] style(relay): ignore websocket write errors in handler https://github.com/ClarkQAQ/nostr/commit/06db4a0357a2a0f0c65792057eeea7349044dcc1 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ riccardobl/nostrduino ] Add subscriptions getter and resubscribe on connection https://github.com/riccardobl/nostrduino/commit/a376b4d67c03912af010bc1a487ff107e1383dea npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ akiomik/nostui ] Merge pull request #497 from akiomik/dependabot/cargo/tokio-util-0.7.19 build(deps): bump tokio-util from 0.7.18 to 0.7.19 https://github.com/akiomik/nostui/commit/e331bf5d0585db66b4cfad6106ed8429b3a2f37c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] Fix four live bugs the R1 review found; mark the spec HOLD An adversarial review of DISTRIBUTOR-SPEC came back HOLD. Five CRITICAL findings are spec-level and remain open. Four were bugs in shipped code. BDR-013b — equal claimedAt let relay arrival order pick the payout address. Relays return events in arbitrary order, so two honest parties fetching identical data could compute different roots and each be certain the other was lying. That is the one property the whole design rests on. Ties now break on the address: a total order over the data itself. https://github.com/berm-protocol/berm/commit/2ba0d3b07d4bca42af922d6145bf5c3fc7f8eceb npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ steve02081504/fount ] Fix Start-WTfountCmd splat bug and propagate CLI errors (#276) https://github.com/steve02081504/fount/commit/654270104e98f0a88de03ba198b1ce386e280e85 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ ZeusLN/zeus ] fix(nwc): serialize pay_invoice handling to prevent shared-store races (#4303) * fix(nwc): serialize pay_invoice handling to prevent shared-store races The lightning and cashu pay_invoice handlers read and mutate shared singleton store state across awaits: the cashu path decodes into CashuStore (payReq, meltQuote) and re-reads that state after further awaits inside payLnInvoiceFromEcash; the lightning path does reset() then sendPayment() then waits on the same TransactionsStore the UI uses. Relay events dispatch handlers concurrently with no queue, so https://github.com/ZeusLN/zeus/commit/15f177d13146d9760081dd2842471f8fbbcaec75 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ v0l/nostrsearch ] Animate the scan bar on the compositor, not the paint path The loader was 48 elements each animating background colour and scaleY. Colour is a paint property: every frame repainted and re-uploaded all 48, forever, on a page whose entire job is to say "please wait". It burned about half a GPU. Transform and opacity are the only properties a browser animates without repainting, so now one element moves and it moves by transform alone: a gradient band translating across the strip. The ticks it travels over are a repeating gradient painted once, which also removes the 48 DOM nodes and the https://github.com/v0l/nostrsearch/commit/5b0dcfff0ccc1c1d2c717fe5f6017cd0e80977d2 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ riccardobl/nostrduino ] Fix CI runner tool assumptions https://github.com/riccardobl/nostrduino/commit/886ad85e13f922b4dbcb9522419a427bf064ff0b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ CodyTseng/jumble ] fix(download): remove deb auto-update warning https://github.com/CodyTseng/jumble/commit/1f5a3bd18d2280f507a8152211950e66bd9c2cbd npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ plotsklapps/GYMPLY ] refactor: replace font_awesome_flutter with Material Icons and updated IconUtils - Remove `font_awesome_flutter` package dependency from `pubspec.yaml` - Refactor `IconUtils` into a `StatelessWidget` wrapping standard Flutter Material `Icon` with default size and optional color - Update search modal components, choice chips, and exercise search results to use `IconUtils` and Material `Icons` - Refined UI components, including `FittedBox` scaling for body metrics, updated social share card styling, and exercise grid icon/typography adjustments. - Tweaked `FlexColorScheme` settings, including `inkSparkle` splash type and seeded color styles. - Updated versioning in `pubspec.yaml` and `version.json`. https://github.com/plotsklapps/GYMPLY/commit/ef116caff306f67516c65b9367b12e859386a0f6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] docs: document chmac's GitHub writing style in AGENTS.md https://github.com/Trustroots/nostroots/commit/5464fe384785aa17bc933ad582f2d0c1b98603d5 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/keep-esp32 ] Distinguish a pin ahead of a release from one behind it (#156) * Distinguish a pin ahead of a release from one behind it * Report an identical pin as identical https://github.com/privkeyio/keep-esp32/commit/85948e3363c0833e8bbc3a7e436a0f9227e2a4e3 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ satoshidude/jointfactory.io ] Show the factory charge against its own capacity Upgrading the courier on diskbuster made the factory card show more, and the account data says the factory was never touched: capacity 100, cost 400, zero upgrades. What changed is what reaches it — deliveries went from 20 to 40, so each run processes twice as much of the same unchanged factory. The card did not make that distinguishable. "Processing 40" reads as a factory statistic, and the ring made it worse by swapping between the batch size when idle and the current charge when running, so the same big number meant two https://github.com/satoshidude/jointfactory.io/commit/676b93cddea5687507d0db1dc25dca9b0351535d npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] deploy: a git-hook change must not restart every unit git_hooks/ was unmapped in deploy_targets, which means "could affect anything" and therefore ALL seven units -- so the previous commit, which edited one log message in post_receive.py, restarted the app, relay, worker, media, tor, proxy and git on BOTH nodes and dropped every connected Nostr client. That is exactly the outage the role split removed, caused by the tooling that exists to prevent it (the same trap sync.sh and the Dockerfiles were already fixed for). Nothing loads git_hooks/: install_hooks writes a shell shim into each bare repo https://github.com/loblawbob873-svg/posterchanai/commit/d61a2407abb3112259df48e07d5f9c4b4c615424 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ dtonon/fevela ] Fix first-level replies filter for kind:1 threads and NIP-22 comments https://github.com/dtonon/fevela/commit/8ca0fb84410fa15510d8e323be6aaa1b2597b37b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] bags: the campaign — schedule in, root out Batch membership comes from OBSERVATION, not assertion. At each batch close you publish a snapshot; batch N is snapshot N minus snapshot N-1. Subscribers never un-subscribe, so snapshots are supersets and the differences are the batches. Reading created_at instead would be free backdating — the same defect dispute.ts and subscribe.ts already refuse. Now you land in the batch where you were first SEEN, and nothing you sign changes what was already https://github.com/berm-protocol/berm/commit/213ded4432c90c859e53f6b4261cee58f2e8d2cd npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] Waiting looks like waiting, and failing looks like failing (#113) Two states that both drew the same thing: nothing much. A PICTURE THAT WILL NOT LOAD. The view asked one question, whether the picture was loaded, so every state that is not loaded drew the same striped waiting frame. A 404 waited in it forever. It says so now, in the same box at the same height (the row is priced for it, and a picture failing must not make the feed jump), with the host it came from, because "this one host is not answering" is usually the whole story. Pressing opens the original, which is the one thing https://github.com/zig-nostr/plaza/commit/69ad337569ba68b79fbf78fd9e9e0ea8ee009a13 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ haruki7049/nostr-unko-posting-bot ] Empty commit to run CI https://github.com/haruki7049/nostr-unko-posting-bot/commit/feea9067d354beb34cc517fcaff82b774a3d92dd npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] docs: record live reference revision (#13) Co-authored-by: TheCryptoDonkey <[email protected] > https://github.com/forgesworn/gopherkind/commit/869f08cbb9b15a85ac64d40c0464f6780adf9444 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ satoshidude/zapclub.io ] conductor: change-only queue logging — stop flooding the journal every tick The per-tick queue state line (one per DJ per club every ~2.5 s) made up the bulk of 1.7 GB journald usage and slowed every log search. It now logs only when the fingerprint (tracks/active/created/relay) actually changes. Server-side (not in repo): backup script now excludes the ephemeral trackcache (daily tarball 95 MB → 9.7 MB). Co-Authored-By: Claude Fable 5 <[email protected] > https://github.com/satoshidude/zapclub.io/commit/b3bdb7328e7bacf76813ffbbbfcd0a4640738c84 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ steve02081504/fount ] path CLI: modularize fount.ps1/sh, add smoke CI, unify Hub empty states (#275) Co-authored-by: Taromati2 <[email protected] > https://github.com/steve02081504/fount/commit/b2ac57a7c5a8d7e656a00523980850b127c5ae13 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ plotsklapps/GYMPLY ] Updated dependencies in pubspec.yaml; Fixed dart linter (80 chars max) issues. https://github.com/plotsklapps/GYMPLY/commit/3941d707e6cebb40e64c1d1d108d9416cbb4cdff npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Vic-Nas/hailstone ] Reorder Dockerfile COPY steps to work around a Railway build-cache failure Railway's builder failed with 'failed to compute cache key: failed to calculate checksum of ref ...: /relay/entrypoint.sh: not found' -- the file is genuinely tracked in git and builds correctly locally (both before and after this change), so this looks like a stale/corrupted build-cache layer reference on Railway's side, not an actual missing file. Moved the entrypoint.sh COPY earlier in the runtime stage to change the layer sequence/hash, which should force Railway to build a fresh cache entry instead of reusing whatever broke. https://github.com/Vic-Nas/hailstone/commit/d58d05fab33701839eeea5ada45339d2357f6161 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] A note that could not be found is not written off forever (#112) The thread whose parent never loads is not a relay problem. I fetched that parent from the reader's own four relays with `nak` in under a second, while Plaza kept saying "The note this answers is not on your relays yet". The ancestor above a thread is asked for through the same machinery as a quoted note, and that machinery gave up after three tries. Permanently: nothing re-armed it, not a later round, not a reconnect, not reopening the thread. Three tries is nothing, and all three can land in the first seconds while the pool is https://github.com/zig-nostr/plaza/commit/96a6715e95feed7c91c0e3178c7bfd57794d8625 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #10 from forgesworn/codex/document-npm-trust-bootstrap Document the npm trusted-publisher handoff https://github.com/forgesworn/gopherkind/commit/482544925af1ce0db0736cbcd8a448aa668b7f8c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] bags: the distribution commitment One root anyone can rebuild. Fetch the same subscriptions from relays, run the same snapshot, build the same tree, compare. A mismatch means the published list is not what the relays support — checkable without anyone's cooperation, which is the whole point. Three attacks handled explicitly, because none of them is caught by testing that the happy path works: https://github.com/berm-protocol/berm/commit/050570e3dc958397f08c586d1a2571db88662145 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] test(nr-app): add Maestro E2E flows for onboarding (#277) Introduces the first E2E tooling for nr-app. Two Maestro flows cover the deterministic legacy-key onboarding branch: generating a new mnemonic, and importing a fixed test nsec then asserting the derived npub on the link screen. The import flow exercises SecureStore write, keystore read, bech32 derivation, Redux and render in one assertion. Both pass against a Release build (2/2). Adds testIDs to the onboarding screens and a testID passthrough on KeyInput so the flows select on stable ids rather than visible copy. https://github.com/Trustroots/nostroots/commit/b568a5018d6636a4f8fb08732b2ad3b22ee1de83 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Trustroots/nostroots ] fix(nr-app): make dark mode work across the app (#255) The Appearance setting (System/Light/Dark) drives nativewind's colorScheme.set(), but @/hooks/useColorScheme re-exported React Native's hook, which only ever reports the OS scheme. The two layouts that consume it therefore picked light-mode icon and overlay colours while their backgrounds went dark — dark icons on a dark background whenever the in-app setting disagreed with the OS. Wrap nativewind's hook instead, which also lets web honour the setting. https://github.com/Trustroots/nostroots/commit/5176c1284d409429135ccdbb62b68446916a169e npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ berm-protocol/berm ] bags: check against the published OpenAPI spec, and withdraw a claim Read docs.bags.fm/api-reference/openapi.json and transcribed it. Four corrections: path /token-launch/fee-share/wallet/v2 -> /agent/v2/fee-share-wallet providers three -> eleven chain (unknown) -> SOL|EVM, one handle two wallets accountId assumed to need X OAuth -> returned as platformData.id https://github.com/berm-protocol/berm/commit/f1315bce8414e31696e9457df2d816bc966558ad npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #7 from forgesworn/codex/modern-gopher-hardening feat: harden publishing and bridge operations https://github.com/forgesworn/gopherkind/commit/c547a8ad53b167e44bc1366ecce218d4dc962807 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] Menu items that look alike, and verbs with room (#107) Three things reported from driving it. The note menu had a glyph on two of its four items and none on the other two, which reads as two items with something extra rather than as one list. A menu's items are alike; a glyph on some of them is a difference that means nothing. All four are plain now. Choosing an item closes the menu. Copying the address and opening on the web https://github.com/zig-nostr/plaza/commit/8a22b2a129d7dd910b284f4a02e3c1d93b19b106 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ nostrdevkit/nostr ] nostr: rework `SingleLetterTag` Pull-Request: https://github.com/nostrdevkit/nostr/pull/1416 Signed-off-by: Yuki Kishimoto <[email protected] > https://github.com/nostrdevkit/nostr/commit/e17d7d8e47b1caac8c89a018d3c064760eba4dcf npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ albidev/hermes-payments ] docs: release 0.1.1 as explicit P6 live-test checkpoint https://github.com/albidev/hermes-payments/commit/041a1852f63db73a55d5fcb85e77b2b04b7fc14b npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ WoompaLoompa/btcpay-clink ] v1.0.9: server-issued invoice, session-bound ndebit, DNS-resolving relay validation, exact BOLT11 enforcement https://github.com/WoompaLoompa/btcpay-clink/commit/67c2c4a54e43f57d98a7c88cd5c28fe09706db10 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ qntx/awesome-nostr-relays ] Merge pull request #16 from qntx/dependabot/cargo/clap-4.6.4 chore(deps): bump clap from 4.6.1 to 4.6.4 https://github.com/qntx/awesome-nostr-relays/commit/4826462b501342a86d572208edf36bee6228004f