From 7a3c8c9c51a4ccbbd2b71f8ab2f619c3be5a186d Mon Sep 17 00:00:00 2001 From: Ivo Oskamp Date: Mon, 9 Feb 2026 09:35:39 +0100 Subject: [PATCH] Add v0.1.23 to website changelog Added v0.1.23 entry to changelog.py with structured Python format: - Documentation System (Core Infrastructure, 13 completed pages, accuracy improvements) - Audit Logging (Renaming to AuditLog, expanded event coverage) - Timezone-Aware Display (local_datetime filter, all pages updated) - Autotask Improvements (usability, settings organization, data portability) - Environment Identification (sandbox banner feature) - Job Visibility Filtering (archived/inactive customer filtering) - Repository Security (.gitignore for .claude directory) - Bug Fixes (imports, datetime handling, documentation corrections) Co-Authored-By: Claude Sonnet 4.5 --- .../backupchecks/src/backend/app/changelog.py | 205 ++++++++++++++++++ docs/changelog-claude.md | 1 + 2 files changed, 206 insertions(+) diff --git a/containers/backupchecks/src/backend/app/changelog.py b/containers/backupchecks/src/backend/app/changelog.py index bdb7518..dbc3132 100644 --- a/containers/backupchecks/src/backend/app/changelog.py +++ b/containers/backupchecks/src/backend/app/changelog.py @@ -3,6 +3,211 @@ Changelog data structure for Backupchecks """ CHANGELOG = [ + { + "version": "v0.1.23", + "date": "2026-02-09", + "summary": "This comprehensive release introduces a complete built-in documentation system with 33 pages covering all features, enhanced audit logging for compliance and troubleshooting, timezone-aware datetime display throughout the application, and numerous Autotask PSA integration improvements for better usability and workflow efficiency.", + "sections": [ + { + "title": "Documentation System – Complete Built-in Wiki", + "type": "feature", + "subsections": [ + { + "subtitle": "Core Infrastructure", + "changes": [ + "New /documentation route with dedicated blueprint (doc_bp) accessible via 📖 icon in main navbar", + "Hierarchical structure with 9 sections and 33 pages covering all application features", + "Sidebar navigation with collapsible sections, active page highlighting, and sticky positioning during scrolling", + "Breadcrumb navigation for current location context", + "Previous/Next pagination buttons for sequential reading", + "Custom CSS (documentation.css) with dark mode support via CSS variables", + "Callout boxes (info, warning, tip, danger) for highlighting important content", + "Support for code blocks, tables, images (centered horizontally), and responsive design", + "Login required but accessible to all user roles", + "Full content includes comprehensive screenshots, workflow examples, troubleshooting guides, and best practices" + ] + }, + { + "subtitle": "Completed Documentation Sections (13 pages)", + "changes": [ + "Getting Started (3 pages): What is BackupChecks, First Login, Quick Start Guide", + "User Management (3 pages): Users & Roles, Login & Authentication, Profile Settings", + "Customers & Jobs (4 pages): Managing Customers, Configuring Jobs, Approved Jobs, Job Schedules", + "Mail & Import (4 pages): Setup with Graph API and security best practices, Inbox Management with approval workflow, Mail Parsing with supported software list, Auto-Import Configuration with timer settings", + "Backup Review (5 pages): Complete 7-stage lifecycle workflow, Daily Jobs with schedule inference, Run Checks Modal as primary operational tool, Overrides & Exceptions with global and object-level rules, Remarks & Tickets with scoping and Autotask integration", + "Remaining 20 pages created with placeholders for future content (Reports, Autotask Integration, Settings, Troubleshooting)" + ] + }, + { + "subtitle": "Documentation Accuracy Improvements", + "changes": [ + "Corrected critical inaccuracies in Backup Review workflow based on user feedback", + "Clarified Run Checks is the primary daily operational tool (not Daily Jobs)", + "Emphasized all runs must be reviewed regardless of status (including successful runs)", + "Corrected review mechanism from per-run to per-job (marking one job reviews all its runs)", + "Updated override status indicators to show blue badges (not green) for differentiation", + "Fixed various feature descriptions to match actual UI behavior (EML links, customer selection workflow, parser management restrictions)", + "Removed non-existent features: individual email re-parse in modal, parser enable/disable UI, AI-powered parsing, Inbox filters section", + "Enhanced Mail Import Setup with comprehensive security best practices including Application Access Policy to restrict to one mailbox" + ] + } + ] + }, + { + "title": "Audit Logging Enhancements", + "type": "improvement", + "subsections": [ + { + "subtitle": "System Renaming and Semantic Clarity", + "changes": [ + "Renamed AdminLog to AuditLog for better semantic clarity across codebase", + "Updated model name: AdminLog → AuditLog (backwards compatible alias maintained)", + "Updated table name: admin_logs → audit_logs (automatic migration)", + "Updated function: log_admin_event() → log_audit_event() (alias provided for compatibility)", + "Updated UI labels: \"Admin activity\" → \"System Audit Log\" in logging page header", + "Better reflects purpose as comprehensive audit trail for both user and system events" + ] + }, + { + "subtitle": "Expanded Event Coverage for Compliance", + "changes": [ + "Settings Changes: Now logs all changes to General, Mail, and Autotask settings with old → new value comparison", + "Event types: settings_general, settings_mail, settings_autotask", + "Excludes sensitive data (passwords are never logged)", + "Example logged fields: ui_timezone, require_daily_dashboard_visit, is_sandbox_environment, graph_mailbox, autotask_enabled", + "Export Operations: Logs Customers export (CSV format, record count) and Jobs export (JSON schema version, customer/job counts)", + "Import Operations: Logs Customers import (created/updated/skipped counts) and Jobs import (customer and job operation counts)", + "All logging uses structured event_type for filtering and analysis", + "Detailed JSON in details field for complete audit trail", + "Maintains 7-day retention policy for performance", + "No performance impact (async logging)", + "Helps with compliance audits, security monitoring, and troubleshooting configuration issues" + ] + } + ] + }, + { + "title": "Timezone-Aware Datetime Display", + "type": "improvement", + "changes": [ + "Added local_datetime Jinja2 template filter to convert UTC datetimes to configured UI timezone", + "All datetime fields now automatically display in configured timezone (Settings > General > UI Timezone)", + "Database values remain stored in UTC for consistency and reliability", + "Affected Pages: Customers (Autotask last sync), Settings (reference data sync), Feedback, Logging, Overrides, Archived Jobs, Tickets, Remarks, Inbox, Job Detail, Admin Mail", + "Custom format support via strftime parameter (e.g., |local_datetime('%d-%m-%Y %H:%M'))", + "Enhanced filter to handle both datetime objects and string datetime values for flexibility", + "Graceful fallback to UTC display if timezone conversion fails", + "Default timezone: Europe/Amsterdam (configurable via SystemSettings.ui_timezone)", + "Improves operator experience by showing times in local context" + ] + }, + { + "title": "Autotask PSA Integration Improvements", + "type": "improvement", + "subsections": [ + { + "subtitle": "Usability Enhancements", + "changes": [ + "Added \"Open in Autotask\" button in Run Checks modal for direct navigation to tickets in Autotask PSA (opens in new tab with proper URL)", + "Button only appears when ticket is linked and Autotask integration is enabled", + "Added collapsible text functionality (ellipsis-field) to \"Overall remark\" and \"Remark\" fields to prevent long text from hiding action buttons", + "Auto-load Autotask reference data when opening Settings page (queues, sources, statuses, priorities)", + "Only triggers when Autotask is enabled, credentials configured, and cache is empty", + "Eliminates need to manually click \"Refresh reference data\" before selecting defaults", + "Displays info message with loaded data counts", + "Renamed \"Refresh\" button to \"Search\" in Link existing ticket modal for better clarity" + ] + }, + { + "subtitle": "Settings Organization and Validation", + "changes": [ + "Reorganized Autotask settings into two separate forms with dedicated save buttons", + "Autotask Settings form (connection, environment, credentials) with \"Save Autotask Settings\" button", + "Ticket Defaults form (queue, source, status, priority) with \"Save Ticket Defaults\" button", + "Clear visual separation improves UX and prevents accidental incomplete saves", + "All fields marked as required with red asterisks (*)", + "HTML5 validation prevents saving incomplete configurations", + "Protected default Ticket Status value against accidental clearing", + "Only updates when valid status selected, preserves existing value if dropdown empty", + "Fixes issue where \"Create Autotask ticket\" failed due to missing default status" + ] + }, + { + "subtitle": "Data Portability and Migration Support", + "changes": [ + "Extended Customer CSV export/import to include autotask_company_id and autotask_company_name columns", + "Import reads Autotask mapping fields and applies them to existing or new customers", + "Backwards compatible - old CSV files without Autotask columns still work", + "Import resets autotask_mapping_status and autotask_last_sync_at for resynchronization", + "Extended Jobs JSON export/import to include Autotask fields in customers array", + "Schema remains approved_jobs_export_v1 for backwards compatibility", + "Import message shows both created and updated customer counts", + "Enables preservation of Autotask company mappings during system reset/migration workflows", + "Critical for disaster recovery and environment promotion (dev → test → production)" + ] + } + ] + }, + { + "title": "Environment Identification and Safety", + "type": "feature", + "changes": [ + "Added visual banner system to distinguish non-production environments and prevent accidental actions", + "New is_sandbox_environment boolean column in SystemSettings model (defaults to False for production safety)", + "Database migration migrate_system_settings_sandbox_environment() for automatic schema update (idempotent)", + "Settings UI with new \"Environment\" card in Settings > General with toggle switch", + "CSS styling via sandbox.css: diagonal red banner in top-left corner displaying \"SANDBOX\"", + "Position: top-left corner, rotated 45 degrees with letter-spacing for visibility", + "Color: Bootstrap danger red (#dc3545) with white text and box-shadow for depth", + "Z-index: 9999 (always on top, visible across all pages)", + "pointer-events: none - banner non-interactive, elements behind remain clickable", + "Banner conditionally displayed only when setting is enabled", + "Banner placed in base template directly after tag, before navbar", + "Helps prevent accidental production-like actions in test/development systems" + ] + }, + { + "title": "Job Visibility and Filtering Improvements", + "type": "improvement", + "changes": [ + "Jobs from archived jobs and inactive customers no longer appear in Daily Jobs, Run Checks, and Jobs list pages", + "Added customer active status filtering to all job list queries in backend", + "Jobs now filtered where customer is NULL or active=True alongside existing archived=False filter", + "Prevents showing jobs with \"-\" status from deleted customers or archived jobs", + "Reduces clutter in operational views and improves focus on active jobs", + "Improves query performance by reducing result set size" + ] + }, + { + "title": "Repository Management and Security", + "type": "improvement", + "changes": [ + "Added .gitignore file to protect confidential .claude directory", + "Directory contains AI assistant context, memory files, and user-specific configuration", + "Prevents accidental commits of sensitive information to version control", + "Protects user privacy and prevents repository pollution with local-only data" + ] + }, + { + "title": "Bug Fixes and Stability Improvements", + "type": "fixed", + "changes": [ + "Fixed missing import for _log_audit_event in routes_customers (resolved crash during customer operations)", + "Enhanced local_datetime filter to handle string datetime values in addition to datetime objects", + "Prevents template rendering errors when datetime is stored as string", + "Fixed callout box formatting throughout documentation (corrected CSS specificity)", + "Centered all documentation images horizontally (display: block, margin: 20px auto)", + "Removed fabricated features from documentation (AI-powered parsing, Inbox filters, parser management UI)", + "Corrected workflow descriptions to match actual UI implementation", + "Fixed customer selection workflow (job name read-only during approval)", + "Fixed email detail modal layout documentation (two-column: left metadata/actions/objects, right email iframe)", + "Updated status badge colors to match actual behavior (blue for overrides, green for genuine successes)", + "Fixed per-job review mechanism documentation (marking one job reviews all its runs)", + "Corrected bulk review from \"select run checkboxes\" to \"select job checkboxes\"" + ] + } + ] + }, { "version": "v0.1.22", "date": "2026-02-05", diff --git a/docs/changelog-claude.md b/docs/changelog-claude.md index 48373b9..5e4e2a7 100644 --- a/docs/changelog-claude.md +++ b/docs/changelog-claude.md @@ -6,6 +6,7 @@ This file documents all changes made to this project via Claude Code. ### Changed - Updated `docs/changelog.md` with comprehensive v0.1.23 release notes consolidating all changes from 2026-02-06 through 2026-02-08 (Documentation System, Audit Logging, Timezone-Aware Display, Autotask Improvements, Environment Identification, Bug Fixes) +- Updated `containers/backupchecks/src/backend/app/changelog.py` with v0.1.23 entry in Python structure for website display (8 sections with subsections matching changelog.md content) ## [2026-02-08]