diff --git a/.last-branch b/.last-branch index 41fca5a..be85505 100644 --- a/.last-branch +++ b/.last-branch @@ -1 +1 @@ -v20260101-14-run-checks-select-all-indeterminate-stuck-dash-fix +v20260101-15-changelog-0-1-15 diff --git a/containers/backupchecks/src/backend/app/main/routes_changelog.py b/containers/backupchecks/src/backend/app/main/routes_changelog.py index 3b1ed78..9ffc872 100644 --- a/containers/backupchecks/src/backend/app/main/routes_changelog.py +++ b/containers/backupchecks/src/backend/app/main/routes_changelog.py @@ -8,11 +8,116 @@ def changelog_page(): changelog = { "completed_summary": [ - - - - - + { + "version": "0.1.15", + "overview": [ + "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.", + ], + "categories": [ + { + "category": "Dashboard & User Guidance", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + { + "category": "Navigation & Usability", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + { + "category": "Dashboard News", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + { + "category": "Reporting – Foundation", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + { + "category": "Reports UI & Generation", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + { + "category": "Run Checks – Multi-Select Improvements", + "items": [ + { + "title": None, + "details": [ + "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", + ], + } + ], + }, + { + "category": "Overall Result", + "items": [ + { + "title": None, + "details": [ + "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.", + ], + } + ], + }, + ], + }, { "version": "0.1.14", "overview": [ diff --git a/docs/changelog.md b/docs/changelog.md index cd44692..6c13ce7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,214 +1,59 @@ -## 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. - ---- - -## v20260101-11-run-checks-select-all-indeterminate-clear-selection - -- Fixed the Run Checks header “select all” checkbox behavior: when the checkbox is in an indeterminate (partial selection) state, clicking it now clears all selected rows instead of selecting all rows. -- Prevented unintended full selection when toggling from an indeterminate state. -- Ensured consistent behavior between mouse click and keyboard (Space) interaction on the header checkbox. - ---- - -## v20260101-12-run-checks-select-all-indeterminate-clear-selection-fix - -- Fixed the Run Checks header “select all” checkbox: when it is indeterminate (partial selection), clicking it now clears the current selection instead of selecting all rows. -- Implemented click interception before the browser toggles the checkbox state to prevent unintended full selection from the indeterminate state. -- Added consistent keyboard behavior: pressing Space on the indeterminate header checkbox now also clears the selection. - ---- - -## v20260101-13-run-checks-select-all-indeterminate-state-fix - -- Fixed the “Select all” checkbox behavior on the Run Checks page. -- Resolved an issue where the checkbox remained in the indeterminate (`-`) state after clearing the selection. -- Ensured that after clearing all selected rows, the “Select all” checkbox can again be used to select all rows normally. -- Improved synchronization between individual row selection and the global “Select all” checkbox state. - ---- - -## v20260101-14-run-checks-select-all-indeterminate-stuck-dash-fix - -- Fixed an issue on the Run Checks page where the “Select all” checkbox could remain visually stuck in the indeterminate (`-`) state after clearing the current selection. -- Ensured the header checkbox state is re-synced after the click/change cycle so it correctly reflects the row selection state. ================================================================================================================================================ + +## 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 diff --git a/version.txt b/version.txt index 600c007..7c32f2d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v0.1.14 +v0.1.15