Skip to content

feat: pnpm workspace, deep links, and web repos page#476

Merged
wesbillman merged 3 commits intomainfrom
mobile-web-more
May 5, 2026
Merged

feat: pnpm workspace, deep links, and web repos page#476
wesbillman merged 3 commits intomainfrom
mobile-web-more

Conversation

@wesbillman
Copy link
Copy Markdown
Collaborator

Summary

  • pnpm workspace: Consolidate desktop + web into a single workspace with shared biome config and one lockfile
  • Deep links: sprout://connect?relay=<url> support in desktop app — Rust-side URL validation, single-instance forwarding, and frontend workspace switching
  • Web repos page: NIP-34 git repo browser at /repos with NIP-42 AUTH (ephemeral keypair), NIP-33 dedup, responsive card grid, loading skeletons, and clone URL copy
  • CI: Added web CI job (check + build)
  • Tooling: Updated justfile for workspace-aware commands

Test plan

  • pnpm typecheck passes for both desktop and web
  • pnpm check (biome) passes for both desktop and web
  • pnpm build succeeds for both desktop and web
  • cargo check passes for desktop Tauri crate (deep link plugins)
  • cargo clippy passes workspace-wide
  • All Rust unit tests pass (201 tests)
  • Mobile tests pass
  • All lefthook pre-commit + pre-push hooks pass (11/11)
  • .gitignore verified: web/src/features/repos/ is NOT ignored, root repos/ still is
  • Manual: open sprout://connect?relay=ws://localhost:3000 and verify workspace switches
  • Manual: visit /repos on web app connected to a relay with published git repos

🤖 Generated with Claude Code

wesbillman and others added 3 commits May 4, 2026 14:38
Consolidate desktop and web into a pnpm workspace with shared biome
config. Add sprout:// deep link support to the desktop app with full
workspace switching. Add a repos page to the web app that queries
NIP-34 git repo announcements from the relay via NIP-01/NIP-42.

Workspace & tooling:
- Root pnpm-workspace.yaml with desktop + web packages
- Shared biome.json config; child configs extend root
- Single pnpm-lock.yaml at root (removed per-package lockfiles)
- CI job for web (check + build)
- Updated justfile for workspace-aware commands

Desktop deep links:
- tauri-plugin-deep-link + tauri-plugin-single-instance
- sprout://connect?relay=<url> scheme with ws/wss validation
- Frontend handler adds workspace and switches to it
- macOS warm-start + cold-start + duplicate-instance forwarding

Web repos page:
- NIP-01 WebSocket client with NIP-42 AUTH (ephemeral keypair)
- Queries kind:30617 repo announcement events
- NIP-33 deduplication by (pubkey, kind, d-tag)
- Responsive card grid with loading skeletons and empty state
- Clone URL display with copy-to-clipboard
- Deep link button to open repos in desktop app

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The pnpm workspace resolved @tauri-apps/api to 2.11.0 while the Rust
tauri crate is 2.10.3. Tauri's build enforces matching major.minor
versions. Pin @tauri-apps/api, @tauri-apps/cli, and
@tauri-apps/plugin-opener to ~2.10 / ~2.4 respectively so the
lockfile stays compatible with the Rust crate version.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The tilde range ~2.4 resolved to 2.4.0, which mismatches the Rust
tauri-plugin-opener crate at 2.5.3. Tauri build enforces matching
major.minor across JS/Rust plugin pairs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@wesbillman wesbillman merged commit 4d0cd58 into main May 5, 2026
14 checks passed
@wesbillman wesbillman deleted the mobile-web-more branch May 5, 2026 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant