"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.
- 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.
---
## v20260103-02-reports-delete
- Added the ability to delete reports from the Reports overview.
- Introduced a Delete action per report, available to authorized roles (admin/operator/reporter).
- Implemented backend deletion handling and automatic refresh of the reports list after removal.
---
## v20260103-03-reports-loading-fix
- Fixed an issue where the Reports page remained stuck on “Loading…”.
- Ensured reports are rendered correctly when the page is loaded, even if the client-side API call fails.
- Fixed customer selection components on the Reports pages that could remain in a loading state.
- Improved robustness of report data handling to prevent rendering issues caused by invalid or missing customer references.
---
## v20260103-04-reports-default-period-fix
- Fixed a NameError on the Reports page by adding the missing get_default_report_period helper.
- Ensured a default reporting period is always available to prevent the Reports view from failing during load.
---
## v20260103-05-reports-date-import-fix
- Fixed a crash on the Reports page caused by missing datetime imports.
- Added the required `date` and `timedelta` imports to prevent a NameError when determining the default report period.
---
## v20260103-06-reports-delete-button-fix
- Fixed an issue where the Delete button on the Reports page did not perform any action.
- Resolved a JavaScript block/brace error that prevented the delete handler from executing.
- Ensured the DELETE API call is correctly triggered and the reports list is refreshed after deletion.
- Restored correct CSS classes for the server-rendered Delete button to ensure proper binding.
- 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.
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.