Commit Graph

206 Commits

Author SHA1 Message Date
bvandeusen fa318073f1 chore: move plugins/ to separate repo, gitignore the directory
plugins/ is now tracked at bvandeusen/fabledscryer-plugins.
Removed tracked traefik files from this repo's index (files remain on disk).
Added plugins/ to .gitignore so the directory is ignored going forward.

PLUGIN_DIR in config.yaml still points to plugins/ for local dev and Docker.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 18:33:22 -04:00
bvandeusen 230b542015 feat: rename to FabledScryer, multi-dashboard system, plugin management, branding
- Rename package fablednetmon → fabledscryer throughout
- Multi-dashboard: ownership, per-user defaults, HTMX edit (add/remove/reorder)
- Read-only share tokens scoped to individual dashboards
- Dashboard edit is HTMX-driven (no page reloads)
- Plugin management system: remote catalog, download/install, hot-reload, in-app restart
- plugin_index.py: fetch/cache remote index.yaml; default URL → bvandeusen/fabledscryer-plugins
- plugin_manager.py: download_and_install_plugin, hot_reload_plugin, restart_app
  - ZIP extraction handles GitHub archive formats (name-v1.0.0/, name-main/)
- Settings split into tabbed sections: General, Notifications, Ansible, Plugins
- Plugins tab: catalog browser (HTMX), install/activate/update/restart actions
- UI/branding: dark palette (#07071a), crystal ball SVG logo, animated star field,
  Libertinus Serif applied to headings, nav, labels, and section titles
- Widget registry (core/widgets.py) for dashboard plugin integration
- UPS widget.html (dashboard card) and settings/_tabs.html include
- Migrations 0005–0008: dashboards, is_default, ownership, share tokens
- docs/plugins/: writing-a-plugin.md updated with publishing guide,
  index.yaml.example template for fabledscryer-plugins repo

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 18:27:56 -04:00
bvandeusen 165a202ba4 feat: UI redesign (CSS system, DNS widget, Traefik dashboard widget)
- Replace base.html style block with full CSS design system using custom properties (dark theme, cards, tables, badges, dots, widgets)
- Add DNS blueprint (fablednetmon/dns/) with /dns/ and /dns/rows routes + templates
- Add Traefik /widget route and widget.html fragment for dashboard
- Update dashboard: DNS + Traefik widgets, traefik_enabled config detection
- Update all templates to use new CSS classes (page-title, section-title, card-flush, table, badge-*, dot-*, btn-*)
- Register dns_bp in app.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:37:46 -04:00
bvandeusen d29c5b3eab fix: suppress debconf frontend warnings during apt-get install 2026-03-18 23:25:44 -04:00
bvandeusen a3a05070e7 fix: upgrade pip, run as non-root user, remove stale FABLEDNETMON_CONFIG env 2026-03-18 23:23:52 -04:00
bvandeusen 7a7ed2185a feat: live ping pill widget (dashboard + /ping/ page with threshold settings) 2026-03-18 23:18:26 -04:00
bvandeusen 791af2d58f feat: ping/DNS status and latency in hosts list and dashboard summary 2026-03-18 23:09:49 -04:00
bvandeusen c26552b670 fix: install iputils-ping in Docker image for ICMP ping support 2026-03-18 23:03:58 -04:00
bvandeusen d8eacffd48 fix: env.py reads FABLEDNETMON_DATABASE_URL and honors URL set by migration_runner 2026-03-18 22:40:05 -04:00
bvandeusen f9ea87187b test: update test_config.py for load_bootstrap API 2026-03-18 22:31:17 -04:00
bvandeusen 242398dc52 chore: remove config.yaml mount from docker-compose; update config example
- Replace individual volume mounts (playbook_cache, plugins) with single app_data:/data mount
- Change FABLEDNETMON_DATABASE__URL to FABLEDNETMON_DATABASE_URL (underscore to hyphen)
- Simplify config.example.yaml to focus on required database URL setting
- Document that other settings are now managed via the Settings UI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 20:36:26 -04:00
bvandeusen dfb433e779 feat: settings UI (admin-only, live-updates app.config)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 20:35:39 -04:00
bvandeusen c5dff7ec8c feat: two-phase migrations, DB settings loading in create_app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 20:33:36 -04:00
bvandeusen 03bbd8d0fa feat: strip config.py to bootstrap only (db_url + auto-gen secret_key) 2026-03-18 20:32:02 -04:00
bvandeusen 80ce703a15 feat: settings service (get/set/load helpers, load_settings_sync) 2026-03-18 20:29:52 -04:00
bvandeusen e6fa8baed1 feat: AppSetting model and migration 0004
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 20:22:23 -04:00
bvandeusen 38416b412a fix: dockerfile install order; add .dockerignore; update .gitignore 2026-03-18 19:57:05 -04:00
bvandeusen 4cc83c8a19 fix: use relative imports in traefik plugin to prevent double-registration; resolve PLUGIN_DIR path 2026-03-18 18:46:02 -04:00
bvandeusen 2164ea28f2 feat: traefik UI (per-router dashboard with SVG sparklines) 2026-03-18 18:43:05 -04:00
bvandeusen aacfcd420e feat: traefik scrape task (delta tracking, DB write, record_metric) 2026-03-18 18:38:54 -04:00
bvandeusen 8ea2b09d05 fix: cap percentile at last finite bucket when target falls in open +Inf bucket 2026-03-18 18:38:03 -04:00
bvandeusen c336f1f774 feat: traefik prometheus scraper (parse, compute rates and percentiles) 2026-03-17 21:37:34 -04:00
bvandeusen 0af38016cd feat: traefik plugin migration (traefik_001_initial, depends_on core head)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 21:34:40 -04:00
bvandeusen 6fde57f63e feat: traefik plugin scaffold (plugin.yaml, model, __init__ stub) 2026-03-17 21:32:14 -04:00
bvandeusen 13f2a6f2d6 fix: preserve enabled key in merged plugin config; revert trailing slash on url_prefix 2026-03-17 21:31:11 -04:00
bvandeusen 400e0ee1b4 fix: use trailing slash in plugin blueprint url_prefix 2026-03-17 21:29:38 -04:00
bvandeusen c6b3672a49 feat: add plugin manager (load, validate, register plugins) 2026-03-17 21:28:37 -04:00
bvandeusen ae57f2f9da fix: always set version_locations explicitly in migration runner 2026-03-17 21:27:43 -04:00
bvandeusen 415fe7eba9 feat: add migration runner and wire into create_app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 21:12:06 -04:00
bvandeusen 763cbda3ac feat: wire ansible blueprint, startup interrupted-run marker, git-pull task, cleanup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:33:14 -04:00
bvandeusen 60e2040284 fix: ansible routes validation, SSE dedup, scoped querySelector, status_color fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:31:17 -04:00
bvandeusen 94e0f20f98 feat: add ansible routes and templates (browse, run, stream, detail)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:27:51 -04:00
bvandeusen 2fd9d331d6 feat: add ansible executor with SSE broadcast and DB flush 2026-03-17 20:23:34 -04:00
bvandeusen b7fba8ab5e fix: validate required url/path fields in get_sources 2026-03-17 20:22:52 -04:00
bvandeusen 90aaf8f80c feat: add ansible source discovery (local + git) 2026-03-17 20:20:48 -04:00
bvandeusen c18b707093 feat: add AnsibleRun model and migration 0003 2026-03-17 20:17:56 -04:00
bvandeusen 7dbb662c38 feat: wire monitors, scheduler, alerts, and nav into app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 20:01:31 -04:00
bvandeusen 75b0233c94 feat: alert rules and active alerts UI 2026-03-17 19:57:53 -04:00
bvandeusen 3f3f55b83f feat: host management UI (CRUD) 2026-03-17 19:57:51 -04:00
bvandeusen 1ef4983de6 feat: data retention cleanup task 2026-03-17 19:50:58 -04:00
bvandeusen fd380b1024 feat: ping and DNS monitor coroutines 2026-03-17 19:50:49 -04:00
bvandeusen 7fe686d366 feat: email and webhook notification dispatch 2026-03-17 19:50:25 -04:00
bvandeusen 4d81a50d7c feat: record_metric() and alert state machine 2026-03-17 19:46:18 -04:00
bvandeusen c8d7b8c043 feat: core scheduler and migrations utility 2026-03-17 19:45:47 -04:00
bvandeusen 00c65457a0 feat: migration 0002 for hosts, monitors, metrics, and alert tables 2026-03-17 19:43:51 -04:00
bvandeusen 97199a9d94 fix: add explicit ondelete behavior to alert FK references 2026-03-17 19:42:56 -04:00
bvandeusen cdcf00a1cf feat: data models for hosts, monitors, metrics, and alerts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 19:41:37 -04:00
bvandeusen 2408a80489 feat: Docker and systemd deployment files 2026-03-17 19:09:06 -04:00
bvandeusen 686fc2b1e1 feat: base layout and auth/dashboard templates 2026-03-17 19:08:46 -04:00
bvandeusen 6ca25e94a0 feat: session auth, role middleware, login/setup/logout routes 2026-03-17 19:06:06 -04:00