"This release significantly expands and stabilizes the reporting functionality, focusing on configurability, correctness, and richer output formats..",
],
"categories":[
{
"category":"Key Highlights",
"items":[
{
"title":None,
"details":[
"Reports are now job-aggregated instead of object-level, making them suitable for high-level status reviews.",
"Full report lifecycle management was added, including secure deletion and reliable refresh behavior.",
- Changed report output to aggregate results per job instead of listing individual objects, making reports more suitable for high-level job status review.
- Introduced configurable report definitions to support advanced reporting options.
- Reports can now store selected columns, chart preferences, filters, and layout settings as structured configuration data.
- Extended Reports API to read and write report configuration data.
### Added
- Database migration adding `report_config` field to report definitions.
- New API endpoint to expose available report columns grouped by category for report configuration.
- New statistics endpoint providing aggregated KPI data and chart-ready datasets for reports.
- Foundation for graphical report rendering (charts and summaries) alongside tabular data.
### Fixed
- Ensured report deletion flow remains compatible with extended report definition handling.
---
## v20260103-08-reports-stats-endpoint-fix
- Fixed application startup crash caused by duplicate registration of the `api_reports_stats` endpoint.
- Removed the redundant `/api/reports/<report_id>/stats` route definition to ensure the endpoint is registered only once.
- Restored proper Gunicorn boot sequence by resolving Flask endpoint name collision.
---
## v20260103-09-reports-column-selection-ui
- Added extended report configuration options when creating a report, allowing users to select which columns are included.
- Introduced grouped column selection for Summary and Snapshot views, aligned with the reporting proposal.
- Implemented drag-and-drop ordering for selected report columns.
- Persisted selected columns per report so configurations are reused consistently.
- Updated report rendering to dynamically display data based on the configured columns instead of fixed defaults.
- Extended reports columns metadata endpoint to support configurable and future report metrics.
---
## v20260103-10-reports-summary-columns-metadata
- Added missing column definitions for **Summary** reports to the reports columns metadata endpoint.
- Enabled column selection in the **Report content** UI for Summary-based reports.
- Corrected the **Missed** column mapping to use `missed_count` for Summary views instead of snapshot-specific fields.
- Ensured column metadata is consistent between backend and frontend to allow future graphical output.
---
## v20260103-11-reports-view-raw-columns-fix
### Changed
- Fixed the **View raw** action in Reports by correcting a broken JavaScript function call that prevented raw data from loading.
- Extended the Reports backend to always include column metadata (`columns_meta`) in the response.
- Updated the Reports UI to use embedded column metadata as a fallback, ensuring column selection is available even when an API fetch fails.
- Improved column metadata loading logic to only fetch metadata when it is not already present in the report payload.
---
## v20260103-12-reports-columns-selector-init-fix
- Fixed /api/reports/columns to always return the column metadata payload (removed incorrect indentation that prevented a response for authorized users).
- Ensured the “New report” page always initializes the column selector by providing the initial customers payload to the frontend (prevents JS initialization issues that could stop the column lists from rendering).
---
## v20260103-13-reports-edit-and-view-raw-fix
- Added the ability to edit existing reports via a dedicated edit view.
- Reused the report configuration form for both creating and editing reports.
- Fixed the "View raw" functionality so raw report data can be viewed again.
- Resolved an HTML rendering issue causing an extra ">" character above the Name column.
- Improved the reports list to correctly display the report type instead of incorrect metadata.
---
## v20260103-14-reports-percentage-2-decimals
- Limited percentage values in reports to a maximum of two decimal places.
- Applied consistent rounding for percentage fields across:
- Report summary views
- KPI and trend data outputs
- CSV export generation
- Improved readability and consistency of reported percentage values.
---
## v20260103-15-reports-customer-column
- Added **Customer** as a selectable column in report configuration.
- Ensured customer name is included and visible when multiple customers are selected.
- Updated summary and raw data views to correctly display customer information across multi-customer reports.
- Fixed **Total runs** calculation to only include the selected run statuses. Non-selected statuses (such as missed runs) are no longer counted.
- Aligned **daily trend totals** with the selected status columns to ensure consistency with success rate calculations.
- Fixed **Jobs table column headers** so the correct labels are displayed instead of placeholder keys (e.g. `{jobs_th}`).
- Improved **Jobs table sorting** to follow a logical hierarchy: Customer > Backup software > Backup type > Job name > Object, depending on the selected columns.
- Fixed “Total runs” to only sum the selected status counters (e.g. excluding missed when it’s not selected), instead of using the raw total that included missed runs.
- Removed the duplicate “Text” column from the Jobs report view by excluding `object_name` from the Jobs column set and Jobs defaults.
- Added the missing `object_name` column to the available report columns and labeled it as "Job name" for Summary/Snapshot/Jobs.
- Fixed column selection behavior so an explicitly saved empty selection stays empty (defaults are only applied when the view has no configured selection).
- Updated the raw data table and HTML export to show a clear “No columns selected” message when all columns are disabled, instead of still rendering default data.
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.