f2b04ea668
fix: use branch-based shallow clone in CI to avoid missing SHA
...
Dev / test (push) Successful in 5m1s
Dev / docker (push) Successful in 2m1s
Clone with -b GITHUB_REF_NAME instead of depth=1 + checkout SHA,
which fails when the shallow clone doesn't include the target commit.
2026-03-31 15:21:44 -05:00
a06ce9e156
fix: add Playwright, Valkey, and mock-OIDC to CI pipelines
...
Dev / test (push) Failing after 46s
Dev / docker (push) Has been skipped
- Add valkey and mock-oidc services to both release and dev workflows
- Install Playwright with Chromium deps for headless e2e tests
- Set WG_REDIS_URL and MOCK_OIDC_HOST env vars for CI
- Make mock OIDC discovery URL configurable via MOCK_OIDC_HOST env var
- Add full test job (unit + e2e) to dev pipeline before Docker build
2026-03-31 14:48:27 -05:00
Stefano Bertelli
fab5ad29d4
fix: add --no-cache to docker builds to prevent stale images
...
Dev / docker (push) Successful in 2m22s
Docker layer caching on the runner was reusing old layers even
when source code changed, resulting in images with outdated code.
2026-03-30 23:35:44 -05:00
Stefano Bertelli
1c9de39079
chore: add dev branch pipeline for pre-release images
...
Dev / docker (push) Successful in 7s
Builds and pushes docker images on every push to dev branch.
Tags based on latest main release: e.g. v1.2.3.dev0, v1.2.3.dev5.
No tests — fast feedback loop for testing.
2026-03-30 23:32:01 -05:00
Stefano Bertelli
e59ba0dfe5
fix: run alembic migrations before E2E tests in CI
...
CI / test (push) Failing after 2m8s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
The unit tests drop all tables on teardown, so the E2E step
needs to recreate the schema via alembic before running.
2026-03-30 22:29:55 -05:00
Stefano Bertelli
5adb0c86ce
feat: add E2E tests for device creation and account management
...
CI / test (push) Failing after 2m4s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
10 E2E tests using NiceGUI's User fixture:
- Device creation flow and name validation
- Password change (success, wrong current, mismatch, too short)
- API token creation, TOTP registration, invalid code rejection
- Account deletion with email confirmation
Tests live in tests/e2e/ with a separate conftest that loads the
NiceGUI testing plugin. CI runs unit and E2E tests as separate steps.
2026-03-30 22:26:15 -05:00
Stefano Bertelli
2eb35e94e9
fix: configure git auth for tag push in release job
...
CI / test (push) Successful in 1m34s
CI / release (push) Successful in 35s
CI / docker (push) Successful in 2m22s
The manual git clone doesn't set up HTTPS credentials like
actions/checkout did. Configure the extraheader with GITHUB_TOKEN
so git push can authenticate when creating release tags.
2026-03-30 21:47:25 -05:00
Stefano Bertelli
1fc80b9c0a
feat: UI modernization — Manrope font, dark/light theme, card-based layouts
...
CI / test (push) Successful in 1m48s
CI / release (push) Failing after 29s
CI / docker (push) Has been skipped
- Add Manrope as primary UI font via Google Fonts (wiregui/pages/style.py)
- Add dark/light/auto theme toggle in header, persisted to users.theme_preference
- Alembic migration for theme_preference column
- Redesign account page with card-based layout matching admin pages
- Convert settings page from tabs to stacked cards
- Replace all outline buttons with solid unelevated buttons
- Fix dark mode: remove hardcoded bg-grey-1/text-grey-7, use theme-safe colors
- Fix CI: add ca-certificates to release job for SSL cert verification
- Add no-coauthor and commit conventions to CLAUDE.md
2026-03-30 21:40:29 -05:00
Stefano Bertelli
3601de3600
fix: replace actions/checkout with git clone to avoid SSL cert errors
...
CI / test (push) Successful in 1m46s
CI / release (push) Failing after 25s
CI / docker (push) Has been skipped
The Forgejo runner's container images lack CA certificates, causing
actions/checkout@v4 to fail on SSL verification. Use direct git clone
(same approach as the test job) for release and docker jobs.
2026-03-30 20:56:42 -05:00
1b48702295
fix: install git before checkout in release job
CI / test (push) Successful in 1m41s
CI / release (push) Failing after 52s
CI / docker (push) Has been skipped
2026-03-30 19:45:13 -05:00
8282f53478
fix: install git and python3 in release job
CI / test (push) Successful in 1m45s
CI / release (push) Failing after 29s
CI / docker (push) Has been skipped
2026-03-30 19:40:59 -05:00
792a9a4151
fix: install bash in release job (node:20-slim uses dash)
CI / test (push) Successful in 1m40s
CI / release (push) Failing after 18s
CI / docker (push) Has been skipped
2026-03-30 19:37:08 -05:00
78acae7947
fix: revert to GITHUB_SERVER_URL for git clone (runner URL now public)
CI / test (push) Failing after 38s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
2026-03-30 19:16:50 -05:00
af3c20b274
fix: use public forge URL for git clone in CI (isolated network can't reach localhost)
CI / test (push) Successful in 1m38s
CI / release (push) Failing after 55s
CI / docker (push) Has been skipped
2026-03-30 19:13:43 -05:00
b841835de0
fix: revert to service containers for CI postgres (runner network fixed)
CI / test (push) Failing after 38s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
2026-03-30 19:12:11 -05:00
5ce17943d5
fix: CI run postgres in-container instead of service container
CI / test (push) Failing after 2m18s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
2026-03-30 19:05:14 -05:00
bba8d113e4
fix: CI wait for postgres + better error handling
CI / release (push) Blocked by required conditions
CI / docker (push) Blocked by required conditions
CI / test (push) Has been cancelled
2026-03-30 19:02:16 -05:00
2ecd0bbc33
fix: CI test DB — use main DB in CI, skip test DB creation
CI / release (push) Blocked by required conditions
CI / docker (push) Blocked by required conditions
CI / test (push) Has been cancelled
2026-03-30 18:55:09 -05:00
651a054971
fix: use manual git checkout in test job (python:3.13-slim has no node)
CI / test (push) Failing after 53s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
2026-03-30 18:52:08 -05:00
9d9afbe3ad
fix: CI runner containers for Forgejo actions
2026-03-30 18:22:42 -05:00
0546b44507
feat: initial WireGUI implementation — full VPN management platform
...
CI / test (push) Failing after 26s
CI / release (push) Has been skipped
CI / docker (push) Has been skipped
Complete Python/NiceGUI rewrite of the Wirezone (Elixir/Phoenix) VPN
management platform. All 10 implementation phases delivered.
Core stack:
- NiceGUI reactive UI with SQLModel ORM on PostgreSQL (asyncpg)
- Alembic migrations, Valkey/Redis cache, pydantic-settings config
- WireGuard management via subprocess (wg/ip/nft CLIs)
- 164 tests passing, 35% code coverage
Features:
- User/device/rule CRUD with admin and unprivileged roles
- Full device config form with per-device WG overrides
- WireGuard client config generation with QR codes
- REST API (v0) with Bearer token auth for all resources
- TOTP MFA with QR registration and challenge flow
- OIDC SSO with authlib (provider registry, auto-create users)
- Magic link passwordless sign-in via email
- SAML SP-initiated SSO with IdP metadata parsing
- WebAuthn/FIDO2 security key registration
- nftables firewall with per-user chains and masquerade
- Background tasks: WG stats polling, VPN session expiry,
OIDC token refresh, WAN connectivity checks
- Startup reconciliation (DB ↔ WireGuard state sync)
- In-memory notification system with header badge
- Admin UI: users, devices, rules, settings (3 tabs), diagnostics
- Loguru logging with optional timestamped file output
Deployment:
- Multi-stage Dockerfile (python:3.13-slim)
- Docker Compose prod stack (bridge networking, NET_ADMIN, nftables)
- Forgejo CI: tests → semantic versioning → Docker registry push
- Health endpoint at /api/health
2026-03-30 16:53:46 -05:00