Commit Graph

11 Commits

Author SHA1 Message Date
Mathias Beaulieu-Duncan
acae157519 Exclude macOS/Linux/x86_64 binaries from pub.dev to fit 100MB limit
Ship iOS + Android arm64 in the package (23MB compressed).
macOS, Linux, and Android x86_64 (emulator): build from source with ./build_go.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 08:10:42 -04:00
Mathias Beaulieu-Duncan
feb03b9041 Bump to 0.3.0 for pub.dev — Android + Linux support
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 08:08:37 -04:00
Mathias Beaulieu-Duncan
623407d16b Update README with full platform docs, API reference, and binary sizes
- Document all 4 platforms with status and architecture details
- Add API reference table
- Add platform setup sections (iOS, macOS, Android, Linux)
- Document build commands for all platforms
- Add binary size table
- Note Android Tailscale tunnel limitation and path forward
- Add Linux test file

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 07:58:38 -04:00
Mathias Beaulieu-Duncan
f070bcdb86 Add Android and Linux platform support (local gRPC working, tsnet WIP)
- Android: Dart FFI → Go c-shared (.so) in jniLibs (arm64-v8a + x86_64)
- Linux: Dart FFI → Go c-shared (.so) via Docker cross-compilation (amd64)
- Dart API: TsnetFlutter uses MethodChannel on iOS/macOS, FFI on Android/Linux
- Add ffi package dependency for native function bindings
- Build script: ./build_go.sh [ios|macos|android|linux|apple|all]
- Android RegisterInterfaceGetter to bypass netlink CAP_NET_ADMIN restriction
- Make TailscaleStart() idempotent and add GODEBUG=netdns=go for Android

Known: Android tsnet tunnel blocked by Go stdlib net.Interfaces() netlink
call — local gRPC works, Tailscale fallback needs libtailscale integration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 07:49:11 -04:00
Mathias Beaulieu-Duncan
ae105a2bb0 Add macOS support, idempotent start(), bump to 0.2.0
- macOS plugin: Swift bridge + universal xcframework (arm64 + x86_64)
- macOS podspec with direct force_load (no script phase needed — single slice)
- Make TailscaleStart() idempotent — return success if already started
- Document macOS entitlements (network.client + network.server)
- Build script: ./build_go.sh [ios|macos|all]

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 07:11:01 -04:00
Mathias Beaulieu-Duncan
5c9f318f5a Fix xcframework linking for pub.dev installs, bump to 0.1.1
Use DERIVED_FILE_DIR instead of symlinks for force_load path.
Symlinks in PODS_TARGET_SRCROOT fail when installed from pub cache
because Xcode validates build inputs before script phases run.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:53:58 -04:00
Mathias Beaulieu-Duncan
cefcd23cd2 Update CI pipeline to use refresh token for pub.dev auth
Uses PUB_DEV_REFRESH_TOKEN secret to authenticate with pub.dev.
The refresh token is long-lived and auto-renews the access token.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:28:12 -04:00
Mathias Beaulieu-Duncan
0f42ada793 Prepare for pub.dev publishing with Gitea release pipeline
- Add README.md and CHANGELOG.md (required by pub.dev)
- Add .pubignore / ios/.pubignore to include xcframework in published package
- Add Gitea Actions workflow: builds xcframework and publishes on release
- Release tag must match pubspec version with no v prefix (e.g. "0.1.0")
- Requires PUB_TOKEN secret in Gitea repo settings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:13:35 -04:00
Mathias Beaulieu-Duncan
63f0315ee7 Rename package to tsnet_flutter for pub.dev publishing under Svrnty
- Rename Dart package: tailscale_kit → tsnet_flutter
- Rename Swift plugin class: TailscaleKitPlugin → TsnetFlutterPlugin
- Rename podspec: tailscale_kit → tsnet_flutter
- Update MethodChannel name to tsnet_flutter
- Add BSD-3-Clause LICENSE (compatible with Tailscale's license)
- Update metadata for pub.dev: homepage, repository, author

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:10:34 -04:00
Mathias Beaulieu-Duncan
ecc289cb38 Ignore _current_slice symlink used for platform-specific builds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 06:04:28 -04:00
Mathias Beaulieu-Duncan
2dbadcd8ed Initial commit: embedded Tailscale tsnet Flutter plugin for remote heater access
Go layer (c-archive) provides a localhost TCP proxy through a WireGuard tunnel.
Flutter connects gRPC to localhost:PORT, Go forwards via tsnet to heater's Tailscale IP.
No VPN entitlement needed — uses userspace netstack.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:13:55 -04:00