Commit graph

10 commits

Author SHA1 Message Date
1d564b738d Fix install script: strip v prefix from version for archive name 2026-04-01 21:06:40 -04:00
18b4ce1a40 Add install script, CI workflows, and release pipeline
- Install script: curl-pipe-sh installer that downloads the right
  binary for the user's OS/arch from GitHub Releases
- CI workflow: runs go vet + go test for both Go modules and builds
  the web app on push/PR
- Release workflow: goreleaser builds cross-platform binaries
  (linux/darwin, amd64/arm64) on version tags
- Node-agent defaults BETTERNAS_CONTROL_PLANE_URL to
  https://api.betternas.com so users only need username/password
2026-04-01 20:37:40 -04:00
Hari
1bbfb6647d
user-owned DAVs (#14) 2026-04-01 20:26:44 -04:00
a6c74c2a39 Allow OPTIONS to bypass WebDAV auth for Finder discovery
macOS Finder sends an unauthenticated OPTIONS request before attempting
auth. It needs to see the DAV: 1, 2 compliance header in the response
to know the server supports WebDAV. Without it, Finder shows "problem
connecting to the server" and never prompts for credentials.

OPTIONS is a safe discovery method that exposes no data, so it can be
served without auth.
2026-04-01 16:57:55 -04:00
Hari
18b6ac625f
Fix macOS Finder WebDAV mount by handling GET on directories (#12)
Go's webdav.Handler returns 405 Method Not Allowed for GET on
collections (directories). macOS Finder sends GET to the WebDAV root
as part of its mount flow and refuses to connect when it gets 405.

Add a finderCompatible wrapper that intercepts GET/HEAD on directories
and returns a minimal 200 response, while passing all standard WebDAV
methods through to the underlying handler unchanged.
2026-04-01 16:42:34 -04:00
b5f8ea9c52 Make control-plane the real mount authority
Split node enrollment from export sync and issue Finder-compatible DAV
credentials so the stack proves the real backend seam before any web UI
consumes it.
2026-04-01 17:46:50 +00:00
ed40da7326 Secure first-loop control-plane auth and mount routing.
Protect the control-plane API with explicit bearer auth, add node-scoped
registration/heartbeat credentials, and make export mount paths an explicit
contract field so mount profiles stay correct across runtimes.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-01 14:13:14 +00:00
Hari
e75b3f98a6
setup agent runtime requirements (#7) 2026-04-01 00:37:15 -04:00
Hari
e2f03f47af
pnpm, verify, cleanup (#6) 2026-03-31 23:59:52 -04:00
Hari
b68151035a
init (#5) 2026-03-31 23:50:51 -04:00