Features:
- Smart Overrides Phase 1: create overrides directly from Run Checks via
the "Apply override for future runs?" follow-up dialog after Mark as
Success (scope + duration choices, audit-logged).
- Cove workstation offline handling: skip schedule-based missed-runs for
Cove workstations (always on) and add an optional colorbar-based
offline-detection toggle in Settings -> Integrations -> Cove
(cove_offline_detection_enabled, cove_workstation_warning_days,
cove_workstation_error_days). Synthetic offline runs use a stable
external_id so they escalate in place and clear once activity resumes.
- Settings -> Maintenance: Generate test run card for exercising the
Smart Override flow.
- Restored Mark as Success button in the Run Checks modal footer.
Changes:
- Run Checks Cove same-day suppression: hide repeat Cove runs after the
first complete success run on the same local day.
- Inbox excludes mail messages linked to archived jobs.
- Run Checks / Search overview now applies Customer.active filter.
- In-app documentation refreshed across getting-started, users,
mail-import, integrations (Cove), settings, backup-review,
customers-jobs and autotask sections.
Tooling:
- Adopted the shared docker-build-and-push script. Modes are now t / r;
release version is read from docs/changelog.md; the script no longer
performs git operations. Removed obsolete version.txt and .last-branch.
Renames:
- docs/technical-notes-codex.md -> docs/TECHNICAL.md
- docs/changelog-claude.md -> docs/changelog-develop.md
Migrations:
- migrate_cove_offline_detection (3 columns on system_settings).
- cove_importer.py: add _backfill_colorbar_runs() to reconstruct up to
27 days of history from the D09F08 28-day colorbar when a new run is
created; idempotent via external_id deduplication
- routes_cove.py: add GET /cove/run/<run_id>/detail endpoint returning
structured Cove account info and per-datasource objects for popups
- routes_run_checks.py: add cove_summary to run payload for cove_api runs
with readable datasource labels; hide mail section for Cove runs
- routes_jobs.py: add source_type to history_rows dict
- job_detail.html: Cove run rows clickable; JS routes to cove_run_detail;
Cove summary panel added, mail section hidden for Cove runs
- run_checks.html: Cove summary panel added; JS handles cove_summary
- technical-notes-codex.md: document new route, popup behaviour, and
historical backfill
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pass customer_rows (list of {id, name} dicts) instead of SQLAlchemy
objects so the Jinja tojson filter can serialize them in JavaScript.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove per-row Link/Create Job button and inline modals
- Make unmatched rows clickable to open a single shared modal
- Create new job tab: customer via datalist (auto-complete),
job name and backup type shown read-only (derived from user/section)
- Route: derive job_name and backup_type server-side, not from form
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- POST /cloud-connect/accounts/scan-inbox: queries all inbox mails with
backup_type 'cloud connect report', calls upsert_cloud_connect_report()
for each, flashes a summary of accounts upserted and runs created
- 'Scan inbox mails' button added to Cloud Connect Accounts page header
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- base.html: hardcode data-bs-theme="dark", remove theme detection JS
and theme selector form from sidebar footer
- layout.css: replace dark/light theme selectors with unconditional
dark background for .bc-main
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>