Aarnav Tale
ee59a2d06d
feat: switch agent to a periodic dump rather than long running process
2026-03-27 13:32:59 -04:00
Aarnav Tale
2c57187628
feat: switch to a generalized api key config
2026-03-27 13:32:59 -04:00
Aarnav Tale
131c54f501
fix: correctly re-enqueue event stream controller when closed
2026-03-26 12:58:35 -04:00
Aarnav Tale
333220a153
feat: ditch react-aria
2026-03-26 12:58:24 -04:00
Aarnav Tale
61ca6693c4
fix: keep footer below dialogs
2026-03-26 12:57:45 -04:00
Aarnav Tale
30bbcbab2a
feat: separate code snippets and code blocks for copyable snippets
2026-03-26 12:57:30 -04:00
Aarnav Tale
98d8dfe235
fix: prefix hp_wasm paths correctly
...
Co-authored-by: palchrb <Breyholtz@gmail.com >
2026-03-26 12:54:29 -04:00
Aarnav Tale
54f236a332
feat: update some components
2026-03-26 12:54:29 -04:00
Lloyd Owen
2e2d5d1dff
Update oidc-callback.ts
2026-03-24 11:48:20 +00:00
Aarnav Tale
718cbf3c40
feat: switch to a new form hook
2026-03-19 12:35:25 -04:00
Aarnav Tale
7403ebea06
feat: switch form fields to base-ui
2026-03-19 12:35:25 -04:00
Aarnav Tale
941971b8c7
feat: replace button and toast provider with base-ui
2026-03-19 12:35:24 -04:00
Aarnav Tale
5f81822366
feat: correct package.json dependencies and remove libsql
2026-03-17 13:31:35 -04:00
Aarnav Tale
b1361e9062
feat: upgrade to node 24 and drizzle
2026-03-17 13:22:48 -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
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
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
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
Aarnav Tale
0f8e192b5c
feat: initial auth rework
2026-03-07 17:10:34 -05:00
Aarnav Tale
f4a2811afb
chore: general cleanup/pr improvements
2026-03-07 15:12:50 -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
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
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
Aarnav Tale
3c5a653942
Merge pull request #469 from drifterza/feature/oidc-pending-approval
2026-02-26 18:03:26 -05:00
drifterza
2e5bb791e8
use LiveDataProvider auto-refresh for pending approval page
...
Replaces manual refresh button with automatic 3-second polling.
Adds unit tests for the live data hook behavior.
2026-02-27 00:55:55 +02:00
Aarnav Tale
ab3c4f7819
fix: serve favicon through the prefix
2026-02-26 01:23:02 -05:00
drifterza
624b9ab479
list all preauth keys without user filter
...
headscale 0.28 added GET /v1/preauthkey without a user param
which returns all keys including tag-only ones. this change
adds getAllPreAuthKeys() and uses it when available, falling
back to per-user fetching on older versions.
the UI now handles keys where user is null, showing them as
Tag Only in the filter dropdown.
closes #432
Amp-Thread-ID: https://ampcode.com/threads/T-019c9861-2d45-73ef-ab94-5fce62f63670
Co-authored-by: Amp <amp@ampcode.com >
2026-02-26 00:40:31 -05:00
Aarnav Tale
dde72ae4ed
Merge pull request #465 from drifterza/feature/preauth-key-tags
2026-02-26 00:04:02 -05:00
Aarnav Tale
2fdbf4abea
Merge pull request #467 from drifterza/feature/tag-node-operations
2026-02-25 20:34:49 -05:00