Commit Graph

924 Commits

Author SHA1 Message Date
Aarnav Tale b1361e9062 feat: upgrade to node 24 and drizzle 2026-03-17 13:22:48 -04:00
Aarnav Tale dd0587dad1 chore: update build process 2026-03-17 12:23:39 -04:00
Aarnav Tale 4997687a58 Merge pull request #500 from dotWee/feat/devcontainer
[dev/tooling]: add basic devcontainer setup w/ node, pnpm, go, nix & recommended tools
2026-03-17 11:58:50 -04:00
Aarnav Tale 8f6fe05c83 fix: actually fix type errors 2026-03-16 23:41:09 -04:00
Aarnav Tale 25dc09e025 perf: switch to SSE dispatched changes
Previously we would use naive revalidators which would invalidate EVERY
SINGLE action loader every 3 seconds, resulting in several fetches. It
would also bubble fetches across the layout actions into the individual
pages.

This new approach selectively has live stores of resources which then
poll for changes on the server side and then dispatches updates to the
client via a new /events/live SSE endpoint.
2026-03-16 23:32:06 -04:00
Aarnav Tale 27f8fa0b42 feat: swap button and decompose dialog components 2026-03-16 23:32:05 -04:00
Aarnav Tale eda5713700 Merge pull request #497 from mrangger/main 2026-03-15 21:49:11 -04:00
Aarnav Tale dc2e2dcc98 Merge pull request #498 from tale/update_flake_lock_action 2026-03-15 21:47:31 -04:00
Lukas Wolfsteiner f0df663c90 [dev/tooling]: add basic devcontainer setup w/ node, pnpm, go, nix & recommended tools
Add a development container for contributors and document how to use it.

- Add .devcontainer/devcontainer.json
- Add .devcontainer/Dockerfile
- Update docs/CONTRIBUTING.md with Dev Container section

- devcontainer.json parses successfully and opens in vscode without issues
- all build.sh variants, recommended tools & lint/typecheck run without issues

Closes #499
2026-03-15 18:55:18 +00:00
github-actions[bot] 1025a657b0 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/917fec9' (2026-03-05)
  → 'github:nixos/nixpkgs/e802360' (2026-03-14)
2026-03-15 08:38:59 +00:00
Mathias Rangger 0741567754 fix: validate required Docker API version 2026-03-15 02:08:07 +01:00
Aarnav Tale a26faab139 feat: add ownership transfer support 2026-03-14 15:17:45 -04:00
Aarnav Tale 55ddbe0987 fix: handle user deletion 2026-03-14 14:59:34 -04:00
Aarnav Tale e255407115 feat: redo user page to match account linking 2026-03-14 14:56:04 -04:00
Aarnav Tale 225a52ded6 feat: correctly use error boundaries per-page 2026-03-14 13:52:08 -04:00
Aarnav Tale 38cf93e5ae feat: replace onboarding for explicit user linking 2026-03-14 13:23:22 -04:00
Aarnav Tale b7a85684a9 fix: tweak card styling to have better contrast 2026-03-14 13:22:23 -04:00
Aarnav Tale e1808bee1e fix: use currentColor on the svgs 2026-03-14 13:22:09 -04:00
Aarnav Tale cf4c163c92 chore: update agents file 2026-03-14 11:50:19 -04:00
Aarnav Tale 6470f5a821 feat: refactor several components and clean up ui 2026-03-09 22:09:58 -04:00
Aarnav Tale a53fd31d27 chore: combine link usage 2026-03-09 13:56:03 -04:00
Aarnav Tale 37d0080cba feat: cleanup button + add correct focus rings 2026-03-09 00:17:39 -04:00
Aarnav Tale 0ce411e92b feat: switch to mist color from tailwind 2026-03-08 23:48:03 -04:00
Aarnav Tale df5e04f239 Merge pull request #491 from tale/update_flake_lock_action 2026-03-08 18:38:37 -04:00
Aarnav Tale e6d90c3124 Merge pull request #489 from tale/auth-rework 2026-03-08 18:38:25 -04:00
Aarnav Tale a967731461 feat: add a temp no access page 2026-03-08 17:34:58 -04:00
Aarnav Tale a1efe36ff1 fix: rename pending approval to no access
Member role simply has no UI permissions — not a pending state.

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019cce57-c9e1-7732-9709-8288127573a9
2026-03-08 17:34:58 -04:00
Aarnav Tale 270b99f063 fix: show linked user in onboarding + pending approval screen
- Onboarding now shows which Headscale user was auto-linked
- Members (no ui_access) see a 'Pending Approval' page instead of
  being silently logged out — their session stays valid
- Sign out button on the pending page so users can switch accounts

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019cce57-c9e1-7732-9709-8288127573a9
2026-03-08 17:34:58 -04:00
Aarnav Tale 434f886034 feat: admin UI for Headscale user linking + skip onboarding
- Add 'Link Headscale user' option in user menu (admin-only, OIDC users)
- Dialog shows only unclaimed Headscale users
- New link_user action in user-actions with claim validation
- Onboarding now allows skipping the link step with clear messaging
- Users who skip are told they can ask an admin to link later

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019cce57-c9e1-7732-9709-8288127573a9
2026-03-08 17:34:57 -04:00
Aarnav Tale 684a95b5e8 fix: harden user linking and session pruning
Security:
- Add unique constraint on headscale_user_id to prevent hijacking
- linkHeadscaleUser now rejects already-claimed Headscale users
- Onboarding dropdown filters out claimed users
- onboarding-skip action redirects on rejected claims

Maintenance:
- Replace probabilistic session pruning with setInterval (15m)
- Move pruning out of request path into server startup

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019cce57-c9e1-7732-9709-8288127573a9
2026-03-08 17:34:55 -04:00
Aarnav Tale 45984ec639 chore: remove deprecated oidc.user_storage_file option
The flat-file user store has been deprecated for several versions.
All user data now lives in the SQL database. Removes the config field,
nix option, docs, and migration logic.

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019cce57-c9e1-7732-9709-8288127573a9
2026-03-08 17:34:49 -04:00
github-actions[bot] c7f3b60b62 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c0f3d81' (2026-02-27)
  → 'github:nixos/nixpkgs/917fec9' (2026-03-05)
2026-03-08 08:33:58 +00:00
Aarnav Tale 0f8e192b5c feat: initial auth rework 2026-03-07 17:10:34 -05:00
Aarnav Tale 6d70497758 revert: remove this useless contribution 2026-03-07 15:15:05 -05:00
Aarnav Tale f4a2811afb chore: general cleanup/pr improvements 2026-03-07 15:12:50 -05:00
Aarnav Tale 5f2cbebbcd chore: condense/cleanup bad tests 2026-03-07 15:11:15 -05:00
Aarnav Tale da3132323c Merge pull request #480 from drifterza/fix/issue-266-owner-assignment 2026-03-07 14:52:02 -05:00
Aarnav Tale cb97b73abd Merge pull request #477 from drifterza/fix/issue-427-hostinfo-update-frequency 2026-03-07 14:51:15 -05:00
Aarnav Tale 432cd29cd0 Merge pull request #478 from drifterza/fix/issue-453-self-service-preauth-keys 2026-03-07 14:50:12 -05:00
Aarnav Tale 1feb109a36 Merge pull request #475 from drifterza/fix/issue-474-api-key-bad-request 2026-03-07 14:48:32 -05:00
Aarnav Tale f6613f1faf Merge pull request #484 from tale/update_flake_lock_action 2026-03-07 14:47:36 -05:00
Aarnav Tale 210d473bc2 Fix link to Headplane configuration file in docker.md 2026-03-07 14:47:21 -05:00
Martijn 67b1611d13 Fix link to Headplane configuration file in docker.md
Updated the link to the completed configuration file for Headplane in the Docker installation documentation.
2026-03-02 21:02:27 +01:00
Aarnav Tale df11aefd0c chore: update github actions/issues workflows 2026-03-01 13:45:36 -05:00
github-actions[bot] f9dc9d454b flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d1c15b7' (2026-02-16)
  → 'github:nixos/nixpkgs/c0f3d81' (2026-02-27)
2026-03-01 08:33:20 +00:00
drifterza 64edd2041b fix first user owner assignment on OIDC login 2026-02-27 13:56:15 +02:00
drifterza 1462016a39 Add self-service pre-auth keys for auditor role
Closes #453
2026-02-27 12:21:16 +02:00
drifterza 779103147d add refresh interval tests 2026-02-27 11:30:19 +02:00
drifterza be79413178 fix: refresh agent HostInfo periodically using cache_ttl (#427)
Previously REFRESH was only sent once at startup, causing version info
to stay stale. Now the agent refreshes peer data at the cache_ttl
interval (default 3 minutes).
2026-02-27 11:26:06 +02:00
drifterza 787f8decbc fix: return login errors to form instead of throwing (#474)
Throwing data() in React Router v7 actions goes to ErrorBoundary instead
of returning to the component. Changed validation errors to return
directly so the login form can display them properly.
2026-02-27 10:55:42 +02:00