Commit Graph
20 Commits
Author SHA1 Message Date
tlongwell-blockandDawn 3ca6918078 mesh-llm plan v6.1: Step 3 — embedded iroh-relay with NIP-98 admission
- New module crates/sprout-relay/src/iroh_relay.rs (~290 lines incl. tests).
- pub fn spawn(state, bind_addr) constructs an iroh_relay::server::Server
  with AccessConfig::Restricted set to a closure that:
    1. Pulls the Bearer token from ClientRequest::auth_token().
    2. base64-decodes (accepts STANDARD + URL_SAFE, padded or not).
    3. Calls sprout_auth::verify_nip98_event against canonical URL
       (= sprout_auth::nip98_canonical_url(public_url, '/relay')).
    4. Runs check_relay_membership against the NIP-98 pubkey.
       Anything other than Member/ViaOwner/OpenRelay -> Deny.
  Per Max's review notes: fail-closed on missing/invalid token, run
  membership only after NIP-98 verifies the pubkey, no caching.
- Returns Ok(None) gracefully when SPROUT_IROH_RELAY_PUBLIC_URL is unset
  (the canonical URL can't be built without it).
- patched-iroh-relay feature flag reserved for upstream PR C's per-client
  max-lifetime hook (kept behind cfg so unpatched rc.0 still compiles).

- MSRV bumped from 1.88.0 -> 1.91.0 (iroh-relay rc.0's MSRV). Repo's
  rust-toolchain.toml already pins 1.95.0 so builds are unaffected; the
  bump just keeps Cargo.toml honest with the actual transitive floor.
- README updated: 'Rust 1.88+' -> 'Rust 1.91+'.
- crates/sprout-relay/Cargo.toml: added
  iroh-relay = { version = "=1.0.0-rc.0", features = ["server"] }
  plus the patched-iroh-relay feature.

Tests (rustc 1.95, via rust-toolchain.toml; also verified independently
on 1.91.1):
- sprout-relay --lib: 195 -> 206 (+11 iroh_relay tests covering valid
  admission, missing/empty/non-base64/wrong-method/wrong-URL/wrong-kind/
  stale-timestamp denials, and bearer-encoding round-trips).
- cargo clippy --workspace --all-targets -- -D warnings: clean.
- cargo fmt --all -- --check: clean.

Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com>
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co>
2026-05-19 15:39:35 -04:00
tlongwell-blockandGitHub edcef511eb docs(readme): refresh as a landing page (#596)
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com>
2026-05-16 20:04:37 -04:00
Bradley AxenandGitHub c6da3a72ab Add countdown bot reference example (#516) 2026-05-08 15:39:40 -07:00
0dcfa86f84 chore: remove dead API token references from GUI, docs, and config (#498)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-07 19:07:44 +00:00
WesandGitHub e0fdeb2ff5 [codex] clean up root docs and assets (#445) 2026-05-01 15:58:06 +00:00
WesandGitHub 6d4e88b87d docs: surface README quick start (#443) 2026-04-30 20:25:32 -07:00
c83cec3ce0 Update README logo to match app icon (#424)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 15:45:45 +00:00
tlongwell-blockandGitHub 116cc1f984 docs: comprehensive README accuracy pass — verified against every line of code (#233) 2026-04-05 10:01:47 -04:00
WesandGitHub e87ba0f458 docs: mention just build in quick start (#191) 2026-03-26 12:19:26 -07:00
243d8734f2 Improve README and dev setup (#189)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 10:35:28 -07:00
tlongwell-blockandGitHub aec02ae8fb feat(workflow): replace HTTP loopback with ActionSink trait for SendMessage (#61) 2026-03-13 22:31:04 -04:00
tlongwell-blockandGitHub 975b7be4a8 feat(proxy): NIP-28 translation proxy for third-party Nostr clients (#43) 2026-03-12 22:16:00 -04:00
tlongwell-blockandGitHub 80356e8cb5 docs: update all documentation to reflect current codebase (#40) 2026-03-12 14:21:25 -04:00
tlongwell-blockandGitHub cd3b45f948 Initial backend revisions, workflow expansion (#5) 2026-03-10 10:46:06 -04:00
WesandGitHub 6e51cc0b12 Add desktop Playwright e2e harness (#11) 2026-03-09 19:16:43 -07:00
WesandGitHub 70ccc6ea59 docs(readme): clarify desktop setup (#4) 2026-03-09 13:22:17 -07:00
WesandGitHub 629c99fd2f feat: add desktop app (#3) 2026-03-09 13:02:11 -07:00
tlongwell-blockandGitHub 058c4b92a9 Initial release — Sprout Nostr relay with enterprise extensions (#2) 2026-03-09 15:15:25 -04:00
block-open-source[bot] f158b72586 prepare repo template 2026-03-06 21:01:02 +00:00
block-open-source[bot]andGitHub 916f096fe9 Initial commit 2026-03-06 21:00:58 +00:00