notecrumbs

a nostr opengraph server build on nostrdb and egui
git clone git://jb55.com/notecrumbs
Log | Files | Refs | README | LICENSE

DateCommit messageAuthorFiles+-
2026-02-23 18:01fix: use git dependency for nostrdb instead of hardcoded local pathWilliam Casarin2+2-1
2026-02-22 19:46fix: replace Notify with watch channel for inflight dedup, upgrade nostrdbWilliam Casarin4+43-34
2026-02-18 20:34refactor: extract run_inflight_deduplicated and replace mock testsWilliam Casarin1+166-69
2026-02-18 20:29test: add tests for debounce and inflight deduplication logicWilliam Casarin1+316-0
2026-02-18 20:19refactor: convert Notecrumbs methods to standalone functions for testabilityWilliam Casarin1+162-136
2026-02-18 20:09fix: extend relay debouncing to cover all nip19 types and profile feedsWilliam Casarin1+56-35
2026-02-18 19:56fix: debounce relay requests to prevent hammering on repeated note fetchesWilliam Casarin1+284-176
2026-02-17 19:08perf: move secondary note fetches to background taskWilliam Casarin2+29-27
2026-02-17 18:56clippy fixesWilliam Casarin3+37-27
2026-02-17 18:50fix: fetch reply author profiles via unknowns systemWilliam Casarin3+50-2
2026-02-17 18:43feat: display direct replies below notesWilliam Casarin2+170-6
2026-02-17 18:28feat: display reply, repost, and reaction counts in note footerWilliam Casarin4+87-49
2026-02-17 02:50feat: display reaction counts on notes using nostrdb metadataWilliam Casarin4+160-11
2026-02-17 01:47feat: thread layout with vertical line connecting parent and reply avatarsWilliam Casarin2+210-118
2026-02-17 00:54Merge feat/reply-context: display reply context with parent note previewWilliam Casarin4+163-3
2026-02-17 00:06chore: remove .beads from tracking and add to gitignoreWilliam Casarin2+1-20
2026-02-17 00:00feat: display reply context with parent note previewWilliam Casarin4+182-3
2026-02-16 23:33feat: add sitemap.xml and robots.txt for SEOalltheseas11+2620-302
2026-02-05 18:09feat: store relay provenance in nostrdb via IngestMetadataWilliam Casarin1+30-10
2025-12-19 05:36feat: integrate rust-nostr PR #1172 relay provenance trackingalltheseas7+438-288
2026-02-05 17:38refactor: replace tuple with QuoteProfileInfo struct in build_embedded_quotes_htmlWilliam Casarin1+27-9
2026-02-05 17:27rustfmtWilliam Casarin4+142-96
2025-12-19 15:28fix: refresh profile metadata during background updatesalltheseas1+62-5
2026-02-05 17:22chore: fix unused argument warningsWilliam Casarin1+3-3
2026-02-05 06:52refactor: generalize unknowns to fetch all missing dataWilliam Casarin3+145-34
2026-02-05 06:35feat: fetch quoted events from relays with relay provenanceWilliam Casarin4+358-28
2026-02-05 06:02feat: iOS-style article card for embedded longform quotesWilliam Casarin2+136-35
2026-02-04 20:51feat: add NIP-84 highlights and NIP-18 embedded quotesWilliam Casarin2+969-30
2026-02-04 20:50upgrade nostrdb to 0.9.0William Casarin3+175-13
2026-02-04 21:44ci: add apt-get update before installing depsWilliam Casarin1+3-1
2025-12-18 22:32refactor base_url retrievalWilliam Casarin1+15-27
2025-12-18 19:40refactor slop, add profile linksWilliam Casarin3+198-159
2025-12-18 19:27clippy fixesWilliam Casarin1+3-1
2025-12-18 19:27nix: add clippyWilliam Casarin1+1-1
2025-12-18 19:08clippy fixesWilliam Casarin2+9-10
2025-12-18 19:06cargo: update depsWilliam Casarin1+218-251
2025-12-18 19:01Merge don't block profile page loading by elsat #43William Casarin3+151-5
2025-12-18 18:53html: add video supportWilliam Casarin2+32-17
2025-12-18 18:43perf: add concurrency safety with DashMap and atomic operationsalltheseas3+110-38
2025-12-18 18:41perf: rate-limit background profile refreshesalltheseas1+54-5
2025-12-18 18:40perf: skip blocking profile feed fetch when notes are cachedalltheseas1+30-5
2025-12-18 18:14fix potential panic in ends_withWilliam Casarin1+6-2
2025-12-18 18:08nix: add rustc/cargoWilliam Casarin1+1-1
2025-12-18 18:07nix: pin nixpkgsWilliam Casarin1+2-1
2025-12-18 18:07html: bump assets because cloudflare cached themWilliam Casarin1+5-5
2025-12-18 18:05html: render imagesWilliam Casarin1+27-1
2025-12-18 18:05nix: openssl is needed nowWilliam Casarin1+1-1
2025-12-18 17:05Merge relay pool + design improvements by elsat #37William Casarin11+2224-237
2025-10-23 23:08Remove unused profile image cache plumbingalltheseas3+0-10
2025-10-23 23:08Load default avatar from embedded bytesalltheseas1+2-2
2025-10-23 23:07Avoid stale LMDB transactions when hydrating render dataalltheseas1+35-17
2025-10-23 22:58Stabilize address lookup test against nostrdb racesalltheseas1+18-7
2025-10-23 22:01Track embedded font assetsalltheseas2+0-1
2025-10-23 21:43Address feedback on relay queries and mobile layoutalltheseas3+69-65
2025-10-23 20:41Align notecrumbs frontend with Damus stylingalltheseas5+1184-520
2025-10-22 16:26Document relay discovery sourcesalltheseas4+32-276
2025-10-22 16:07Expose relay pool metrics via Prometheusalltheseas3+699-29
2025-10-22 15:48Improve relay resiliency with metrics and discoveryalltheseas2+58-8
2025-10-22 15:41Refine relay pool connections and profile experiencealltheseas2+69-35
2025-10-22 15:22Restore npub profile styling and copy interactionalltheseas1+50-17
2025-10-22 15:11Improve profile feed freshness and orderingalltheseas2+991-63
2025-10-22 14:56Add persistent relay pool and richer npub profile renderingalltheseas4+622-792
2025-10-22 16:56fix newlines in notesWilliam Casarin1+1-1
2025-10-22 16:56add missing timeout fileWilliam Casarin1+7-0
2025-10-22 16:45Merge remote-tracking branch 'elsat/docs/add-agents'William Casarin1+42-0
2025-10-22 16:39Merge 'feat/longform-articles' by elsatWilliam Casarin7+1481-578
2025-10-22 16:38timeout: standardize timeoutsWilliam Casarin3+6-9
2025-10-22 16:27test: use wait_for_notes from ndbWilliam Casarin1+11-27
2025-10-22 14:32render: remove redundant cloneWilliam Casarin1+1-1
2025-10-22 14:30nit: remove some redundant callsWilliam Casarin1+2-2
2025-10-22 14:25query: use note result directlyWilliam Casarin1+1-1
2025-10-22 14:25cargo: update depsWilliam Casarin1+592-462
2025-10-22 04:05Add coverage for longform note address filtersalltheseas1+120-0
2025-10-22 03:26fix: remove redundant 'a' tag filter in address queriesalltheseas1+0-1
2025-10-22 02:36feat: render NIP-23 longform articlesalltheseas5+784-111
2025-01-01 17:06ci: update depsWilliam Casarin1+2-0
2024-12-31 18:00api: add note json endpointWilliam Casarin2+92-2
2024-12-31 17:59json: add serde_jsonWilliam Casarin3+10-0
2024-12-31 17:59don't create transaction if we don't need toWilliam Casarin1+2-1
2024-12-31 17:58render: don't wait longer than we need toWilliam Casarin1+8-0
2024-12-31 15:30trust: don't skip validationWilliam Casarin2+1-3
2024-12-31 15:29log: switch to tracingWilliam Casarin5+12-64
2024-12-30 17:47expand timeoutWilliam Casarin1+1-1
2024-12-30 17:36fix subscription exhaustionWilliam Casarin3+5-8
2024-12-17 05:17Switch to async nostrdbWilliam Casarin11+653-510
2024-12-16 18:32update depsWilliam Casarin3+1057-846
2024-02-16 22:28Update README.mdWilliam Casarin1+1-1
2024-01-24 19:37html: fix profile picturesWilliam Casarin1+4-1
2024-01-24 19:19html: new note style from danielWilliam Casarin2+67-10
2024-01-24 19:16update nostrdbWilliam Casarin1+1-1
2024-01-24 19:16update lockfileWilliam Casarin1+1-1
2024-01-02 17:13initial html note rendererWilliam Casarin4+207-110
2024-01-02 17:13bump nostrdbWilliam Casarin2+2-2
2024-01-02 18:02todoWilliam Casarin3+3-0
2024-01-01 17:42update nostrdbWilliam Casarin2+2-2
2024-01-01 17:06render mentions in previewsWilliam Casarin1+107-32
2024-01-01 17:05cleanup some warningsWilliam Casarin2+14-15
2024-01-01 17:05update nostrdbWilliam Casarin2+2-2
2023-12-31 06:10Initial note block rendererWilliam Casarin1+85-32
2023-12-31 06:10update to latest nostrdbWilliam Casarin2+39-4
2023-12-24 02:47relays: only give up looking when it makes senseWilliam Casarin1+12-2
2023-12-21 22:29smallerWilliam Casarin1+1-1
2023-12-21 22:28better imageWilliam Casarin1+1-1
2023-12-21 20:51make sure the frame doesn't get smallerWilliam Casarin1+3-1
2023-12-21 20:49add working noteWilliam Casarin1+1-1
2023-12-21 20:40just use the purple link directlyWilliam Casarin1+1-1
2023-12-21 20:11unjustifyWilliam Casarin1+2-4
2023-12-21 19:16deps: fix nostr-sdk changesWilliam Casarin3+6-4
2023-12-21 19:16deps: bump nostr-sdk to latestWilliam Casarin2+14-9
2023-12-21 19:09remove negative kerningWilliam Casarin1+1-1
2023-12-21 18:59escape html in opengraph propertiesWilliam Casarin1+5-3
2023-12-21 18:59update lockfileWilliam Casarin1+16-0
2023-12-21 18:58add html_escapeWilliam Casarin1+1-0
2023-12-21 18:33tweak kerningWilliam Casarin1+2-2
2023-12-21 18:25trim titleWilliam Casarin1+3-3
2023-12-21 18:13new background, drop shadow, larger textWilliam Casarin4+104-19
2023-12-21 02:42get it working on twitterWilliam Casarin2+13-17
2023-12-20 23:39bump abbrev, fix a warningWilliam Casarin1+2-2
2023-12-21 00:19fix startupWilliam Casarin2+1-1
2023-12-20 23:37initial html page for notesWilliam Casarin2+141-16
2023-12-20 20:30add fontWilliam Casarin2+0-1
2023-12-20 20:29badge: link to actionsWilliam Casarin1+1-1
2023-12-20 20:28update gitignoreWilliam Casarin1+1-0
2023-12-20 20:07fix skia depWilliam Casarin1+2-2
2023-12-20 20:07update lockfileWilliam Casarin1+1-0
2023-12-20 20:03add missing fileWilliam Casarin1+84-0
2023-12-20 20:03cleanup some stuffWilliam Casarin4+9-65
2023-12-20 18:59ui: consistent quote text positioningWilliam Casarin1+89-27
2023-12-20 16:36refactor data completion, add initial design from karnageWilliam Casarin6+639-92
2023-12-20 16:35add default profile picWilliam Casarin1+0-0
2023-12-20 16:35add tags to gitignoreWilliam Casarin1+1-0
2023-12-20 16:35update depsWilliam Casarin1+12-6
2023-12-20 16:35update lockfileWilliam Casarin1+84-18
2023-12-19 01:27update lockfileWilliam Casarin1+210-31
2023-12-19 01:23assets: add default pfpWilliam Casarin1+0-0
2023-12-18 21:19deps: fix egui_skiaWilliam Casarin1+1-2
2023-12-18 16:52move around some things, add code for pfpsWilliam Casarin4+192-87
2023-12-18 16:51update gitignore and project fileWilliam Casarin2+3-0
2023-12-18 16:51update lockfileWilliam Casarin1+220-0
2023-12-18 16:15rename Context to NotecrumbsWilliam Casarin1+17-17
2023-12-18 16:06remove unused fileWilliam Casarin1+0-1
2023-12-18 15:57ui: move note ui to its own functionWilliam Casarin1+19-20
2023-12-17 22:38initial profile fetching supportWilliam Casarin2+54-30
2023-12-17 22:38update lockfileWilliam Casarin1+13-2
2023-12-17 21:02fetch notes from relays if we don't have themWilliam Casarin3+99-29
2023-12-17 21:26nip19: add a few utils for getting filters and relaysWilliam Casarin1+32-0
2023-12-17 21:24fonts: move font logic elsewhere for nowWilliam Casarin2+23-21
2023-12-17 21:23error: add a few more error typesWilliam Casarin1+21-0
2023-12-17 21:23error: simplify StdError derivationWilliam Casarin1+1-12
2023-12-17 21:00update Cargo.lockWilliam Casarin1+23-26
2023-12-17 06:41add licenseWilliam Casarin1+674-0
2023-12-17 06:29readme: badgeWilliam Casarin1+2-0
2023-12-17 06:28Create rust.ymlWilliam Casarin1+22-0
2023-12-17 06:27readme: wipWilliam Casarin1+13-1
2023-12-17 06:25image exampleWilliam Casarin1+4-2
2023-12-17 06:20readme: updateWilliam Casarin1+1-1
2023-12-17 06:19add lockfileWilliam Casarin1+2430-0
2023-12-17 01:48notecrumbs: initial commitWilliam Casarin9+278-0