Flutter desktop client + userspace boringtun mesh#7
Merged
Conversation
Consolidate the client and server dataplane onto the userspace boringtun Noise + smoltcp netstack (no TUN device); route the private API over the mesh socket; fix the joined-endpoint ACL and mesh peers/status auth. Rename WireGuard -> boringtun across namespaces, directories, and types (keeping the wg_pubkey wire contract). Adds the Amazon Linux 2023 server build target.
Port the desktop client to Flutter/Dart: FFI bindings to the C SDK, Riverpod state, login (passkey + region-aware DNS discovery), dashboard, P2P mesh card, trust/health/servers/relays/certificates views, lemon theme, settings/session persistence, and macOS/Windows platform integration.
Superseded by the Flutter desktop client; all screens have Flutter equivalents.
Build the self-contained SDK shared library (bundled OpenSSL, no system deps) and the Flutter macOS/Windows clients with analyze + tests; release-pipeline wiring.
Update architecture/security/SDK/ports docs to the userspace boringtun mesh, add Flutter desktop build instructions, and include the mesh-transport worklog.
- LemonadeNexusClient.cpp: guard the POSIX net includes (arpa/inet.h, netdb.h) behind _WIN32 and use winsock2/ws2tcpip on Windows, so resolve_ipv4() compiles under MSVC. (The dataplane sockets were already winsock-guarded; this was the only unguarded POSIX include in the SDK build.) - flutter-clients.yml: the export-count floor was 69, but the public C API is now ~64 ln_* functions after Phase 1 dropped the tunnel/pump exports -> lower to a 60 sanity floor. Reframe the step as 'self-contained': keep the no-Homebrew / no /usr/local linkage guarantee, drop the stale Swift-era naming.
…utter in CI - Add flutter_lints dev dep + restore the analysis_options include (it was dead - flutter_lints was never installed); exclude generated *.g.dart from lint. - Fix all 66 analyzer WARNINGS: add AppNotifier.currentState accessor (drop protected .state access from services/views), remove unused imports/fields/locals/elements/params, unreachable switch default. - dart fix --apply: 82 automated fixes (const constructors, dangling library doc comments, win32 deprecated_member_use migration, etc.). - Hand-fix the residual 5: escape angle brackets in a doc comment + 4 use_build_context_synchronously (guard with context.mounted across async gaps). - Pin Flutter to 3.44.4 in both CI jobs (stop the stable-channel drift that flapped analyze). - Result: flutter analyze 'No issues found!'; flutter test passes (FFI smoke loads the SDK).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports the desktop client to Flutter/Dart and migrates the mesh dataplane to a fully userspace boringtun (Noise + smoltcp netstack) transport — no TUN device, no kernel WireGuard. Replaces the macOS Swift app.
History was curated into 5 logical commits; the final tree is byte-identical to the original
client-port-flutterworking branch (the experimental / add-then-undo history was dropped).Commits
BoringtunMesh, private-API egress over the mesh socket, joined-endpoint ACL + mesh peers/status auth fixes, and the WireGuard→boringtun rename. Thewg_pubkeywire key is kept intentionally (it's inside the Ed25519-signed canonical node form + gossip + client/server API — and a deliberate breadcrumb). Adds the Amazon Linux 2023 build target.Verification
flutter analyzereports 0 errors.GET /api/mesh/peers → 200.Suggested merge
Rebase and merge — lands the 5 logical commits on
mainlinearly.