22 Commits

Author SHA1 Message Date
hibna 55e0a3cde6 Make the API and web images build and run
CI / Docker Build (push) Has been skipped
CI / Lint & Type Check (push) Successful in 4m13s
CI / Daemon Build & Test (push) Successful in 6m24s
CI / Publish images (push) Failing after 12s
The image builds were never exercised: the docker job needs lint, and
lint was failing, so nothing downstream of it ever ran. Four defects
had accumulated behind that gate, each fatal on its own.

- pnpm creates no node_modules for a package without dependencies, and
  @source/shared has none. Three COPY lines named that path and failed.
- The production stage copied apps/api/dist, which tsc never wrote:
  tsconfig.base.json sets noEmit and no package overrides it. Rather
  than turn emit on — every @source/* package points main at its
  TypeScript source, and @source/proto derives daemon.proto's location
  from a /src/index.ts module URL — the stage now runs the sources
  through tsx, exactly as the migrate stage has always done.
- tsx lives in apps/api/node_modules/.bin under pnpm's isolated layout,
  so the command only resolves from the package directory.
- Both healthchecks probed localhost, which musl resolves to ::1 while
  the servers bind IPv4. Every probe was refused, so the containers sat
  unhealthy forever — and `docker compose up --wait`, which is how a
  panel installs this stack, waits for healthy.

Also fixed the postgres healthcheck in both compose files. pg_isready
without -h asks over the unix socket, which answers during the image's
init phase before the server listens on TCP; the migrate container then
started and died with ECONNREFUSED against a container Compose had just
called healthy.

Verified by running the full stack from docker-compose.panel.yml with
locally built images: migrations and seed complete, api, web, daemon,
postgres and redis all report healthy, and /api/health answers 200
through the web container's proxy.
2026-08-02 21:48:51 +03:00
hibna cb3a90be35 Build the daemon with Rust 1.97
Dependencies now ship edition 2024, which Cargo 1.83 refuses to parse:

  feature `edition2024` is required
  ... not stabilized in this version of Cargo (1.83.0)

The pin lived in two places and both had to move, or the daemon image
would have failed the same way the CI job did.
2026-08-02 21:48:33 +03:00
hibna c1adb94abb Format the repository with Prettier
CI has been running `prettier --check` against a tree that was never
formatted, so the check reported 63 files and failed every run. Nothing
here is a behaviour change: `pnpm lint` and the four typecheck builds
pass exactly as before.

conduit-bringup-artifacts is added to .prettierignore instead. Those
files are captured bring-up reports, not maintained sources; reflowing
them would only churn a record of what happened.
2026-08-02 21:08:12 +03:00
hibna d0d3a58907 Fix API lint errors blocking CI
CI / Lint & Type Check (push) Failing after 2m59s
CI / Daemon Build & Test (push) Failing after 13s
CI / Docker Build (push) Has been skipped
CI / Publish images (push) Has been skipped
eslint has been failing on 11 no-explicit-any errors, which kept the
whole pipeline red — including the new publish job that waits on lint.

The casts all worked around missing types rather than unknown shapes:

- jwt: @fastify/jwt decorates the instance at runtime, so the namespace
  is not in FastifyInstance's type. Described the parts we call and cast
  through unknown once, in one place, instead of `as any` at five sites.
- permissions: FastifyInstance.db is declared by the db plugin; the cast
  was stale and hid the real type.
- paginate: the querystring schema already validates page/perPage, so
  the call sites now name that shape via PaginationQuery.

Also dropped an unused import and an unused binding whose call is kept
for its validation side effect.

No behaviour change: eslint and tsc are both clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 20:56:55 +03:00
hibna 11924416a9 fix: something 2026-08-02 20:26:54 +03:00
hibna 5215560ede her sey 2026-07-21 22:06:10 +00:00
hibna afc64b83c1 Add panel feature updates across API, daemon, and web 2026-03-02 21:53:54 +00:00
hibna 6b463c2b1a fix(daemon): preserve file ownership on writes for cs2 addons 2026-02-26 22:36:57 +00:00
hibna c7d1627e18 feat: patch cs2 gameinfo after metamod install 2026-02-26 21:21:27 +00:00
hibna 2a3ad5e78f feat: overhaul server automation, files editor, and CS2 setup workflows 2026-02-26 21:01:00 +00:00
hibna 44c439e2f9 feat: wire daemon console/files/config/players and improve runtime fallbacks 2026-02-22 12:09:07 +00:00
hibna 614d25c189 Add internal daemon routes and service management scripts 2026-02-22 10:16:42 +00:00
hibna c9fe2bd9fe fix: resolve frontend routing, API mismatches, and missing UI components
- Add servers list page and missing routes (servers, settings redirect, account security)
- Fix members page .map error (API returns { data } wrapper, not flat array)
- Fix auth store fetchUser expecting flat User but API returns { user } wrapper
- Add node token display dialog after creation
- Add allocation management UI to node detail page
- Add account security page with password change
- Add change-password API endpoint
- Add node servers and stats API endpoints
- Fix config save using PATCH instead of PUT, add api.put method
- Fix audit logs field name mismatch (userName vs username)
- Replace admin nodes page to avoid orgId dependency
- Remove duplicate sidebar nav items

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 13:07:00 +03:00
hibna d7d8fd5339 Fix auth flows and add daemon heartbeat endpoint 2026-02-22 09:41:17 +00:00
hibna c926613ee0 chore: initial commit for main 2026-02-22 09:52:38 +03:00
hibna 124e4f8921 chore: initial commit for phase07 2026-02-22 00:25:39 +03:00
hibna 5709d8bc10 chore: initial commit for phase06 2026-02-21 23:46:01 +03:00
hibna 0941a9ba46 chore: initial commit for phase05 2026-02-21 16:59:21 +03:00
hibna 218452706c chore: initial commit for phase04 2026-02-21 15:50:35 +03:00
hibna d0c20581b6 chore: initial commit for phase03 2026-02-21 13:37:46 +03:00
hibna 8eb7c90958 chore: update gitignore for phase02 2026-02-21 13:22:51 +03:00
hibna 2215003a4d phase01 2026-02-21 13:02:41 +03:00