mirror of
https://github.com/Joulenap/joulenap.git
synced 2026-08-11 13:21:43 +02:00
Wire the route model to the outside world and retire the 0.9 single-PVE/PBS one.
Scheduler: one cron job per enabled route (route:<id>), built from schedule.time +
days or the schedule.cron escape hatch, gated by the new app.scheduler_enabled
kill-switch. Missed-run detection is per route.
API: new /api/routes and /api/devices (CRUD, connection test, power, ad-hoc GC and
verify), with a 409 removal guard that names the routes still using a device.
Status, dashboard and metrics report one entry per route and per PBS; metrics keep
their joulenap_ names and gain route=/pbs= labels. Cancel moved to
POST /api/runs/{id}/stop, /api/guests is scoped to one PVE, and the WoL smoke test
moved into the wizard router.
Notifications: the positional 5-tuple becomes a RunContext, filtered per route.
Cycles now return that context instead of sending it; the job service sends it after
releasing the power leases, so the message can report whether the box went back to
sleep, and the wake/power-off steps are recorded in the run's timeline again.
Removes pve:/pbs:/backup:/maintenance.gc/maintenance.verify from the schema (old
files still load: the keys are stripped after the 1.0 migration runs), the 0.9
cycles and job entry points, and the config-shaped connector factories.
Also fixes redacted secrets being matched by list position rather than by device id,
and git-ignores the migration's rollback copy of config.yaml, which holds the same
tokens as the original.
59 lines
1023 B
Plaintext
59 lines
1023 B
Plaintext
# --- Joulenap secrets & local state (NEVER commit) ---
|
|
config.yaml
|
|
# The 1.0 migration's rollback parachute (config.yaml.pre-overhaul.bak) is a verbatim copy
|
|
# of the old config — same tokens, same hosts. It must never be committed either.
|
|
config.yaml.*
|
|
*.key
|
|
*.pem
|
|
id_*
|
|
.env
|
|
.env.*
|
|
# ...except the two vite modes, which hold a flag and no secret (stub = dev fixtures,
|
|
# demo = the public joulenap.com/demo build).
|
|
!frontend/.env.stub
|
|
!frontend/.env.demo
|
|
data/
|
|
design/
|
|
*.db
|
|
*.sqlite
|
|
*.sqlite3
|
|
*.log
|
|
logs/
|
|
|
|
# --- Python ---
|
|
__pycache__/
|
|
*.py[cod]
|
|
*.egg-info/
|
|
.eggs/
|
|
build/
|
|
dist/
|
|
.venv/
|
|
venv/
|
|
.env/
|
|
.pytest_cache/
|
|
.mypy_cache/
|
|
.ruff_cache/
|
|
|
|
# --- Node / frontend ---
|
|
node_modules/
|
|
npm-debug.log*
|
|
yarn-error.log*
|
|
.pnpm-debug.log*
|
|
frontend/dist/
|
|
frontend/dist-demo/
|
|
|
|
# Playwright MCP run artifacts (screenshots/snapshots from local UI verification)
|
|
.playwright-mcp/
|
|
frontend/.vite/
|
|
|
|
# --- Local planning notes (NEVER commit) ---
|
|
TODO.md
|
|
pre-release-steps.md
|
|
|
|
# --- Editors / OS ---
|
|
.vscode/
|
|
.idea/
|
|
.DS_Store
|
|
Thumbs.db
|
|
*.swp
|