573 lines
33 KiB
Markdown
573 lines
33 KiB
Markdown
## v20260103-01-reports-jobs-delete
|
||
|
||
- Changed report output to aggregate results per job instead of listing individual objects, making reports more suitable for high-level job status review.
|
||
- Updated report generation logic to build snapshots and summaries based on job runs.
|
||
- Added the ability to delete reports, including removal of all associated report data.
|
||
|
||
|
||
================================================================================================================================================
|
||
|
||
## v0.1.15
|
||
|
||
This release focused on improving operational clarity and usability by strengthening dashboard guidance, introducing a solid reporting foundation, and significantly refining the Run Checks review workflow for daily accountability.
|
||
|
||
### Dashboard & User Guidance
|
||
- Added a comprehensive explanatory section to the Dashboard describing how Backupchecks collects, normalizes, and evaluates backup results.
|
||
- Clarified dashboard counters, job statuses, overrides, and operational workflows.
|
||
- Introduced clear guidance emphasizing the goal of keeping the Run Checks page empty or near-empty as proof of daily review and accountability.
|
||
- Positioned Backupchecks explicitly as a monitoring and validation layer that complements existing backup software.
|
||
|
||
### Navigation & Usability
|
||
- Implemented automatic redirection to the Dashboard on a user’s first visit of each day, improving daily visibility of system status.
|
||
- Refactored the Settings area into clearly separated sections (General, Imports, Users, etc.) for better usability and structure.
|
||
|
||
### Dashboard News
|
||
- Added a per-user Dashboard News section with read/unread tracking.
|
||
- Enabled full admin management of news items (create, edit, delete, pin, severity, publish window).
|
||
- Provided admin insight into read statistics and the ability to reset read status.
|
||
|
||
### Reporting – Foundation
|
||
- Introduced the initial reporting framework focused on raw, immutable data for auditability.
|
||
- Added object-based reporting across multiple jobs with aggregated success, warning, failed, missed, and override metrics.
|
||
- Prepared the data model for CSV export, future PDF generation, scheduling, and email delivery.
|
||
- Enabled reporting access for admin, operator, and reporter roles in phase 1.
|
||
|
||
### Reports UI & Generation
|
||
- Added an initial Reports UI to define, generate, and manage reports.
|
||
- Enabled raw data preview directly in the UI with pagination support.
|
||
- Implemented backend endpoints to generate and retrieve report data on demand.
|
||
- Replaced the “New report” modal with a dedicated Create Report page.
|
||
- Added month-based date selection, quick-select options, and multi-customer reporting support.
|
||
- Enabled actual report generation while keeping scheduling as a non-functional placeholder.
|
||
|
||
### Run Checks – Multi-Select Improvements
|
||
- Added Shift-click multi-selection for efficient bulk review.
|
||
- Iteratively fixed edge cases including:
|
||
- Off-by-one range selection issues
|
||
- Checkbox and row highlight desynchronization
|
||
- Last-row selection bugs
|
||
- Browser text selection interference
|
||
- Improved “Select all” checkbox behavior:
|
||
- Clearing selection when indeterminate
|
||
- Correctly resetting from the indeterminate state
|
||
- Ensuring consistent mouse and keyboard interaction
|
||
|
||
### Overall Result
|
||
- Improved clarity, accountability, and daily workflow guidance across the application.
|
||
- Established a solid, extensible reporting foundation.
|
||
- Significantly enhanced usability and reliability of the Run Checks review process.
|
||
|
||
---
|
||
|
||
## 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. |