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
nprofile1qqs8l6lz5kd2sfhc7cehksgpjw024jp06nnv5heu0w838jsr45n090cpp4mhxue69uhkummn9ekx7mqggf9a5
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 [ 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 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/gopherkind ] Merge pull request #6 from forgesworn/codex/restore-prelaunch-versioning Restore pre-launch versioning https://github.com/forgesworn/gopherkind/commit/89c9efcef525390eddaa28c154a4e235a126e595 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ LNVPS/api ] feat(admin): report a referral's outstanding balance and its millisat value The referral detail endpoint showed only gross earned commission per currency, so deciding whether a referrer was near their payout threshold meant netting the payout list by hand — and the threshold is judged on everything owed valued in millisats, which the response did not carry at all. GET /api/admin/v1/referrals/{id} now returns `balances` (per settled currency: earned, settled — paid and reserved, amount plus fee — the https://github.com/LNVPS/api/commit/ca79acf4362a4d950b99ed369c5d94d95626ebac npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] client: cap the reading column and centre the shell The feed had no maximum width, so every extra pixel of a wide monitor went into making lines longer. MEASURED at --fs-3, a post ran 79 characters per line at 1280, 92 at 1440, 140 at 1920 and 160 at 2560. Comfortable prose is 45-75 characters and the classic optimum is 66, so on any large screen the feed sat at roughly DOUBLE the readable maximum — which is most of why the timeline scanned as an undifferentiated wall instead of as separate posts. Now 61 / 65 / 70 / 76 at those same widths. Capping .app (not the feed alone) keeps the three columns adjacent and spends the surplus as one gutter either side of the whole shell. Capping only the feed also fixes the measure, but it opens https://github.com/loblawbob873-svg/posterchanai/commit/48926d52ed9bc79143ebcbeb4850367ead1d886f npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ HORNET-Storage/HORNETS-Relay-Panel ] chore: gitignore runtime logs directory https://github.com/HORNET-Storage/HORNETS-Relay-Panel/commit/8beae0aa44caee8ca5c27fd9c4a20a297290a6fe npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ TsukemonoGit/nos-profile-arekore ] Merge pull request #22 from TsukemonoGit/dependabot/npm_and_yarn/postcss-8.5.25 Bump postcss from 8.5.14 to 8.5.25 https://github.com/TsukemonoGit/nos-profile-arekore/commit/65e3edd400b123e5157b65ffdab8d7c6ba7d3939 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ TsukemonoGit/nos-bookmark-areyatu ] Merge pull request #20 from TsukemonoGit/dependabot/npm_and_yarn/postcss-8.5.25 Bump postcss from 8.5.15 to 8.5.25 https://github.com/TsukemonoGit/nos-bookmark-areyatu/commit/22be6e44a563c89fd7ba3641c44d8eb6a5b9ba63 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ TsukemonoGit/luminostr ] Merge pull request #23 from TsukemonoGit/dependabot/npm_and_yarn/postcss-8.5.25 Bump postcss from 8.5.14 to 8.5.25 https://github.com/TsukemonoGit/luminostr/commit/75f151c1c87d79b7f2a0f2dde6bfa0796f8b0834 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ TsukemonoGit/nake ] Merge pull request #29 from TsukemonoGit/dependabot/npm_and_yarn/postcss-8.5.25 Bump postcss from 8.5.16 to 8.5.25 https://github.com/TsukemonoGit/nake/commit/0d2785d78de73299c36f9c1be5d979e83274ec39 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ derekross/concord-automod ] 📡 Repo moved to nostr: point metadata and README at the ngit remote Cargo.toml repository/homepage now resolve to the gitworkshop view of the nostr announcement instead of GitHub, and the README leads with the nostr:// clone URL. GitHub is archived as of this commit. Co-Authored-By: Claude Opus 5 (1M context) <[email protected] > https://github.com/derekross/concord-automod/commit/ecf6c3044c780612ec1d5e36b109ce3d6dd604c9 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] client: finish the emoji-to-icon conversion Every remaining <button> that led with an emoji now leads with a sprite icon — 93 of them across app.js, meme.js and the shell — plus the links styled as .btn and the section headers, which sit on the same surfaces and would otherwise read as half-converted. Emoji were the last dated signal in the client: they render per-platform, can't inherit colour or state, and sit at the wrong weight next to the type. 28 new symbols cover what the transport controls, meme builder and find bar needed (undo/redo, prev/next, scissors, flip, stop, star, heart, chevrons, …). All stroke currentColor on the 24x24 grid, so they inherit every theme https://github.com/loblawbob873-svg/posterchanai/commit/67b3e394f17bd2f03ea578c5ddb891694d902eed npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ vitorpamplona/amethyst ] Merge pull request #3849 from vitorpamplona/l10n_crowdin_translations New Crowdin Translations https://github.com/vitorpamplona/amethyst/commit/fdc68e801a02984c0acf28b780bcd6f5050b06f8 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ JordanNewell/claudeway ] chore(og): swap BUZZ PUNTED ON thesis for VERIFIABLE CONSENSUS OG alt text was fixed in 7e9b182 but the rendered PNG still carried the misleading "BUZZ PUNTED ON / the coordination layer" framing as visible pixels — anyone landing on the repo or social-card preview saw the old claim. New title: VERIFIABLE CONSENSUS — names the actual primitive without the unverified Buzz dig. Subtitle: "signed agreement, on the open wire". https://github.com/JordanNewell/claudeway/commit/0eb742d1bb6e39a9e7ded4e2c3321eb3519c15ef npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ obelisk-app/obelisk ] Ignore the local backlog notes and promo source art issues.md and obelisk-promo-contact-sheet.jpg have sat untracked at the repo root since before this session's work. Neither belongs in a public tree: the backlog is raw working notes, and the contact sheet is 214K of source art the app never loads. Follows the existing "never ship" convention already used for /issues-with-pictures-and-description/. https://github.com/obelisk-app/obelisk/commit/e9936101849ef6f2e35592f3754961e4fc14ba6e npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/libnostr-c ] Document the ESP stack cost of seeding the DRBG (#70) * Document the ESP stack cost of seeding the DRBG * Measure the seeding threshold instead of asserting it https://github.com/privkeyio/libnostr-c/commit/a41bb26f6c68067161cf6935fd7c8499747b168f npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ damus-io/notedeck ] remove stuff Signed-off-by: William Casarin <[email protected] > https://github.com/damus-io/notedeck/commit/4f459004c9d98fe227a686d9911ad2557617674c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ betonetojp/nokakoi ] バックグラウンド復帰後に投稿窓が表示されなくなるバグを修正 CSPのscript-srcにstatic.cloudflareinsights.comを追加 https://github.com/betonetojp/nokakoi/commit/fbfba832669988b85a2c70fd0e2367420e89c48c npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ derekross/concord-automod ] 🔒 Privacy hardening: no content at rest, audit retention, state sweep, 0600 files Review findings and fixes, in severity order: 1. Journald was receiving a full decrypted transcript: every incoming message's text was logged at INFO. Now logs metadata only (chat/npub prefixes + length); content available at trace for local debugging. 2. The audit log stored an 80-char plaintext snippet of every flagged message and grew forever. Snippets are now OPT-IN (audit_log_snippets, default false) and entries older than audit_retention_days (default 30, https://github.com/derekross/concord-automod/commit/9f552f2bbad142a3bfcf718335cc9bb30a342895 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ dwebxr/aegis ] fix(csp): let the Cloudflare Web Analytics beacon actually run Cloudflare proxies this domain and injects its Web Analytics beacon into every response, but script-src did not allow static.cloudflareinsights.com — so the script failed to load on every page load. Measured on production: one GET, then `requestfailed: csp`. The result was an error in every visitor's console and zero data reaching Cloudflare. The feature was enabled and broken, not in use. Allowing it restores free page views and real-user Core Web Vitals — roughly https://github.com/dwebxr/aegis/commit/916c8875ce015e66b3c5fb6f3adb3e685a97dc01 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ obelisk-app/obelisk ] Round the composer buttons and stop the IME reading the box as sensitive Two composer fixes. The Send button rendered as a vertical oval. `.obelisk-mobile button` sets a global 44px tap-target floor on both axes; `.composer-send` overrode min-width down to 38px but never min-height, so the button was 38px wide and 44px tall. Same hole in .composer-attach/.composer-emoji, which were rendering as lozenges rather than rounded squares — those three rules were the only ones in the sheet setting min-width without https://github.com/obelisk-app/obelisk/commit/3aeb46b49d6bc1544882e29a4ac0946d834d33d6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ chebizarro/nostrc ] Sync beads interaction log Co-Authored-By: Claude Fable 5 <[email protected] > https://github.com/chebizarro/nostrc/commit/29953e711f1d5978bdc25abecb44b2338894c6a8 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ geyserfund/geyser-app ] chore(release): prepare v0.50.2 https://github.com/geyserfund/geyser-app/commit/0022ce98c5d5c8a602446494362f15865a0be414 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ bryanmatthewsimonson/xray ] Merge pull request #262 from bryanmatthewsimonson/claude/personas-college docs: derive discipline standards from first principles (DISCIPLINES.md v1.0.0 + guards) https://github.com/bryanmatthewsimonson/xray/commit/55bd7e2996d46fa6f328c2820c2d40b8185c7a0e npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ agent-awsome/relay-pulse ] Record shino3's report policy: reply only on 1h+ continuous downtime Co-Authored-By: Claude Fable 5 <[email protected] > https://github.com/agent-awsome/relay-pulse/commit/f4dd214a583f16ed9364b228956890834e632478 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ privkeyio/libnostr-c ] Fail closed when the NIP-17 timestamp cannot be fuzzed (#69) * Fail closed when the NIP-17 timestamp cannot be fuzzed * Release the buffers and wipe the key on the new failure paths https://github.com/privkeyio/libnostr-c/commit/3a61e60a65e774174096207f8a7ae43357ae3131 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ bryanmatthewsimonson/xray ] Merge pull request #261 from bryanmatthewsimonson/claude/constitution-ratification docs: ratify the project constitution (v1.0.0 + concord + guards) https://github.com/bryanmatthewsimonson/xray/commit/bf09214648e8a535f799d7936a6e91a0d4f13db9 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ derekross/concord-automod ] ✨ !automod on/off IS the community switch; bot is staff-only and silent to everyone else Per Derek: !enable followed by !automod on was redundant, and regular members have no business talking to a moderation bot at all. - !enable/!disable removed. '!automod on' in any channel arms auto-mod for that ENTIRE community (and arms the engine + dry-run window on first activation anywhere); '!automod off' disarms that community only. The community store is now the per-community automod switch, same file, same fail-closed semantics. https://github.com/derekross/concord-automod/commit/1b299d57c1fe8f07ede049cb3638c35190ffe4ef npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ forgesworn/burrow ] feat: full cli client (read, search, post, feed, pair) https://github.com/forgesworn/burrow/commit/b0e2f916a24a35a23dd4f9e9bd63f9f65fbbc727 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ dwebxr/aegis ] fix(demo): take the last server call out of a demo visit Production browser check, 10 sessions: the 5 that stayed on the landing page invoked zero functions, but the 5 that entered the demo each issued one POST /api/fetch/ogimage. The og-image backfill in ContentContext fires for any item with a sourceUrl and no imageUrl, and the snapshot's Hacker News entries carry no image — so "an anonymous visit costs zero server functions" was true for the landing page and false for the demo. Two changes, so it is true both ways round: https://github.com/dwebxr/aegis/commit/ac282ff68c21fdf02ebb0bdf675c618be9e5f8e1 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ protolayer-io/choke ] Merge pull request #169 from protolayer-io/feat/announcements-4-ui feat: put the announcements behind a bell that is usually not there https://github.com/protolayer-io/choke/commit/8f435ee878ba6f35b8374d7736fa8144ad90ddda npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ bryanmatthewsimonson/xray ] Merge pull request #265 from bryanmatthewsimonson/chore/security-hardening chore(ci): pin the release supply chain, add SECURITY.md + Dependabot https://github.com/bryanmatthewsimonson/xray/commit/a40ced9aff7e90e2341ebfc79f1ef7c33ba841e7 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ protolayer-io/choke ] Merge pull request #167 from protolayer-io/feat/announcements-2-fetch feat: fetch announcements, and keep only what still holds https://github.com/protolayer-io/choke/commit/38e539081a1684e018b4017034cd87f12ad202f5 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zapcooking/frontend ] Merge pull request #610 from dmnyc/feat/scroll-to-top feat(nav): floating back-to-top button + tap-header/search shortcuts https://github.com/zapcooking/frontend/commit/3cacba5a25643480c759af5cf4ea206ace291767 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ constata-eu/asami ] adds better submission tracking https://github.com/constata-eu/asami/commit/84f3aba83c17e71f74be0dac5272d7a5533cb7f6 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ LNVPS/api ] feat(proxmox): reconfigure VMs during PatchHosts when their config drifts (#353) * feat(proxmox): reconfigure VMs during PatchHosts when their config drifts PatchHosts only re-applied firewall state, so a VM whose config on the hypervisor no longer matched the database (template upgrades, manual edits, changed defaults such as the scsi controller) stayed drifted until someone triggered ConfigureVm by hand. Add VmHostClient::patch_config, a firewall-patch analogue that reads the https://github.com/LNVPS/api/commit/a3332c749db9cabbfe2ed1e0511b295491838ba2 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ OpenSats/website ] Remove NVK from the board and update former member bios (#898) * chore: remove nvk from board of directors * chore: update nvk author bio after board departure * chore: update niftynei author bio after board departure https://github.com/OpenSats/website/commit/c17b33c50387f245f6d4f431ad4f91ab0327b439 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ obelisk-app/obelisk ] Render mentions as @DisplayName instead of a raw npub `parseMentions` resolves display names from the channel's member list and nothing else, so mentioning anyone who is not a member of *that* channel fell through to `shortNpub` — the message body shipped `@npub16dew…`. MentionChip now reads the pubkey's kind:0 from the bridge and prefers displayName, then name, then whatever parse-time resolution produced. Subscribing also calls `ensureUserMetadata`, so a pubkey the client has never seen is fetched on render and the chip fills in when the profile https://github.com/obelisk-app/obelisk/commit/42ca3fe05860de94aaf42635ab0d2e1566cadf88 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ bryanmatthewsimonson/xray ] Merge pull request #297 from bryanmatthewsimonson/claude/transcribe-engine-ui feat(transcriber): engine choice in the extension — settings keys, per-video picker, per-request providers https://github.com/bryanmatthewsimonson/xray/commit/59f16372e2bd18c7c52bb58a54e7784725120fab npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zig-nostr/plaza ] Every sheet takes the keyboard when it opens (#105) Escape closed none of them, and three comments in this file said it did. The runtime resolves Escape from the FOCUSED widget up to the surface around it, with a fallback that only sees ANCHORED surfaces. A sheet here is neither: it is a dialog grown to the whole window, and nothing inside it asked for the caret. So the walk started nowhere and the fallback saw nothing, and Escape was dead on the composer, the name card, the bunker step, edit profile, notifications, the expanded picture and Settings. https://github.com/zig-nostr/plaza/commit/6ba4c0a6f306a90bf569f592cde6128371537cd2 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ loblawbob873-svg/posterchanai ] sync.sh: stop silently skipping the main app on every deploy `_restart_units` gated each unit on `systemctl cat "$u"`, which READS THE UNIT FILE as the invoking user. /etc/systemd/system/posterchanai.service is mode 600 (every sibling unit is 644 — the restrictive mode looks accidental; its only Environment= lines are PATH and HOME, identical to the 644 worker unit, so there is nothing in it to protect). `cat` therefore returned "Permission denied", the loop read that as "this unit does not exist", and THE MAIN APP was skipped — quietly — on every deploy that targeted it. Caught it on the previous deploy: targets were worker+app, `[sync] restarting` printed for https://github.com/loblawbob873-svg/posterchanai/commit/66b6fc5996537d3b42104caafd97eeb1deb03324 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ CodyTseng/jumble ] chore(release): v26.8.1 https://github.com/CodyTseng/jumble/commit/24ccb2123ae2f8bf7683bba7e0d6c7538148a52a npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ protolayer-io/choke ] Merge pull request #165 from protolayer-io/docs/announcement-channel-spec docs: specify an authenticated announcement channel https://github.com/protolayer-io/choke/commit/1678db8c9a84f081b5d753181bc9cdc51db1c1e5 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ api-evangelist/nostr ] Kin Score 0.6 — provenance-graded rescore Adds this provider's Kin Score artifact for rubric 0.6, the provenance release. 0.6 grades on WHO PUBLISHED an artifact, not merely that one exists. Where API Evangelist authored an artifact on this provider's behalf — a modeled OpenAPI, a candidate MCP server, generated agent skills, a derived agentic-access contract — it now earns a quarter of the award rather than all of it. The artifact records that authorship in its provenance block, so the number can be read with the evidence behind it. https://github.com/api-evangelist/nostr/commit/ecb946983b5f4c5b5a4ad921fd91064f3f544549 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ Bitflash-sh/bitflash ] net: back to one accept thread until every relay takes more than one (#114) #113 added three accept threads and called the extras harmless against an un-upgraded relay. They are not: an old relay closes the previous registration whenever the same node registers again, so the threads evict each other in a loop. Measured on the live network -- the node whose registrations landed on the un-upgraded New Jersey relay made 189 registrations in fifteen minutes with zero pairings, unreachable through it and hammering it, while the node on the upgraded relay made 9 with 7 pairings. One relay of three is upgraded, so this would hit two thirds of every node's registrations. The relay half of #113 stays; it is compatible in both directions and is the prerequisite for raising this again, which the comment now states. https://github.com/Bitflash-sh/bitflash/commit/daf2a5710381b0db727ad8e75eadae9cf8557caf npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ zapcooking/frontend ] Merge pull request #611 from zapcooking/fix/bluesky-crawler-ua fix(og): drop dead logo_with_text.png card tags on 4 routes; match Bluesky Cardyb https://github.com/zapcooking/frontend/commit/3ff365ce07e6c95163cebcf29876300ef2df5768 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ JSKitty/price-bot ] Move to Vector SDK 0.6 A clean upgrade: no source changes needed, tests green, and a live command round-tripped through the XMR bot after deploy. Worth noting for the next bump — this went 0.4 → 0.6 in one step and still needed nothing, unlike Vector-LLM, which broke on the same jump. The difference is that this bot only ever talks through the SDK, while that one drops to the raw nostr-sdk client for the kind-1 firehose and so is exposed to the 0.44 → 0.45 breakage underneath. https://github.com/JSKitty/price-bot/commit/9bff1191eedeabd2fba990013a257d6b6fc9db45 npub10l479fv64qn03a3n0dqsryu74tyzl48xef0nc7u0z09q8tfx72ls7sv2ux nostr-summary [ LNVPS/api ] perf(e2e): cut the suite from 17.6s to 11.7s by not sleeping through it Profiling the suite showed test_full_lifecycle was 62% of the total runtime, and almost all of that was idle waiting rather than work. - poll_until now backs off from 25ms up to the caller's interval rather than using it as a fixed cadence. Instrumenting the polls showed nine of them succeeding on their first retry but each still paying a flat 500ms, ~4.6s of pure sleep. The deadline and early exit are unchanged, so every call site keeps its failure semantics and worst case; it also https://github.com/LNVPS/api/commit/541e8f315f2d8aeddcb6581b193c81b799d6aef5