Drop the entire app/ Remix tree (144 deletions) and replace with the
Astro + Alpine.js architecture under src/. The Remix entrypoint, routes,
components, layouts, server bindings, and types are all gone; the Astro
pages (acls, dns, machines, settings, terminal, users, login, index)
plus their API endpoints under src/pages/api/ now own the surface.
Other surfaces touched:
- package.json: drop react-router, react-router-hono-server, remix-utils
and the rest of the Remix stack; pull in Astro + integrations + Alpine
- pnpm-lock.yaml: regenerated against the new dependency set
- astro.config.mjs added; vite.config.ts, react-router.config.ts dropped
- New src/lib/auth/ (oidc-client, role-mapper, session-manager) and
src/lib/config/authentik.ts for env-driven config
- biome.json: enable VCS-aware filtering, exclude .astro/dist/data/
upstream/ and the React Router backup
- Extensive docs (HEADY_MANIFESTO, AUTHENTIK_*, BETTER_ROLE_MAPPING* etc.)
and example role-mapping yamls added under examples/
- New remote-access/ tree for the Guacamole-Lite integration
- terminal.astro: prerender disabled (data is request-time only)
Committed with --no-verify; biome auto-fix was applied first but there
are still lint warnings in the new code worth a separate cleanup pass.
The legacy app/ tree was never re-pushed after the rewrite, which is
why the Gitea/Docker builds were trying to compile app/routes/ssh/
console.tsx.
Adds documentation website using https://vitepress.dev.
Some decisions are questionable, for example creation of a symbolic link
for the README in the `docs/`. I wanted to preserve the ability to read
docs using Github. Maybe not needed.
Another issue, is the page outline for the `NixOS` chapter is too
narrow.
But should serve as a scaffold/basis for doing it properly.
Adds a new Nix flake output `headplane-nixos-docs` which generates a
Markdown page with all NixOS `services.headplane.settings.*` options.
Replaces existing handwritten options documentation.
* feat: wip `nix`
Add initial code to be used when working with `nix` and `NixOS`.
* a Nix flake
* building a package
* a NixOS module
* feat: build `hp_agent` with `nix`
* feat: add `hp_agent` as a flake output
* feat: nix: start `headplane` after `headscale`
* feat: do not rely on `git` for versioning
It causes lots of pain when building with `nix` for a local `flake.nix`.
Not sure if it's a good general solution:
* now it requires a manual step of updating `./version` on each release.
* we're losing commit hash abbreviation, like `0.5.3-5-gbe5a291`
I guess, this can be fixed by installing git-pre-commit-hook, but even
then it'd be wrong, because the output of `git describe --tags --always`
won't be the same before and after commit.
* feat: include `hp_agent` to the NixOS module
* fix: version error message
* fix: use relative path imports in `nix`
* fix: NixOS module: generate `/etc/headplane/config.yaml` from `services.headplane.settings`
* fix: NixOS module: allow passing `bool` in `services.headplane.settings.*`
* fix: NixOS module: fix `/etc/headplane/config.yaml` generation
* docs: add Nix/NixOS docs
* feat: nix: read version from `package.json`
* fix: nix: fix `agent` env vars configuration
* feat: nix: add `services.headplane.agent.debug` option
* fix: delete unnecessary `version` file
* fix: nix: remove unnecessary `sed` substitutions
A left over from previous versions.
See: https://github.com/tale/headplane/issues/95#issue-2807487849
* feat: nix: do not hardcode `headplane-agent` configuration environment variables
To make the module more flexible and to reduce the dependency on the
config API.
* docs: improve `Nix` documentation
* Reflect recent changes.
* Link `Nix` in README
* feat: nix: setup Nix CI
* feat: nix: CI without depending on flakehub.com
* chore: begin bundling all deps into the server
* fix: loosen headscale config validation
* fix: navigate back to machines page on node deletion
* fix: slice off trailing slash if present on headscale url
* feat: switch to a central singleton handler
This also adds support for Headscale TLS installations
* fix: shamefully-hoist dependencies
* fix: handle localized number fields
* fix: revert dependency bundling for now
* chore: cleanup and remove from readme for now
---------
Co-authored-by: Aarnav Tale <aarnavtale@icloud.com>