Files
joulenap/.gitignore
T
Catubba 5dc8c5719a feat(api): per-route scheduler, route/device REST API and notifications
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.
2026-08-02 20:33:41 +02:00

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