Let Dev Updater supervise the backend instead of shipping a script
dev-updater now carries a built-in service implementation, generated from a template and driven through the identical interface a project-supplied script uses, so a project whose service is unremarkable no longer writes one. ai-app's was unremarkable: `ExecStart=$BINARY` and `command="$BINARY"` with no arguments and no environment. 233 lines of it, and the half that matters most -- the OpenRC branch, which neither project can exercise from a systemd machine -- existed twice, so a fix found by testing would have had two places to land and no way to notice the second. The field keeps its name; `Managed` takes the command, resolved against the component's `cwd`. The one thing the script said that the built-in cannot is kept, in AGENTS.md rather than lost: Stop on this card takes down the server a phone reaches through the tunnel, while Dev Updater itself is unaffected because it uses its own port -- which is exactly what makes that button easy to press and easy to regret. NOT SAFE TO PULL BLIND. A managed service is named after the component, so this one becomes `app-backend` while the installed one still has the name the script gave it. Uninstall from the backend card *before* taking this change, then Install after; pulling first orphans a service that stays enabled and starts at boot with nothing pointing at it.
This commit is contained in:
1 parent
2c925a679f
commit
c2dfaab349
3 files changed
+26
-240
No files matched your search
@@ -48,10 +48,21 @@ repo is in PLAN.md's "Backend layout" section.
|
||||
event model mirror; `ServerConfig.kt` settings + Keystore-sealed token;
|
||||
screens in `SessionListScreen/SessionScreen/SpawnScreen/SettingsScreen`.
|
||||
- `.dev-updater.ron` — what Dev Updater is asked to do with this checkout:
|
||||
the backend (built in `server/`, installed and controlled through
|
||||
`server/service`) and then the APK (built in `app/`), in that order. The
|
||||
project it serves is the repository, not either half of it, which is why
|
||||
this sits at the root rather than in `app/`.
|
||||
the backend (built in `server/`, run as `service: Managed(...)`) and then
|
||||
the APK (built in `app/`), in that order. The project it serves is the
|
||||
repository, not either half of it, which is why this sits at the root
|
||||
rather than in `app/`.
|
||||
`Managed` means Dev Updater supervises `ai-server` with its own built-in
|
||||
service implementation rather than a script kept here. ai-app had such a
|
||||
script until 2026-08-28 and it was the generic case exactly — no
|
||||
arguments, no environment — so the two projects were maintaining one
|
||||
behaviour twice, including the OpenRC branch neither can test from a
|
||||
systemd machine.
|
||||
Worth knowing before pressing it: **Stop** on the backend card stops the
|
||||
server that a phone reaches through the tunnel, so on that phone it stays
|
||||
down until someone starts it again from Dev Updater. Dev Updater reaches
|
||||
it over its own port and is unaffected, which is what makes the button
|
||||
safe to press and easy to regret.
|
||||
- `wg-app-link/` — a **git submodule**, and the half of this backend that
|
||||
dev-updater also needed: the pinned CA and leaf (`certs`), QR enrollment
|
||||
and the bearer token (`enroll`), wg0 binding and the certificate's SANs
|
||||
|
||||
Reference in new issue
Block a user