691 lines
39 KiB
Markdown
691 lines
39 KiB
Markdown
## v20251231-01-dashboard-description
|
||
|
||
- Added a comprehensive explanatory section to the Dashboard, positioned directly below the legend.
|
||
- Introduced detailed documentation describing how Backupchecks collects, normalizes, and evaluates backup results across multiple backup solutions.
|
||
- Clarified the purpose and behavior of dashboard counters, job statuses, and override indicators.
|
||
- Expanded the explanation of the Daily Jobs and Run Checks workflows, including the review, follow-up, resolution, and override processes.
|
||
- Documented the operational goal of maintaining an empty or near-empty Run Checks page to ensure full review and accountability.
|
||
- Clearly positioned Backupchecks as a monitoring, validation, and control platform that enhances, but does not replace, existing backup software.
|
||
|
||
---
|
||
|
||
## v20251231-02-daily-first-open-dashboard
|
||
|
||
- Added logic to automatically redirect users to the Dashboard on their first website visit of each day.
|
||
- The redirect is applied per browser session after authentication, ensuring normal navigation afterwards.
|
||
- Excluded API endpoints and static asset requests from the redirect to prevent unintended side effects.
|
||
- Ensured the behavior is transparent to users while improving daily visibility of overall system status.
|
||
|
||
---
|
||
|
||
## v20251231-03-dashboard-news-settings-sections
|
||
|
||
- Added a Dashboard News section displaying active announcements per user.
|
||
- Implemented per-user read tracking, allowing users to mark news items as read so they disappear only for that user.
|
||
- Added admin management for News items in Settings (create, edit, delete, pin, severity, active state, publish window).
|
||
- Added admin visibility into read status per news item, including read counts and user timestamps.
|
||
- Implemented admin action to reset read status for a news item.
|
||
- Refactored the Settings page into separate sections to improve usability and prevent overly long pages.
|
||
|
||
---
|
||
|
||
## v20251231-04-settings-tabs-restructure
|
||
|
||
### Settings
|
||
- Removed the collapse-based layout from **Settings → General** and converted it to a fixed section view for improved clarity.
|
||
- Moved **Import configuration** from **Settings → General** to the dedicated **Imports** section.
|
||
- Moved **User Management** from **Settings → Maintenance** to the dedicated **Users** section.
|
||
- Moved **Manual mail import** from **Settings → Maintenance** to the **Imports** section.
|
||
- Simplified and clarified the overall Settings structure by grouping related functionality into dedicated sections.
|
||
|
||
---
|
||
|
||
## v20251231-05-reporting-raw-data-foundation
|
||
|
||
### Reporting – Foundation
|
||
- Introduced the initial reporting foundation focused on raw data collection.
|
||
- Added support for object-based reporting across multiple jobs.
|
||
- Implemented immutable report snapshot data to ensure auditability.
|
||
- Added aggregated summary data to calculate success, warning, failed, missed, and override metrics per object.
|
||
- Prepared reporting structures to support CSV output and future PDF generation.
|
||
- Enabled both one-time and scheduled report concepts at the data and API level.
|
||
- Ensured report data is reusable for downloads and email delivery.
|
||
- Aligned reporting permissions so admin, operator, and reporter roles have equal access in phase 1.
|
||
- Designed the reporting model to be extensible for future RBAC, UI, and visualization enhancements.
|
||
|
||
---
|
||
|
||
## v20251231-06-reports-ui-placeholders
|
||
|
||
- Added an initial Reports UI to create, view, and manage report definitions for testing purposes.
|
||
- Implemented UI components to generate and download raw report data as CSV.
|
||
- Added scheduling placeholders (non-functional) to preview future report scheduling options.
|
||
- Prepared the Reports page layout for future extensions such as automated delivery and scheduling.
|
||
|
||
---
|
||
|
||
## v20251231-07-reports-raw-data-ui
|
||
|
||
- Added raw data preview functionality to the Reports page, allowing users to view report data directly in the UI without downloading a CSV.
|
||
- Introduced a modal-based raw data viewer with pagination support for large datasets.
|
||
- Implemented backend support to generate report data on demand for UI preview usage.
|
||
- Added API endpoints to retrieve report raw data with configurable limits and offsets.
|
||
- Prepared the reporting flow to support future export options (CSV/PDF) using the same data foundation.
|
||
|
||
---
|
||
|
||
## v20251231-08-reports-generation-enabled
|
||
|
||
- Enabled actual report generation from the Reports page.
|
||
- Connected the “Generate report” action to the backend generation logic.
|
||
- Ensured raw data can be used to build a report without requiring a schedule.
|
||
- Kept scheduling functionality as a placeholder only, as intended.
|
||
- Improved UI state handling after report generation (status and available actions).
|
||
|
||
---
|
||
|
||
## v20260101-01-reports-new-report-button-fix
|
||
|
||
- Fixed the “New report” button on the Reports page so it correctly opens the report creation modal.
|
||
- Ensured report-related JavaScript is initialized after DOMContentLoaded to avoid issues with unloaded dependencies.
|
||
- Restored the ability to start creating a new report from the UI.
|
||
|
||
---
|
||
|
||
## v20260101-02-reports-new-report-page-multicustomer
|
||
|
||
- Replaced the “New report” modal with a dedicated page for creating reports.
|
||
- Added a full Create Report page with support for future expansion of report options.
|
||
- Implemented month-based date selection with clickable days and separate time inputs.
|
||
- Added quick-select options for:
|
||
- First day of the current month
|
||
- First day of the last month
|
||
- Added the ability to select a customer for which the report is generated.
|
||
- Extended reporting to support generating reports for multiple customers in a single report.
|
||
- Updated report generation logic to handle single-customer, multi-customer, and all-customer scopes.
|
||
- Prepared reporting output for use cases such as account management and operations-wide overviews.
|
||
|
||
---
|
||
|
||
## v20260101-03-run-checks-page-guide-text
|
||
|
||
- Added a workflow guide to the Run Checks page explaining its purpose in daily operational triage.
|
||
- Emphasized that the main objective is to keep the Run Checks page as empty as possible.
|
||
- Clarified that every run must be marked as reviewed to demonstrate that backups are actively checked.
|
||
- Explicitly stated that after adding a ticket number or remark, the run must still be marked as reviewed.
|
||
- Explained the role of the resolved status within the Run Checks workflow.
|
||
- Placed the guide directly on the Run Checks page (no popup), aligned with the dashboard explanation style.
|
||
|
||
---
|
||
|
||
## v20260101-04-run-checks-guide-layout-fix
|
||
|
||
- Moved the Run Checks workflow guide into the main page content so it aligns with the left edge of the table.
|
||
- Reduced vertical spacing below the guide to remove excessive empty space before the Run Checks table.
|
||
- Ensured the guide follows the same layout and alignment as the existing Run Checks page elements.
|
||
- Applied layout-only changes without modifying any functional behavior.
|
||
|
||
---
|
||
|
||
## v20260101-05-run-checks-shift-multiselect
|
||
|
||
- Added support for selecting multiple rows on the Run Checks page using Shift-click.
|
||
- Users can now select a continuous range of checkboxes by holding Shift and clicking another row.
|
||
- Improves efficiency when reviewing or updating multiple checks at once.
|
||
|
||
---
|
||
|
||
## v20260101-06-run-checks-shift-multiselect-fix
|
||
|
||
- Fixed Shift-click behavior on the Run Checks page to properly select a range of rows via checkboxes.
|
||
- Prevented default browser text selection when using Shift during checkbox selection.
|
||
- Implemented tracking of the last selected checkbox to enable continuous range selection.
|
||
- Ensured multiselect only applies to checkbox interactions and not table row text.
|
||
|
||
---
|
||
|
||
## v20260101-07-run-checks-shift-multiselect-delegation-fix
|
||
|
||
- Reworked Shift-click multiselect on the Run Checks page using event delegation.
|
||
- Ensured checkbox range selection works correctly with dynamically rendered table rows.
|
||
- Disabled default browser text selection when using Shift during checkbox interaction.
|
||
- Applied Gmail-style range selection logic for consistent multi-row selection behavior.
|
||
|
||
---
|
||
|
||
## v20260101-08-run-checks-shift-multiselect-selection-retain
|
||
|
||
- Fixed Shift-click multi-select on the Run Checks page so the initial checkbox selection is preserved when selecting additional rows with Shift.
|
||
- Made Shift range selection use the checkbox pre-click state to prevent unintended double-toggles across browsers.
|
||
|
||
---
|
||
|
||
## v20260101-09-run-checks-shift-multiselect-range-highlight-fix
|
||
|
||
### Changed
|
||
- Fixed shift-click multi-select behavior on the Run Checks page to include the clicked row in the selection range.
|
||
- Corrected an off-by-one issue where selection previously stopped one row above the clicked item.
|
||
- Added visual highlighting for all rows that are selected via checkmarks to clearly indicate active selection.
|
||
|
||
---
|
||
|
||
## v20260101-10-run-checks-shift-multiselect-last-row-checkbox-fix
|
||
|
||
### Fixed
|
||
- Fixed an issue on the Run Checks page where the last row in a shift-selected range was visually highlighted but its checkbox was not checked.
|
||
- Ensured checkbox state and row highlight state stay fully in sync for all rows in a shift multi-selection.
|
||
- Corrected selection logic so every row within the calculated range is consistently selected and marked.
|
||
|
||
================================================================================================================================================
|
||
## v0.1.14
|
||
|
||
### Daily Jobs
|
||
- Introduced a consistent, case-insensitive multi-level sort order for the Daily Jobs overview: Customer → Backup Software → Backup Type → Job Name.
|
||
- Fixed backend ordering issues to ensure server-side data no longer overrides the intended sort logic.
|
||
- Ensured sorting is applied before serialization so the UI always reflects the correct order.
|
||
- Improved predictability and readability of job listings across environments.
|
||
|
||
### Veeam Backup for Microsoft 365
|
||
- Improved parsing of overall warning messages to correctly extract and display permission- and role-related issues.
|
||
- Added support for combined permission and role warnings in M365 reports.
|
||
- Ensured detailed permission warnings take precedence over generic “X of X objects processed” messages.
|
||
- Fixed incorrect overall message selection and filtered out misleading banner fragments.
|
||
- Resolved an indentation error in the parser that caused backend startup failures, restoring stability.
|
||
|
||
### Overrides – Configuration and Matching
|
||
- Replaced free-text inputs with dropdowns for Backup Software and Backup Type in Overrides, including:
|
||
- Alphabetical sorting
|
||
- Preselection of existing values
|
||
- A global option at the top of each dropdown
|
||
- Fixed PostgreSQL compatibility issues by replacing DISTINCT queries with GROUP BY while preserving case-insensitive sorting.
|
||
- Ensured Overrides endpoints no longer crash due to invalid query constructions.
|
||
|
||
### Overrides – Application, Editing, and Deletion
|
||
- Made newly created overrides apply immediately and retroactively to all unreviewed runs by default.
|
||
- Added full support for editing existing overrides and reapplying changes to unreviewed runs.
|
||
- Restricted override deletion to Admin users and ensured proper reprocessing after removal.
|
||
- Fixed datetime handling in override edit flows so unchanged values are preserved and NULL constraint violations are avoided.
|
||
- Ensured Admin users always see delete actions by consistently passing permission flags to the UI.
|
||
|
||
### Overrides – Matching Logic Improvements
|
||
- Extended override matching to use persisted run_object_links joined with customer_objects instead of legacy or non-existent relationships.
|
||
- Improved global override matching by resolving backup software and type from MailMessage data when missing on jobs.
|
||
- Added support for matching against object-level error messages as well as run-level remarks.
|
||
- Ensured all override matching remains case-insensitive and consistent across run-level and object-level evaluations.
|
||
|
||
### Overrides – UI Indicators and Reporting
|
||
- Introduced a blue status indicator for runs and jobs where overrides are applied.
|
||
- Updated status labels to display “Success (override)” for clearer distinction without changing canonical stored statuses.
|
||
- Added persistent override reporting metadata to job runs, including applied override ID, level, and reason.
|
||
- Ensured dashboards, Daily Jobs, Run Checks, and popups correctly propagate and display override-based success states.
|
||
- Fixed multiple UI rendering issues so overridden runs are no longer misclassified as warnings or missed jobs.
|
||
|
||
### Daily Jobs Popups
|
||
- Fixed popup loading failures and backend unpacking errors related to override handling.
|
||
- Ensured popup details consistently load correct run data.
|
||
- Aligned popup override detection and status coloring with Run Checks and Daily Jobs overviews.
|
||
|
||
---
|
||
|
||
## v0.1.13
|
||
|
||
This release focuses on improving visibility and consistency of Tickets and Remarks across Run Checks and Job Details, alongside several UI fixes and backend stability improvements.
|
||
|
||
### Highlights
|
||
- Added clear visual indicators for active Tickets and Remarks in the Run Checks overview.
|
||
- Enhanced Job Details and Job History to display actual ticket numbers and related remark messages, both in tables and popups.
|
||
- Improved navigation consistency by adding direct “Job page” links for Tickets and Remarks.
|
||
|
||
### Improvements
|
||
- Job History popups now reliably show associated ticket numbers and remark content.
|
||
- Backend job history data is enriched to support consistent UI rendering.
|
||
- Missed-run detection now includes a ±1 hour tolerance window and respects the configured UI timezone.
|
||
- Run Checks UI is simplified by hiding last-reviewed columns (data is still retained in the backend).
|
||
|
||
### Fixes
|
||
- Resolved a backend indentation issue that caused Gunicorn startup failures.
|
||
- Made frontend parsing of ticket/remark data more robust against malformed or unexpected payloads.
|
||
- Fixed JSON encoding issues in HTML data attributes to prevent popup rendering errors.
|
||
|
||
### Changelog Update
|
||
- Simplified the changelog by removing “Current Version” and “In testing” sections.
|
||
- The changelog now only shows completed changes.
|
||
|
||
---
|
||
|
||
## v0.1.12
|
||
|
||
### Dashboard & UI
|
||
- Corrected dashboard counters so **Expected**, **Missed**, and **Success (override)** statuses are shown accurately.
|
||
- Added dedicated counters for Expected and Success (override).
|
||
- Fixed layout issues on the Inbox dashboard tiles and improved label wrapping.
|
||
- Added safe timezone fallbacks to prevent incorrect status aggregation.
|
||
- Restored missing status icons and symbols across Dashboard and Daily Jobs views.
|
||
- Cleaned up Job Details UI by removing redundant columns and clarifying schedule display.
|
||
- Extended Job History with weekday labels and review metadata (Admin-only visibility).
|
||
|
||
### Stability & Reliability
|
||
- Fixed a Gunicorn startup crash caused by incorrect Python indentation.
|
||
- Improved migration robustness for soft-delete columns to prevent startup 502 errors on busy databases.
|
||
- Prevented duplicate or unintended regeneration of reviewed “Missed” runs.
|
||
|
||
### Inbox & Mail Handling
|
||
- Introduced soft-delete for Inbox messages with full Admin restore capability.
|
||
- Added an Admin-only “Deleted mails” page with audit details (who/when).
|
||
- Added popup previews for deleted mails without requiring restore.
|
||
- Improved HTML mail handling by extracting content from HTML attachments when the body is empty.
|
||
- Added an Admin maintenance action to backfill HTML bodies from existing attachments.
|
||
|
||
### Feedback & Settings
|
||
- Changed Feedback behavior so resolved items remain visible until explicitly deleted.
|
||
- Restricted feedback deletion to Admin users only.
|
||
- Added a User Settings page allowing users to change their own password securely.
|
||
|
||
### Backup Parser Enhancements
|
||
- Improved Veeam parsing:
|
||
- Fixed Health Check Summary parsing.
|
||
- Normalized job names by stripping “(Retry)”.
|
||
- Added and refined License Key parsing with correct status detection and exclusions from scheduling logic.
|
||
- Added and expanded Synology support:
|
||
- Active Backup for Business (NL/EN).
|
||
- R-Sync (NL/EN).
|
||
- Account Protection notifications (informational, no scheduling).
|
||
- Added new parsers:
|
||
- R-Drive Image.
|
||
- Syncovery.
|
||
- Ensured correct handling of objects, statuses, and scheduling exclusions where applicable.
|
||
|
||
### Changelog
|
||
- Removed the “Planned” section from the Changelog.
|
||
- Future planning is now handled exclusively via the Feedback page.
|
||
|
||
---
|
||
|
||
## v0.1.11
|
||
|
||
### Stability & Bug Fixes
|
||
- Fixed multiple page crashes caused by missing imports after refactoring (Jobs, Feedback, Run Checks, Inbox, Daily Jobs).
|
||
- Resolved Jinja2 template errors and SQL/runtime issues related to timezone handling.
|
||
- Improved robustness by explicitly importing shared helpers to prevent NameError exceptions.
|
||
|
||
### Run Checks & Review Workflow
|
||
- Introduced a new **Run Checks** page to review job runs independently from Daily Jobs.
|
||
- Displays all unreviewed runs with no time-based filtering.
|
||
- Supports bulk review actions and per-job review via popups.
|
||
- Added admin-only features: show reviewed runs, unmark reviewed runs, reviewer metadata, and full audit logging.
|
||
- Enhanced popups to group runs per job, include missed runs, and show ticket/remark indicators.
|
||
- Added per-job and per-popup status summaries using visual indicators only.
|
||
|
||
### UI & Visual Consistency
|
||
- Unified all job and run status indicators to a single shape differentiated by color.
|
||
- Added a clear status legend to the Dashboard, including the new **Expected** state.
|
||
- Removed textual status labels across Daily Jobs and Run Checks for a cleaner UI.
|
||
- Improved table layouts and widened content areas for better use of 1080p screens.
|
||
- Ensured consistent indicator rendering across all pages.
|
||
|
||
### Timezone & Display Improvements
|
||
- Added a configurable timezone setting in Settings.
|
||
- Updated all frontend date/time rendering to use the configured timezone instead of UTC.
|
||
- Fixed offset issues and restored missing timestamps across multiple pages.
|
||
|
||
### Missed Runs Logic
|
||
- Refined missed run detection to rely only on historically received mail reports.
|
||
- Prevented synthetic or never-run schedules from generating false missed runs.
|
||
|
||
### Settings & Maintenance
|
||
- Stabilized **Delete all jobs** by adding schema-tolerant cleanup of all related foreign key references.
|
||
- Refactored the Settings page layout using accordions and cards for improved clarity.
|
||
- Improved alignment and usability of import/export and user management sections.
|
||
|
||
### Roles & Access Control
|
||
- Added support for multiple roles per user with an active role switcher.
|
||
- Fixed role-based menu rendering and ensured permissions are evaluated against the active role.
|
||
- Ensured role switching consistently redirects to the Dashboard.
|
||
|
||
### Theme & UX Fixes
|
||
- Fixed manual theme switching (Light/Dark/Auto) and ensured user preferences persist.
|
||
- Corrected Inbox EML download functionality by restoring the missing shared import.
|
||
|
||
Overall, this release significantly improves stability, review workflows, visual consistency, timezone correctness, and administrative reliability, while refining the operator experience and access control model.
|
||
|
||
---
|
||
|
||
## v0.1.10
|
||
|
||
### Performance & Stability
|
||
- Reworked **Re-parse all** to process inbox messages in controlled batches, preventing gateway and Gunicorn timeouts on large inboxes.
|
||
- Added execution time guards to stop processing before proxy limits are reached.
|
||
- Optimized job-matching queries and disabled session autoflush during batch operations to reduce database load.
|
||
- Ensured auto-approval and persistence logic only finalize after a full, successful re-parse cycle.
|
||
- Restored stable backend startup by fixing decorator ordering issues that caused 502 errors.
|
||
|
||
### Job Matching & Parsing
|
||
- Fixed approved job imports to persist `from_address`, ensuring correct matching during re-parse.
|
||
- Improved Veeam Backup Job parsing:
|
||
- Extracted and stored multi-line warnings/errors and object-level details with preserved line breaks.
|
||
- Ignored VM summary lines (e.g., “X of X VMs processed”) for overall status detection.
|
||
- Prevented incorrect overall warnings when issues are object-level only.
|
||
- Fixed regressions to ensure backup objects are consistently detected, stored, and displayed across all views.
|
||
|
||
### UI & UX Improvements
|
||
- Added EML download support for Job Details and Daily Jobs, with automatic availability handling and proper 404s when missing.
|
||
- Improved rendering to preserve line breaks (pre-wrap) in remarks, overall messages, and object details.
|
||
- Reduced visual clutter by moving overall status/messages out of tables and into context-specific popups.
|
||
- Standardized changelog version display by removing date suffixes.
|
||
- Reordered main navigation for better consistency.
|
||
|
||
### Daily Jobs & Status Accuracy
|
||
- Clarified Daily Jobs status logic:
|
||
- Introduced **Expected** for backups not yet due.
|
||
- Reserved **Missed** only for jobs past their final expected run time.
|
||
- Added last remark excerpts and ensured object details are visible in Daily Jobs popups.
|
||
|
||
### Tickets, Remarks & Overrides
|
||
- Introduced run-date–scoped ticket activity with `active_from_date`, ensuring accurate historical and current visibility.
|
||
- Implemented identical scoping for remarks, preserving visibility across runs even after resolution.
|
||
- Fixed resolve actions to redirect properly in the UI while keeping JSON responses for API/AJAX.
|
||
- Improved override handling so changes apply immediately to existing job runs with correct priority resolution.
|
||
|
||
### New Features
|
||
- Added a **Feedback** board with per-user upvoting, admin moderation (resolve/reopen, soft delete), database migrations, and navigation entry.
|
||
|
||
### Navigation
|
||
- Updated menu order to: Inbox, Customers, Jobs, Daily Jobs, Tickets, Overrides, Reports, Settings, Logging, Changelog, Feedback.
|
||
|
||
---
|
||
|
||
## v0.1.9
|
||
|
||
### Changelog System Improvements
|
||
- Added and maintained multiple **Completed** changelog entries (v0.1.2 through v0.1.8) with correct release dates.
|
||
- Ensured all existing Completed, Testing, and Planned changelog entries were preserved without loss.
|
||
- Migrated the Completed changelog from markdown-based content to a **structured, non-markdown format** aligned with the Planned section.
|
||
- Simplified changelog rendering logic to use explicit section titles and bullet handling instead of full markdown parsing.
|
||
- Standardized formatting across all versions for long-term maintainability and consistent UI rendering.
|
||
|
||
### Bug Fixes & Stability
|
||
- Fixed multiple backend **Python syntax and runtime errors** related to changelog definitions (missing commas, indentation issues, invalid list entries).
|
||
- Resolved rendering issues where markdown content was displayed as plain text or collapsed incorrectly.
|
||
- Restored application startup stability by fixing missing imports (`re`, `html`) and indentation errors in changelog-related routes.
|
||
|
||
### Refactoring & Maintainability
|
||
- Refactored a large `routes.py` file into multiple smaller route modules.
|
||
- Introduced a shared routes module for common imports, helpers, and access control.
|
||
- Fixed NameError issues after refactoring by explicitly importing underscored helper functions that are not included via wildcard imports.
|
||
- Ensured all split route modules retained full functional parity with the original implementation.
|
||
|
||
### Release Management Updates
|
||
- Moved versions through **Testing → Completed** states correctly:
|
||
- v0.1.7 marked as Completed (2025-12-23).
|
||
- v0.1.8 added as Completed (2025-12-24) and restored as Current Version.
|
||
- Testing advanced to v0.1.9.
|
||
- Updated v0.1.8 release notes to document consistent job-matching and auto-approval behavior across all mail processing flows.
|
||
- Verified no regressions in changelog structure or rendering after updates.
|
||
|
||
Overall, v20251225 focused on **hardening the changelog system**, improving backend stability, cleaning up technical debt in routing, and ensuring consistent, reliable release tracking across the application. :contentReference[oaicite:0]{index=0}
|
||
|
||
---
|
||
|
||
## v0.1.8
|
||
|
||
### Overview
|
||
This release focuses on making job matching and auto-approval behavior fully consistent across manual inbox actions, automatic mail imports, and the “Re-parse all” process. It also fixes a critical backend startup issue introduced in the re-parse logic.
|
||
|
||
### Key Changes
|
||
- Introduced a single, shared job-matching helper based on a full unique key:
|
||
- From address
|
||
- Backup software
|
||
- Backup type
|
||
- Job name
|
||
- Updated manual inbox approval to reuse existing jobs when the unique key matches, instead of relying on customer-only matching.
|
||
- Aligned inbox “Re-parse all” auto-approve logic with the same shared matching behavior.
|
||
- Fixed automatic mail import auto-approve so it correctly:
|
||
- Creates a JobRun
|
||
- Marks the mail as approved
|
||
- Moves the mail to history when a matching job exists
|
||
|
||
### Re-parse All Improvements
|
||
- Auto-approve is now executed during “Re-parse all”, not only on initial mail import.
|
||
- After re-parsing, all successfully parsed mails without a linked job are re-evaluated against existing jobs using the full unique key.
|
||
- When a matching active job with auto-approve enabled is found:
|
||
- The mail is automatically approved
|
||
- The mail is linked to the job
|
||
- The mail is moved to history
|
||
- A corresponding job run is created and shown in Job History
|
||
|
||
### Fixes
|
||
- Resolved an issue where “Re-parse all” previously only updated parse metadata and skipped auto-approve logic, causing historical mails not to appear in job history.
|
||
- Fixed a SyntaxError in the re-parse auto-approve logic that caused backend startup failures (Bad Gateway).
|
||
- Corrected try/except structure and indentation to ensure re-parse auto-approve runs safely per mail without breaking the overall process.
|
||
|
||
### Result
|
||
- Job matching and auto-approval behavior is now consistent across all mail processing flows.
|
||
- Historical mails are correctly linked to jobs and visible in job history.
|
||
- Backend stability during startup and re-parse operations is restored.
|
||
|
||
---
|
||
|
||
## v0.1.7
|
||
|
||
### Key Features
|
||
- Introduced **export and import functionality for approved jobs**, allowing approved job definitions to be migrated between clean installations via JSON.
|
||
- Import process automatically creates missing customers and updates existing jobs based on a unique job identity to prevent duplicates.
|
||
|
||
### Versioning & Changelog
|
||
- Promoted version **v0.1.7** from *Testing* to *Completed*.
|
||
- Introduced **v0.1.8** as the new *Testing* release.
|
||
- Updated the changelog structure and testing notes to reflect active export/import functionality.
|
||
|
||
### Parser Enhancements
|
||
- **Boxafe**
|
||
- Improved parsing for Shared Drives, Domain Accounts (Email, Contact, Drive, Calendar), and handling of *Warning* statuses.
|
||
- Corrected object detection logic, ensuring no false objects are created when jobs contain no object data.
|
||
- Removed object parsing for Shared Drives backups entirely.
|
||
- **Synology Hyper Backup**
|
||
- Added full support for Dutch notification emails.
|
||
- Improved status detection for Dutch phrasing.
|
||
- Confirmed that no objects are parsed for Hyper Backup jobs.
|
||
- **Veeam**
|
||
- Added support for **Scale-out Backup Repository (SOBR)** notifications, including storage capacity metrics suitable for logging and graphing.
|
||
- Added support for **Veeam Health Check** reports with correct object filtering to exclude summary-only entries.
|
||
|
||
### Job Approval & Auto-Approval Logic
|
||
- Significantly refined approved job matching logic to prevent cross-customer approvals.
|
||
- Improved auto-approve behavior during **Re-parse all**, Inbox reprocessing, and Graph imports.
|
||
- Enhanced resilience against case differences, whitespace, unicode characters, and hidden formatting issues.
|
||
- Iteratively refined normalization strategy:
|
||
- Ultimately simplified matching to rely primarily on a normalized **From address**, while ensuring parser-consistent values for Backup, Type, and Job Name.
|
||
- Ensured deterministic behavior during reprocessing by preventing mutation of message data.
|
||
|
||
### Stability Fixes
|
||
- Fixed multiple crashes and approval errors caused by undefined or incorrect job name handling.
|
||
- Resolved issues with duplicate job records (including `NULL` customer IDs) that previously blocked auto-approval.
|
||
- Ensured consistent JobRun creation and mail linking during automatic imports and re-parsing.
|
||
|
||
### Notes
|
||
- Due to changes in approval matching logic, **previously approved jobs are expected to be recreated** after these updates.
|
||
|
||
---
|
||
|
||
## v0.1.6
|
||
|
||
### Fixed
|
||
- Corrected auto-approve logic to ensure it is properly applied during automatic mail imports.
|
||
- Prevented the **Re-parse all** action from re-processing emails that were already approved.
|
||
- Ensured approved status is always respected and never overwritten during re-parsing or automatic imports.
|
||
- Fixed multiple Jinja2 `TemplateSyntaxError` issues in the base layout that caused 500 Internal Server Errors.
|
||
- Restored correct rendering of all pages affected by template errors, including Dashboard, Parsers, and Changelog.
|
||
- Resolved Changelog page rendering issues by fixing dictionary access in templates and avoiding conflicts with built-in methods.
|
||
|
||
### Added
|
||
- Introduced a centralized **Changelog** page containing:
|
||
- Active production version
|
||
- Testing version
|
||
- Planned / Todo items
|
||
- Completed changes
|
||
- Added the Changelog entry point to the main navigation.
|
||
- Applied a clear versioning convention, e.g. `v0.1.7 (v20251222-03)` for testing releases.
|
||
- Marked version `0.1.6` as the active production release.
|
||
|
||
### Planned
|
||
- Export and import of jobs to allow restoring approved jobs after a clean installation.
|
||
- Always register “New license key is not available” as an error.
|
||
- Support for a scale-out backup repository Cloud Connect Immutable parser.
|
||
- Ability to attach EML files to Daily Jobs and Job Details.
|
||
- Fix for Light/Dark theme switching so users can properly change themes.
|
||
- Restrict ticket creation and editing to Operator and Admin roles only.
|
||
|
||
### Known Bugs
|
||
- Emails that were previously approved remain in the Inbox instead of being removed, even though they appear auto-approved and linked to Jobs.
|
||
|
||
---
|
||
|
||
## v0.1.5
|
||
|
||
### Overview
|
||
This release focuses on restoring Microsoft Graph functionality, improving application reliability, and introducing a robust reset mechanism to allow a clean restart of the application state.
|
||
|
||
### Key Fixes
|
||
- Restored Microsoft Graph folder retrieval by fixing an incorrect import that caused a `ModuleNotFoundError`.
|
||
- Resolved failures in the automatic mail importer caused by `signal`-based timeout handling by replacing it with a thread-safe mechanism.
|
||
- Fixed backend startup crashes and Bad Gateway errors related to the automatic mail importer.
|
||
- Implemented missing backend logic required for automatic imports to function correctly.
|
||
|
||
### New Features
|
||
- Added an **Application Reset** option in the Settings page.
|
||
- Introduced a confirmation step to prevent accidental resets.
|
||
|
||
### Improvements & Changes
|
||
- Implemented full backend support for a complete application reset.
|
||
- Reset now clears all application data, including:
|
||
- Approved and pending jobs
|
||
- Imported and processed emails
|
||
- Daily job runs
|
||
- Logs
|
||
- User-defined settings (system defaults are preserved)
|
||
- Ensured database cleanup runs in the correct order to respect foreign key constraints.
|
||
- Aligned automatic mail import logic with the existing manual import flow for consistent behavior.
|
||
- Applied the automatic import cutoff date directly via a Microsoft Graph `$filter`, leaving older emails untouched in the inbox.
|
||
|
||
### Result
|
||
- Graph API functionality is fully restored.
|
||
- Automatic mail import runs reliably on its configured schedule.
|
||
- The application can now be safely reset to a clean, fresh-install state when needed.
|
||
|
||
---
|
||
|
||
## v0.1.4
|
||
|
||
This release focuses on improving backend stability, database reliability, and consistency in object parsing and mail handling.
|
||
|
||
### Key Changes
|
||
- Database migrations for tickets and remarks were stabilized by running each migration in its own transaction scope, preventing closed-connection errors during startup.
|
||
- Backend startup issues causing Gunicorn failures and 502 Bad Gateway errors were resolved.
|
||
- The title field was fully removed from tickets and remarks, simplifying both backend validation and UI forms to use only descriptive content.
|
||
- Manual mail imports were aligned with the **Re-parse all** behavior, ensuring immediate and consistent object detection.
|
||
- Object visibility on the Daily Jobs page was corrected for previously approved jobs.
|
||
- Manual imports were hardened against Microsoft Graph timeouts by adding DNS preflight checks and safely skipping message moves when Graph is unreachable.
|
||
|
||
### Improvements
|
||
- Eliminated `ResourceClosedError` exceptions during backend boot.
|
||
- Increased reliability of migrations and overall application startup.
|
||
- Ensured object parsing is consistently re-evaluated on every job run, with correct detection of added or removed objects.
|
||
- Prevented internal server errors and Gunicorn worker timeouts caused by long-running external Graph operations.
|
||
|
||
Overall, v0.1.4 significantly improves robustness, consistency, and fault tolerance across database migrations, job parsing, and manual mail imports.
|
||
|
||
---
|
||
|
||
## v0.1.3
|
||
|
||
### Logging & Stability
|
||
- Fixed logging persistence so log entries are consistently stored in the database.
|
||
- Resolved cases where certain log events were not stored due to object lifecycle handling.
|
||
- Improved reliability of log creation during background/asynchronous processes.
|
||
- Corrected log retrieval so stored logs are properly fetched and shown in the web UI.
|
||
- Added pagination to the logging overview (20 entries per page).
|
||
- Extended the logging view to show all available log fields and fixed missing columns in the UI.
|
||
|
||
### UI & Table Layout Improvements
|
||
- Improved the logging page usability by placing pagination controls at the top and keeping them available at the bottom.
|
||
- Increased logging table width to better fit a 1080p layout.
|
||
- Fixed column layout so all columns remain in consistent positions regardless of content length.
|
||
- Updated status styling to use colored text only within the status column (Success, Warning, Error/Failed, Missed), including clear differentiation for overrides.
|
||
- Fixed JavaScript errors in the Daily Jobs popup that prevented rendering.
|
||
|
||
### Jobs & Daily Jobs Enhancements
|
||
- Standardized default sorting for both Jobs and Daily Jobs tables (Customer → Backup → Type → Job name).
|
||
- Persisted the Daily Jobs start date setting in the database and ensured it reloads correctly in the Settings UI.
|
||
- Corrected missed-status calculation to start from the configured Daily Jobs start date.
|
||
- Improved Daily Jobs table readability:
|
||
- Moved the number of runs into a dedicated Runs column.
|
||
- Prevented layout shifting caused by variable text in the Last result column.
|
||
- Restored the original Runs visual representation and adjusted placement for better readability.
|
||
- Reduced the Last result column width so only status text is shown and the Runs column remains visible.
|
||
|
||
### Parsing & Data Normalization
|
||
- Stripped retry suffixes like “(Retry 1)”, “(Retry 2)”, etc. from job names so retries don’t create separate job identities.
|
||
- Extended the NAKIVO parser to support VMware Replication job emails:
|
||
- Detects job type (Backup vs Replication) based on email content.
|
||
- Improves replication job name parsing.
|
||
- Extracts VM names from the Objects/Virtual Machines section.
|
||
- Maps overall job status correctly for replication reports.
|
||
|
||
### Tickets & Remarks (New Feature Area)
|
||
- Added database schema for globally unique, persistent tickets linked to job runs for long-term reporting:
|
||
- New tables: tickets, ticket_scopes, ticket_job_runs.
|
||
- Ticket codes are globally unique using format TYYYYMMDD.NNNN.
|
||
- Tickets require at least one customer scope.
|
||
- Added database schema for remarks with scoped attachment and persistent linkage to job runs:
|
||
- New tables: remarks, remark_scopes, remark_job_runs.
|
||
- Implemented a new Tickets page with tabbed navigation (Tickets / Remarks):
|
||
- Overviews with filtering.
|
||
- Detail views showing scopes, linked job runs, and actions.
|
||
- Added indicators in Daily Jobs to show active tickets and/or remarks.
|
||
- Added ticket/remark management in the job run popup (create, edit, resolve).
|
||
- Introduced consistent icons for tickets, remarks, actions, and status indicators.
|
||
- Added backend API endpoints for listing/creating/updating/resolving/linking tickets and remarks, plus an endpoint to retrieve all alerts for a specific job run.
|
||
|
||
---
|
||
|
||
## v0.1.2
|
||
|
||
This release focuses on improved parser support, more robust data cleanup, and a fully reworked in-app logging and object persistence system.
|
||
|
||
### Parser & support
|
||
- Extended the Synology Hyper Backup mail parser with proper recognition of Strato HiDrive backups.
|
||
- Added support for parsing job names from the “Backup Task:” field for Strato HiDrive.
|
||
- Correct handling of successful runs without listed objects.
|
||
- Added a Strato HiDrive example to the parser templates for validation and reference.
|
||
|
||
### Administration & cleanup
|
||
- Introduced an admin-only action to delete all jobs in a single operation.
|
||
- Ensured related run mails are moved back to the Inbox when jobs are deleted.
|
||
- Fixed foreign key constraint issues by enforcing the correct deletion order:
|
||
- run_object_links first
|
||
- job_object_links next
|
||
- then job runs and jobs
|
||
- Stabilized the “Delete all jobs” action to fully clean up all related data.
|
||
|
||
### Logging (reworked)
|
||
- Moved logging away from container/stdout logging to in-app logging.
|
||
- Introduced AdminLog-based logging for:
|
||
- Mail import
|
||
- Auto-approval
|
||
- Manual job approval
|
||
- Job deletion
|
||
- Added detailed logging per imported and auto-approved email.
|
||
- Added summary logging at the end of each mail import run.
|
||
- Ensured all relevant events are logged exclusively via the AdminLog table and visible on the Logging page.
|
||
|
||
### Object persistence
|
||
- Restored persistence of parsed objects after manual approval of inbox mails.
|
||
- Restored persistence of parsed objects during auto-approval (reparse-all).
|
||
- Ensured objects from approved mails are:
|
||
- Upserted into `customer_objects`
|
||
- Linked to jobs via `job_object_links` (with first/last seen tracking)
|
||
- Linked to runs via `run_object_links` (with status and error details)
|
||
- Added centralized helper logic to ensure consistent object persistence.
|
||
- Added an admin-only maintenance action to backfill missing object links for already approved runs.
|
||
- Object persistence failures no longer block mail approval.
|
||
- Daily Jobs and Run detail views correctly display objects again for both new and historical runs after backfilling. |