Commit Graph

401 Commits

Author SHA1 Message Date
96e4e8c143 Dashboard redesign: bc-stat-grid with colored values
- Replace Bootstrap display-6 stats with bc-stat-grid layout:
  Inbox card spans 2 columns; status values colored by type
  (success=green, warning=yellow, failed=red, override=blue, muted=grey)
- Fix extra </div> that caused large empty space below stats
- Compact Legend to horizontal flex-wrap row
- Move System status card above description text
- Shorten description to 3 paragraphs
- Add bc-stat-grid / bc-stat-card CSS to layout.css

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:48:11 +01:00
e39e5359a6 Layout v2 template cleanup: remove container wrappers, fix changelog offset
- settings_orphaned_jobs.html: remove outer container-fluid div (bc-content
  already provides padding in the new sidebar layout)
- changelog.html: reduce sticky-top offset from 80px to 24px (no topnav
  anymore, only sidebar)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:38:33 +01:00
a4d85a6d74 Use favicon as sidebar logo icon
Replace placeholder SVG grid with the actual favicon.ico image.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:32:47 +01:00
1e11b3b424 Fix Jinja2 macros undefined error: move macro definitions before first use
Icon and nav macros were defined after </html> but called earlier in the
template. Jinja2 processes macros sequentially, so moved all macro
definitions to the top of base.html before the <!doctype html> tag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:29:38 +01:00
89f7506763 Layout v2: sidebar-first design + background sweep + Cove improvements
- Redesign layout to fixed dark sidebar (220px) with IBM Plex Sans/Mono
  fonts and CSS design tokens; full rewrite of layout.css and base.html
- Move missed-run generation and Autotask ticket polling to a daemon
  background thread on Run Checks page load (throttled per job, 10 min)
- Cove manual import now logs and shows per-skip-reason breakdown
- Cove timestamp parser handles ms/us/ns epochs and .NET /Date(ms)/ strings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:15:50 +01:00
2ebe7d8aed Exclude archived jobs from auto mail matching 2026-03-12 14:44:44 +01:00
ec3a338170 Fix Cove link sync for run import 2026-03-02 16:50:20 +01:00
2200b0cb00 Fix Cove run creation transaction scope 2026-03-02 16:46:44 +01:00
cede08bb31 Remove Run Checks search field from UI 2026-02-27 10:20:47 +01:00
98567f8d05 Fix Run Checks query overwrite breaking filters and sort 2026-02-27 10:19:46 +01:00
2e6ff18878 Add per-user Run Checks sort and filter preferences 2026-02-27 10:15:04 +01:00
ea7c5e29c5 Add v0.1.27 release notes to changelog files 2026-02-23 15:39:04 +01:00
9ecbbdd523 Update technical docs and stop tracking Python cache artifacts 2026-02-23 15:13:18 +01:00
a450817b78 Show Customers and Jobs on navbar for Viewer role 2026-02-23 15:06:54 +01:00
03de2d294c Adjust navbar: keep Cove Accounts visible and move Daily Jobs to More 2026-02-23 15:03:48 +01:00
7905e988c7 Compress navbar with More dropdown for non-admin links 2026-02-23 15:00:40 +01:00
abd98f5bc6 Move admin-only navbar links into Admin dropdown and revert forced collapse 2026-02-23 14:57:35 +01:00
2cd704182c Force navbar collapse on split-screen desktop widths 2026-02-23 14:52:44 +01:00
40ffe3656e Fix navbar overflow on split-screen desktop layouts 2026-02-23 14:41:11 +01:00
8e847e802b Mark Entra SSO docs as untested in Backupchecks 2026-02-23 14:36:31 +01:00
b992d6382a Add Entra security group access restriction for SSO 2026-02-23 14:30:42 +01:00
6bf81bd730 Add documentation page for Microsoft Entra SSO setup 2026-02-23 14:23:15 +01:00
5274286c04 Add Microsoft Entra SSO authentication flow 2026-02-23 14:20:22 +01:00
47bb4ee4f0 Deduplicate Cove runs per job instead of globally 2026-02-23 12:15:18 +01:00
8fe3f99e40 Improve linked Cove import feedback and timestamp fallback 2026-02-23 12:04:43 +01:00
f68f92e63a Trigger immediate Cove import on link and enrich run details 2026-02-23 11:57:39 +01:00
06abd8c7a3 Fix Cove workstation/server type heuristic 2026-02-23 11:17:38 +01:00
a0abd3d58e Differentiate Cove server/workstation types and show computer name 2026-02-23 11:14:41 +01:00
7803b7647c Improve Cove accounts typing and datasource readability 2026-02-23 11:10:48 +01:00
0c5adf17ab Fix Cove Run import button submission in settings 2026-02-23 11:02:56 +01:00
9b19283c97 Add Cove Accounts inbox-style flow for linking accounts to jobs
- CoveAccount staging model: all Cove accounts upserted from API;
  unmatched accounts visible on /cove/accounts before job linking
- cove_importer.py: always upserts accounts, creates JobRuns only for
  accounts with a linked job (deduplication via external_id)
- routes_cove.py: GET /cove/accounts, POST link/unlink routes
- cove_accounts.html: inbox-style page with Bootstrap modals for
  creating new jobs or linking to existing ones
- Nav bar: Cove Accounts link for admin/operator when cove_enabled
- DB migration: migrate_cove_accounts_table() for staging table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 10:40:54 +01:00
c045240001 Add manual Cove import trigger (Run import now button)
- New route POST /settings/cove/run-now calls run_cove_import()
  directly and shows result as flash message
- Settings > Integrations > Cove: "Run import now" button visible
  when partner_id is known (connection confirmed)
- Status bar shows partner ID, last import timestamp or "No import yet"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 10:28:33 +01:00
3bd8178464 Fix Cove importer: correct API payload format and response parsing
- Login: use lowercase username/password params and id="jsonrpc"
- Login: visa is at top-level of response (not inside result)
- EnumerateAccountStatistics: use lowercase query param, RecordsCount
  instead of RecordCount, remove DisplayColumns (not needed)
- _flatten_settings: Settings items are single-key dicts like
  {"D09F00": "5"}, not {Key: ..., Value: ...} - use dict.update()
- _cove_enumerate: unwrap nested result and handle Accounts key
- _process_account: AccountId is top-level field, not from Settings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 10:21:01 +01:00
2f1cc20263 Add Cove Data Protection full integration
- New models: SystemSettings gets 8 cove_* fields, Job gets
  cove_account_id, JobRun gets source_type and external_id
- Migration migrate_cove_integration() adds all new DB columns and
  a deduplication index on job_runs.external_id
- cove_importer.py: Cove API login, paginated EnumerateAccountStatistics,
  deduplication via external_id, JobRun creation, per-datasource
  run_object_links persistence (Files&Folders, VssMsSql, M365, etc.)
- cove_importer_service.py: background thread, same pattern as
  auto_importer_service, respects cove_import_interval_minutes
- __init__.py: starts cove_importer thread on app startup
- routes_settings.py: Cove form handling (POST), has_cove_password
  variable, new AJAX route /settings/cove/test-connection
- routes_jobs.py: new route /jobs/<id>/set-cove-account,
  cove_enabled passed to job_detail template
- settings.html: Cove card in Integrations tab with AJAX test button
- job_detail.html: Cove Integration card with Account ID input

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 10:13:34 +01:00
38f0f8954e Fix remark visibility in run alerts 2026-02-19 14:14:44 +01:00
2ee5db8882 Auto-commit local changes before build (2026-02-19 13:45:13) 2026-02-19 13:45:13 +01:00
ea244193e0 Hide non-backup 3CX informational jobs from Run Checks 2026-02-19 13:44:46 +01:00
441f5a8e50 Handle 3CX update mails as informational runs 2026-02-19 13:27:52 +01:00
e0e8ed2b0d Auto-commit local changes before build (2026-02-19 12:57:34) 2026-02-19 12:57:34 +01:00
53b028ef78 Add optional Autotask ID import toggle 2026-02-19 12:56:45 +01:00
f2c0d0b36a Auto-commit local changes before build (2026-02-16 16:58:07) 2026-02-16 16:58:07 +01:00
652da5e117 Add remarks to global search results 2026-02-16 16:57:51 +01:00
c8e7491c94 Add Daily Jobs note to search results 2026-02-16 16:54:26 +01:00
e5da01cfbb Auto-commit local changes before build (2026-02-16 16:50:14) 2026-02-16 16:50:14 +01:00
b46010dbc2 Forward global search filters to overview pages 2026-02-16 16:49:47 +01:00
f90b2bdcf6 Keep search pagination at current section 2026-02-16 16:32:23 +01:00
2beba3bc9d Auto-commit local changes before build (2026-02-16 16:27:14) 2026-02-16 16:27:14 +01:00
ded71cb50f Improve daily jobs search metadata and modal link 2026-02-16 16:26:56 +01:00
dc3eb2f73c Auto-commit local changes before build (2026-02-16 16:19:53) 2026-02-16 16:19:53 +01:00
8a8f957c9f Add per-section pagination to global search 2026-02-16 16:19:26 +01:00