Fix: rename 'items' to 'changes' to avoid dict.items() conflict

This commit is contained in:
Ivo Oskamp 2026-02-05 23:02:28 +01:00
parent f51a511e64
commit a3b4bc939d
2 changed files with 32 additions and 32 deletions

View File

@ -14,7 +14,7 @@ CHANGELOG = [
"subsections": [ "subsections": [
{ {
"subtitle": "Settings and Configuration", "subtitle": "Settings and Configuration",
"items": [ "changes": [
"Complete Autotask integration settings in Settings → Integrations", "Complete Autotask integration settings in Settings → Integrations",
"Environment selection (Sandbox/Production) with automatic zone discovery", "Environment selection (Sandbox/Production) with automatic zone discovery",
"API authentication with fallback support for different tenant configurations", "API authentication with fallback support for different tenant configurations",
@ -27,7 +27,7 @@ CHANGELOG = [
}, },
{ {
"subtitle": "Customer Company Mapping", "subtitle": "Customer Company Mapping",
"items": [ "changes": [
"Explicit Autotask company mapping for customers using ID-based linkage", "Explicit Autotask company mapping for customers using ID-based linkage",
"Company search with auto-suggestions when opening unmapped customers", "Company search with auto-suggestions when opening unmapped customers",
"Automatically populates search box with customer name and displays matching Autotask companies", "Automatically populates search box with customer name and displays matching Autotask companies",
@ -38,7 +38,7 @@ CHANGELOG = [
}, },
{ {
"subtitle": "Ticket Creation and Management", "subtitle": "Ticket Creation and Management",
"items": [ "changes": [
"Create Autotask tickets directly from Run Checks page", "Create Autotask tickets directly from Run Checks page",
"Automatic ticket number assignment and storage", "Automatic ticket number assignment and storage",
"Link existing Autotask tickets to job runs", "Link existing Autotask tickets to job runs",
@ -51,7 +51,7 @@ CHANGELOG = [
}, },
{ {
"subtitle": "Ticket Resolution and Status Management", "subtitle": "Ticket Resolution and Status Management",
"items": [ "changes": [
"Conditional ticket status updates based on time entries:", "Conditional ticket status updates based on time entries:",
" - Tickets without time entries: automatically closed (status 5 - Complete)", " - Tickets without time entries: automatically closed (status 5 - Complete)",
" - Tickets with time entries: remain open for time tracking continuation", " - Tickets with time entries: remain open for time tracking continuation",
@ -64,7 +64,7 @@ CHANGELOG = [
}, },
{ {
"subtitle": "Technical Implementation", "subtitle": "Technical Implementation",
"items": [ "changes": [
"Full-featured Autotask REST API client (`integrations/autotask/client.py`)", "Full-featured Autotask REST API client (`integrations/autotask/client.py`)",
"Zone information discovery and endpoint resolution", "Zone information discovery and endpoint resolution",
"Robust authentication handling with header-based fallback for sandbox environments", "Robust authentication handling with header-based fallback for sandbox environments",
@ -81,7 +81,7 @@ CHANGELOG = [
{ {
"title": "User Interface Improvements", "title": "User Interface Improvements",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Search boxes now clear automatically when opening modals (Run Checks Link existing, Customer mapping)", "Search boxes now clear automatically when opening modals (Run Checks Link existing, Customer mapping)",
"Auto-search for similar company names when mapping unmapped customers", "Auto-search for similar company names when mapping unmapped customers",
"Cross-company ticket search when using ticket numbers (e.g., \"T20260205.0001\")", "Cross-company ticket search when using ticket numbers (e.g., \"T20260205.0001\")",
@ -95,7 +95,7 @@ CHANGELOG = [
{ {
"title": "Bug Fixes and Stability", "title": "Bug Fixes and Stability",
"type": "fixed", "type": "fixed",
"items": [ "changes": [
"Fixed Autotask REST API base URL casing (ATServicesRest/V1.0)", "Fixed Autotask REST API base URL casing (ATServicesRest/V1.0)",
"Fixed reference data retrieval using correct picklist endpoints", "Fixed reference data retrieval using correct picklist endpoints",
"Fixed authentication fallback for sandbox-specific behavior", "Fixed authentication fallback for sandbox-specific behavior",
@ -117,7 +117,7 @@ CHANGELOG = [
{ {
"title": "Documentation", "title": "Documentation",
"type": "documentation", "type": "documentation",
"items": [ "changes": [
"Added comprehensive Autotask REST API contract documentation (`docs/autotask_rest_api.md`)", "Added comprehensive Autotask REST API contract documentation (`docs/autotask_rest_api.md`)",
"Created functional design living document for integration architecture", "Created functional design living document for integration architecture",
"Documented ticket lifecycle, status management, and time entry considerations", "Documented ticket lifecycle, status management, and time entry considerations",
@ -134,7 +134,7 @@ CHANGELOG = [
{ {
"title": "Changelog Rendering and Documentation Accuracy", "title": "Changelog Rendering and Documentation Accuracy",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Updated the Changelog route to render remote Markdown content instead of plain text", "Updated the Changelog route to render remote Markdown content instead of plain text",
"Enabled full Markdown parsing so headings, lists, links, and code blocks are displayed correctly", "Enabled full Markdown parsing so headings, lists, links, and code blocks are displayed correctly",
"Ensured the changelog always fetches the latest version directly from the source repository at request time", "Ensured the changelog always fetches the latest version directly from the source repository at request time",
@ -144,7 +144,7 @@ CHANGELOG = [
{ {
"title": "Mail Rendering and Browser Compatibility", "title": "Mail Rendering and Browser Compatibility",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Forced a light color scheme for embedded mail content to prevent Microsoft Edge from applying automatic dark mode styling", "Forced a light color scheme for embedded mail content to prevent Microsoft Edge from applying automatic dark mode styling",
"Added explicit `color-scheme` and `forced-color-adjust` rules so original mail CSS is respected", "Added explicit `color-scheme` and `forced-color-adjust` rules so original mail CSS is respected",
"Ensured consistent mail readability across Edge and Firefox", "Ensured consistent mail readability across Edge and Firefox",
@ -154,7 +154,7 @@ CHANGELOG = [
{ {
"title": "Run Checks Visibility and Consistency", "title": "Run Checks Visibility and Consistency",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Added support for displaying the overall remark (overall_message) directly on the Run Checks page", "Added support for displaying the overall remark (overall_message) directly on the Run Checks page",
"Ensured consistency between Run Checks and Job Details, where the overall remark was already available", "Ensured consistency between Run Checks and Job Details, where the overall remark was already available",
"Improved operator visibility of high-level run context without requiring navigation to job details" "Improved operator visibility of high-level run context without requiring navigation to job details"
@ -163,7 +163,7 @@ CHANGELOG = [
{ {
"title": "Initial Setup and User Existence Safeguards", "title": "Initial Setup and User Existence Safeguards",
"type": "fixed", "type": "fixed",
"items": [ "changes": [
"Fixed an incorrect redirect to the \"Initial admin setup\" page when users already exist", "Fixed an incorrect redirect to the \"Initial admin setup\" page when users already exist",
"Changed setup detection logic from \"admin user exists\" to \"any user exists\"", "Changed setup detection logic from \"admin user exists\" to \"any user exists\"",
"Ensured existing environments always show the login page instead of allowing a new initial admin to be created", "Ensured existing environments always show the login page instead of allowing a new initial admin to be created",
@ -173,7 +173,7 @@ CHANGELOG = [
{ {
"title": "Role-Based Access Control and Menu Restrictions", "title": "Role-Based Access Control and Menu Restrictions",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Restricted the Reporter role to only access Dashboard, Reports, Changelog, and Feedback", "Restricted the Reporter role to only access Dashboard, Reports, Changelog, and Feedback",
"Updated menu rendering to fully hide unauthorized menu items for Reporter users", "Updated menu rendering to fully hide unauthorized menu items for Reporter users",
"Adjusted route access to ensure Feedback pages remain accessible for the Reporter role", "Adjusted route access to ensure Feedback pages remain accessible for the Reporter role",
@ -183,7 +183,7 @@ CHANGELOG = [
{ {
"title": "Override Matching Flexibility and Maintainability", "title": "Override Matching Flexibility and Maintainability",
"type": "feature", "type": "feature",
"items": [ "changes": [
"Added configurable error text matching modes for overrides: contains, exact, starts with, and ends with", "Added configurable error text matching modes for overrides: contains, exact, starts with, and ends with",
"Updated override evaluation logic to apply the selected match mode across run remarks and object error messages", "Updated override evaluation logic to apply the selected match mode across run remarks and object error messages",
"Extended the overrides UI with a match type selector and improved edit support for existing overrides", "Extended the overrides UI with a match type selector and improved edit support for existing overrides",
@ -193,7 +193,7 @@ CHANGELOG = [
{ {
"title": "Job Deletion Stability", "title": "Job Deletion Stability",
"type": "fixed", "type": "fixed",
"items": [ "changes": [
"Fixed an error that occurred during job deletion", "Fixed an error that occurred during job deletion",
"Corrected backend deletion logic to prevent runtime exceptions", "Corrected backend deletion logic to prevent runtime exceptions",
"Ensured related records are handled safely to avoid constraint or reference errors during removal" "Ensured related records are handled safely to avoid constraint or reference errors during removal"
@ -202,7 +202,7 @@ CHANGELOG = [
{ {
"title": "VSPC Object Linking and Normalization", "title": "VSPC Object Linking and Normalization",
"type": "fixed", "type": "fixed",
"items": [ "changes": [
"Fixed VSPC company name normalization so detection and object prefixing behave consistently", "Fixed VSPC company name normalization so detection and object prefixing behave consistently",
"Ensured filtered object persistence respects the UNIQUE(customer_id, object_name) constraint", "Ensured filtered object persistence respects the UNIQUE(customer_id, object_name) constraint",
"Correctly update `last_seen` timestamps for existing objects", "Correctly update `last_seen` timestamps for existing objects",
@ -214,7 +214,7 @@ CHANGELOG = [
{ {
"title": "VSPC Normalization Bug Fixes and Backward Compatibility", "title": "VSPC Normalization Bug Fixes and Backward Compatibility",
"type": "fixed", "type": "fixed",
"items": [ "changes": [
"Removed duplicate definitions of VSPC Active Alarms company extraction logic that caused inconsistent normalization", "Removed duplicate definitions of VSPC Active Alarms company extraction logic that caused inconsistent normalization",
"Ensured a single, consistent normalization path is used when creating jobs and linking objects", "Ensured a single, consistent normalization path is used when creating jobs and linking objects",
"Improved object linking so real objects (e.g. HV01, USB Disk) are reliably associated with their jobs", "Improved object linking so real objects (e.g. HV01, USB Disk) are reliably associated with their jobs",
@ -232,7 +232,7 @@ CHANGELOG = [
{ {
"title": "Mail Parsing and Data Integrity", "title": "Mail Parsing and Data Integrity",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Fixed Veeam Backup for Microsoft 365 parsing where the overall summary message was not consistently stored", "Fixed Veeam Backup for Microsoft 365 parsing where the overall summary message was not consistently stored",
"Improved extraction of overall detail messages so permission and role warnings are reliably captured", "Improved extraction of overall detail messages so permission and role warnings are reliably captured",
"Ensured the extracted overall message is always available across Job Details, Run Checks, and reporting views", "Ensured the extracted overall message is always available across Job Details, Run Checks, and reporting views",
@ -243,7 +243,7 @@ CHANGELOG = [
{ {
"title": "Object Classification and Sorting", "title": "Object Classification and Sorting",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Updated object list sorting to improve readability and prioritization", "Updated object list sorting to improve readability and prioritization",
"Objects are now grouped by severity in a fixed order: Errors first, then Warnings, followed by all other statuses", "Objects are now grouped by severity in a fixed order: Errors first, then Warnings, followed by all other statuses",
"Within each severity group, objects are sorted alphabetically (AZ)", "Within each severity group, objects are sorted alphabetically (AZ)",
@ -254,7 +254,7 @@ CHANGELOG = [
{ {
"title": "Parsers Overview and Maintainability", "title": "Parsers Overview and Maintainability",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Refactored the Parsers overview page to use the central parser registry instead of a static, hardcoded list", "Refactored the Parsers overview page to use the central parser registry instead of a static, hardcoded list",
"All available parsers are now displayed automatically, ensuring the page stays in sync as parsers are added or removed", "All available parsers are now displayed automatically, ensuring the page stays in sync as parsers are added or removed",
"Removed hardcoded parser definitions from templates to improve long-term maintainability", "Removed hardcoded parser definitions from templates to improve long-term maintainability",
@ -265,7 +265,7 @@ CHANGELOG = [
{ {
"title": "User Management and Feedback Handling", "title": "User Management and Feedback Handling",
"type": "feature", "type": "feature",
"items": [ "changes": [
"Added support for editing user roles directly from the User Management interface", "Added support for editing user roles directly from the User Management interface",
"Implemented backend logic to update existing role assignments without requiring user deletion", "Implemented backend logic to update existing role assignments without requiring user deletion",
"Ensured role changes are applied immediately and reflected correctly in permissions and access control", "Ensured role changes are applied immediately and reflected correctly in permissions and access control",
@ -277,7 +277,7 @@ CHANGELOG = [
{ {
"title": "UI Improvements and Usability Enhancements", "title": "UI Improvements and Usability Enhancements",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Introduced reusable ellipsis handling for long detail fields to prevent layout overlap", "Introduced reusable ellipsis handling for long detail fields to prevent layout overlap",
"Added click-to-expand behavior for truncated fields, with double-click support to expand and select all text", "Added click-to-expand behavior for truncated fields, with double-click support to expand and select all text",
"Added automatic tooltips showing the full value when a field is truncated", "Added automatic tooltips showing the full value when a field is truncated",
@ -290,7 +290,7 @@ CHANGELOG = [
{ {
"title": "Veeam Cloud Connect and VSPC Parsing", "title": "Veeam Cloud Connect and VSPC Parsing",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Improved the Veeam Cloud Connect Report parser by combining User and Repository Name into a single object identifier", "Improved the Veeam Cloud Connect Report parser by combining User and Repository Name into a single object identifier",
"Excluded \"TOTAL\" rows from object processing", "Excluded \"TOTAL\" rows from object processing",
"Correctly classified red rows as Errors and yellow/orange rows as Warnings", "Correctly classified red rows as Errors and yellow/orange rows as Warnings",
@ -304,7 +304,7 @@ CHANGELOG = [
{ {
"title": "VSPC Company Mapping Workflow", "title": "VSPC Company Mapping Workflow",
"type": "feature", "type": "feature",
"items": [ "changes": [
"Introduced a dedicated company-mapping popup for VSPC Active Alarms summary reports", "Introduced a dedicated company-mapping popup for VSPC Active Alarms summary reports",
"Enabled manual mapping of companies found in mails to existing customers", "Enabled manual mapping of companies found in mails to existing customers",
"Implemented per-company job and run creation using the format \"Active alarms summary | <Company>\"", "Implemented per-company job and run creation using the format \"Active alarms summary | <Company>\"",
@ -318,7 +318,7 @@ CHANGELOG = [
{ {
"title": "NTFS Auditing and Synology ABB Enhancements", "title": "NTFS Auditing and Synology ABB Enhancements",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Added full parser support for NTFS Auditing reports", "Added full parser support for NTFS Auditing reports",
"Improved hostname and FQDN extraction from subject lines, supporting multiple subject formats and prefixes", "Improved hostname and FQDN extraction from subject lines, supporting multiple subject formats and prefixes",
"Ensured consistent job name generation as \"<hostname> file audits\"", "Ensured consistent job name generation as \"<hostname> file audits\"",
@ -331,7 +331,7 @@ CHANGELOG = [
{ {
"title": "Workflow Simplification and Cleanup", "title": "Workflow Simplification and Cleanup",
"type": "improvement", "type": "improvement",
"items": [ "changes": [
"Removed the \"Mark success (override)\" button from the Run Checks popup", "Removed the \"Mark success (override)\" button from the Run Checks popup",
"Prevented creation of unintended overrides when marking individual runs as successful", "Prevented creation of unintended overrides when marking individual runs as successful",
"Simplified override handling so Run Checks actions no longer affect override administration", "Simplified override handling so Run Checks actions no longer affect override administration",

View File

@ -67,19 +67,19 @@
{% if subsection.subtitle %} {% if subsection.subtitle %}
<h4 class="h6 text-body-secondary mb-2">{{ subsection.subtitle }}</h4> <h4 class="h6 text-body-secondary mb-2">{{ subsection.subtitle }}</h4>
{% endif %} {% endif %}
{% if subsection.items %} {% if subsection.changes %}
<ul class="changelog-list"> <ul class="changelog-list">
{% for item in subsection.items %} {% for change in subsection.changes %}
<li>{{ item }}</li> <li>{{ change }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
</div> </div>
{% endfor %} {% endfor %}
{% elif section.items %} {% elif section.changes %}
<ul class="changelog-list"> <ul class="changelog-list">
{% for item in section.items %} {% for change in section.changes %}
<li>{{ item }}</li> <li>{{ change }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}