Commit Graph
31 Commits
Author SHA1 Message Date
Michael Neale 2d53bc2ecc Pin mesh SDK example to direct shutdown commit 2026-05-29 14:22:44 +10:00
Michael Neale 5b9f018d84 showing how to use nascent sdk approach 2026-05-29 13:49:15 +10:00
tlongwell-blockandDawn 1dbc89cc11 mesh-llm: offer envelope (sprout-core) + desktop building blocks
B0 — sprout-core/src/mesh_llm.rs (new): MeshLlmOffer envelope, the
content of a kind:31990 event. Schema versioned (v: u32), with
deny_unknown_fields at the top level and a freeform 'extra' Value
escape hatch. ResourceCaps + ModelOffer sub-structs. d_tag charset is
limited to [A-Za-z0-9_-] (NIP-33 stability). 9 unit tests covering
round-trip JSON, optional caps, unknown-field rejection, d_tag
validation, is_publishable rule set.

B2 — desktop/src-tauri/src/mesh_llm/endpoint.rs: persists the iroh
endpoint keypair to {app_data_dir}/mesh_iroh.key as 32 hex bytes.
Atomic write via tempfile.persist; corrupt files quarantined to
.bad.{epoch} (same pattern as identity.key). 2 unit tests.

  Design note in the module doc: we deliberately do NOT derive the
  iroh key from the Nostr key, because that would couple key rotation
  (rotating the Nostr key would silently break active offers) and
  invent a new key-custody convention. Separate file, same Tauri
  sandbox.

B3 — desktop/src-tauri/src/mesh_llm/nip98.rs: build_nip98_bearer(keys,
iroh_relay_public_url) signs a kind:27235 event with the user's Nostr
key over the canonical relay URL (sprout_auth::nip98_canonical_url
with path '/relay'), base64-encodes the event JSON. This is the exact
token the relay's iroh_relay::verify_bearer decodes + verifies.
3 unit tests.

B-offer prefs — desktop/src-tauri/src/mesh_llm/offer.rs: persisted
ComputeSharingPrefs (the avatar-menu sliders). Default is disabled,
1 concurrent consumer cap. build_offer() returns None when disabled
so callers know to *delete* any prior offer rather than re-publish.
JSON round-trip + helper tests, 4 tests.

Workspace deps added:
- desktop pulls sprout-auth (for the canonical URL helper, nostr-free
  at the API surface so the 0.36/0.37 nostr split doesn't matter).
- desktop pulls iroh-base = =1.0.0-rc.0 with the 'key' feature for
  SecretKey/PublicKey/EndpointId.
- desktop pulls thiserror = '2'.

Tests: 9 desktop mesh_llm tests pass + 9 sprout-core mesh_llm tests
pass. Workspace clippy + fmt clean (relay side; desktop has expected
dead_code warnings until B4-B6 wire these in).

Note: desktop crate requires sidecar binary stubs in
desktop/src-tauri/binaries/ to typecheck; created via the existing
'just _ensure-sidecar-stubs' helper.

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 16:55:45 -04:00
tlongwell-blockandGitHub 6e1418e571 feat(huddle): fix concurrent-speaker mixing + jitter buffer + protocol v2 (up to 10 peers) (#609)
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com>
2026-05-18 16:34:52 -04:00
c0eb5affcf refactor(huddle): switch local TTS to Pocket TTS (Kyutai/sherpa-onnx) (#607)
Signed-off-by: Tyler Longwell <tlongwell@squareup.com>
Signed-off-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co>
2026-05-18 14:28:27 -04:00
tlongwell-blockandGitHub d1097aa91f chore(desktop): upgrade Tauri to 2.11.x to fix blank window after sleep on macOS (#600)
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com>
2026-05-15 18:59:16 -04:00
4d0cd58d35 feat: pnpm workspace, deep links, and web repos page (#476)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 17:09:25 -07:00
tlongwell-blockandGitHub d1c84a621c feat(nip-oa): Owner Attestation — cryptographic proof of agent authorization (#406) 2026-04-28 09:29:15 -04:00
c1a33e3ff1 feat(desktop): restore Tauri auto-updater support (#393)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 11:55:35 -07:00
686db1294e feat(desktop): streaming video proxy + player UX improvements (#389)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 09:42:44 -07:00
e2c94a8538 feat(mobile): image upload + media viewer parity with desktop (#384)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 11:54:29 -07:00
cca1d51012 Remove release pipeline from public repo (#360)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 06:55:09 -07:00
fc67dac4c6 feat: NIP-AB device pairing — Phase 2 (desktop + mobile UI) (#343)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 15:25:18 -07:00
tlongwell-blockandGitHub b8d6a5cf8b feat: NIP-AB device pairing — Phase 1 (core library + CLI) (#333) 2026-04-16 14:56:36 -04:00
tlongwell-blockandGitHub 811c8f3f07 Replace LiveKit with WebSocket Opus audio relay (#326) 2026-04-15 15:02:27 -04:00
tlongwell-blockandGitHub dd6107d0d0 feat: Sprout Huddles — voice conversations with AI agents (#299) 2026-04-14 13:11:09 -04:00
tlongwell-blockandGitHub d07385fe02 feat: Markdown-based persona packs (crate + ACP + desktop) (#297) 2026-04-11 13:32:14 -04:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Wes
7a9218ba54 Update all non-major dependencies (#248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesb@block.xyz>
2026-04-08 11:55:11 -07:00
tlongwell-blockandGitHub 400937db17 feat(desktop): default agent CWD to user home directory, increase turn timeout (#180) 2026-03-25 15:28:44 -04:00
WesandGitHub 52bd65a759 Feat/app release setup (#164) 2026-03-24 13:33:45 -07:00
tlongwell-blockandGitHub 0951de8ee5 feat(desktop): persona import/export via PNG cards and ZIP packs (#137) 2026-03-20 15:27:55 -07:00
tlongwell-blockandGitHub db9e999ce2 feat: persist identity key to app data dir (#128) 2026-03-20 10:54:19 -04:00
WesandGitHub e5d17e827e Add local agent personas and bulk add flow (#119) 2026-03-19 15:46:42 -07:00
WesandGitHub ba1c8df5c6 Add desktop notifications and improve DM labeling (#107) 2026-03-18 13:27:15 -07:00
tlongwell-blockandGitHub 2b08ad80d0 feat: Blossom-compatible media upload (sprout-media crate + relay + desktop) (#66) 2026-03-15 15:17:10 -04:00
WesandGitHub 3c440a1328 Add desktop managed agents view (#58) 2026-03-13 13:13:42 -07:00
WesandGitHub 6c8ed78048 Add desktop API token management (#39) 2026-03-12 10:21:11 -07:00
WesandGitHub d94e3fbf77 Add desktop presence UI (#35) 2026-03-11 15:26:01 -07:00
WesandGitHub 998d83962b Update desktop icon and persist window state (#9) 2026-03-09 17:50:18 -07:00
WesandGitHub 0705327312 feat(desktop): connect chat to relay (#6) 2026-03-09 14:49:50 -07:00
WesandGitHub 629c99fd2f feat: add desktop app (#3) 2026-03-09 13:02:11 -07:00