- Enhance build scripts with better error handling and Windows support
- Add Windows-specific build scripts and PowerShell utilities
- Add asset preparation and verification scripts
- Update GitHub Actions workflows for desktop and mobile builds
- Add build configuration and troubleshooting utilities
- Improve cross-platform build compatibility
- Integrate new logo assets across all templates
- Update base template with improved favicon and meta tags
- Add logo support to login, admin, and inventory templates
- Update web manifest with new branding
- Enhance PDF layouts with logo support
- Add page dimension validation in PDF generators to prevent content
from being drawn outside page boundaries
- Fix page number positioning in fallback PDF generator to ensure
they stay within page margins
- Add boundary constraints for absolutely positioned elements in
ReportLab template renderer
- Prevent rendering errors when elements exceed page dimensions
- Change REDIS_ENABLED default from 'true' to 'false' in docker-compose.yml
- This prevents Redis connection attempts when Redis is not needed
- Applications will use in-memory cache fallback instead
- Reduce socket_connect_timeout from 5s to 1s for faster failure detection
- Reduce socket_timeout from 5s to 1s for faster operation timeouts
- Disable socket_keepalive to avoid connection delays
- Disable retry_on_timeout to fail fast instead of retrying
- Improve fallback to in-memory cache when Redis is unavailable
- Move track_event calls to background threads for both local and OIDC login
- Prevent PostHog timeouts from blocking user login flow
- Add error handling to prevent analytics errors from affecting login
- Maintain fast log_event calls while deferring slower track_event calls
- Add bidirectional sync for CalendarEvent objects (similar to CalDAV)
- Import Google Calendar events as CalendarEvent instead of TimeEntry
- Sync CalendarEvent objects to Google Calendar with proper markers
- Add methods to create/update Google Calendar events from CalendarEvent
- Track imports using description markers instead of IntegrationExternalEventLink
- Prevent circular sync by checking for import markers
- Update logging to include calendar event counts alongside time entries
- Add blue page border to clearly mark page boundaries in PDF editor
- Add zoom percentage display next to zoom controls
- Update overlap detection to exclude page border
- Ensure page border is recreated after canvas clear and page size changes
- Filter out page border from exported templates
- Fix totals text styling by finding element by name instead of index
- Update Dockerfile with improved build configuration
- Refactor docker-compose.yml with better service definitions
- Update setup.py for package installation
- Improve .dockerignore to exclude unnecessary files
- Clean up template files (whitespace and formatting)
- Improve invoice model with enhanced prefix handling and validation
- Enhance expense routes with better error handling and validation
- Refactor PDF generator with improved template support and formatting
- Update Google Calendar integration with improved error handling
- Enhance scheduled tasks with better logging and reliability
- Update admin routes with improved permission checks
- Improve email utility with better template handling
- Add GitHub Actions workflow for building Flutter mobile apps
- Add GitHub Actions workflow for building Electron desktop apps
- Update release workflow to include mobile and desktop build jobs
- Support cross-platform builds (Android, iOS, Windows, macOS, Linux)
- Add artifact publishing for built applications
- Add Flutter mobile app with authentication, timer, projects, and time entries
- Add Electron desktop app with system tray integration and offline support
- Implement offline storage with sync queue for both platforms
- Add comprehensive build scripts for cross-platform builds
- Include documentation and README files for both apps
- Add test suites for mobile and desktop applications
Previously, users without a password set were denied login and required administrator intervention. This change allows users to set their initial password directly during the login process if they provide one.
The password is validated (minimum 8 characters) and set before logging the user in. If no password is provided, users are prompted to enter one. This improves the user experience by reducing the need for administrator assistance for password setup.
- Improve entrypoint scripts for local test environments
- Fix entrypoint script issues and enhance reliability
- Update test environment setup and configuration
- Update application configuration with new settings
- Enhance Google Calendar integration functionality
- Improve expenses and inventory route handlers
- Update API v1 routes with additional endpoints
- Enhance base template with UI improvements
- Improve invoice model with additional fields and methods
- Enhance quote model with better validation and relationships
- Add invoice repository for data access layer abstraction
- Update invoice and quote routes with improved functionality
- Add quote service for business logic separation
- Improve quote view and edit templates with better UX
- Add ReportLab template renderer with JSON-based template system
- Implement template schema validation and helper functions
- Add database migration for template_json columns
- Update visual editor to generate ReportLab JSON alongside HTML/CSS
- Maintain backward compatibility with legacy templates
- Add comprehensive migration documentation
BREAKING CHANGE: Existing PDF templates need to be saved again through
the visual editor to generate the new template_json format. Templates
will continue to work using the legacy fallback generator until saved.
- Improve expenses route with additional functionality
- Enhance admin route with new features
- Update auth route with improved authentication handling
- Extend user model with new capabilities
- Update expenses view template
- Improve config manager utility
- Add migrate_user_roles() function for bulk migration
- Add migrate_single_user() function for individual user migration
- Support dry-run mode for testing migrations
- Include comprehensive error handling and statistics reporting
- Add multiple DNS resolution strategies (socket, getaddrinfo, auto)
- Implement IP address caching with TTL for improved performance
- Add retry logic with exponential backoff for metadata fetching
- Support Docker internal service name resolution
- Add connection pooling and optimized HTTP session handling
- Improve error classification and diagnostics
- Add comprehensive OIDC configuration options in config.py
- Update OIDC initialization in app factory with lazy loading support
- Add background metadata refresh scheduling
- Update documentation with troubleshooting guide and setup instructions
- Enhance CalDAV calendar integration with improved event handling and error management
- Update integration service to support admin override for testing integrations
- Fix integration route handling for per-user vs global integrations
- Improve test_connection method to properly handle admin access and global integrations
- Add migration to update check constraint allowing NULL project_id and client_id for source='auto' entries
- Update TimeEntry model validation to allow entries without project/client when source='auto'
- Update TimeEntryCreateSchema to allow entries without project/client when source='auto'
- Enables calendar integrations to import entries that don't have project/client mapping yet
- Fix has_any_permission() function calls: change from list syntax to argument syntax in base.html, clients/view.html, and projects/view.html
- Add permission checks to navigation menu items: Issues menu now requires view_all_issues or create_issues permission, Payment Gateways requires manage_payment_gateways permission
- Add delete_projects permission to Manager role in permissions_seed.py
- Bump version to 4.9.11
- Add setup wizard system for guided integration configuration
- Create wizard templates for all integration providers:
* Asana, GitHub, GitLab, Jira, Microsoft Teams
* Outlook Calendar, QuickBooks, Trello, Xero
- Add wizard_base.html template with common wizard functionality
- Implement setup_wizard route with provider detection
- Update integration list and manage pages with wizard links
- Add has_setup_wizard() helper to check wizard availability
- Create integration_wizard.js for wizard JavaScript functionality
- Improve UX with step-by-step guided setup process
- Add multi-step OIDC setup wizard with progress indicator
- Implement test connection endpoint with DNS and metadata validation
- Add configuration validation endpoint
- Create interactive wizard UI with step-by-step guidance
- Update OIDC debug page to link to setup wizard
- Support testing connection before finalizing configuration
- Add comprehensive error handling and user feedback
- Integrate oidc_metadata utility into app initialization
- Use fetch_oidc_metadata() before registering OAuth client
- Add config options for metadata fetch timeout and retry behavior
- Provide better error handling and logging for OIDC setup failures
- Gracefully fall back to Authlib's metadata fetch if utility fails
- Add oidc_metadata.py utility module with retry logic and DNS testing
- Implement fetch_oidc_metadata() with exponential backoff retry
- Add test_dns_resolution() for proactive DNS diagnostics
- Create TROUBLESHOOTING_OIDC_DNS.md documentation
- Improves handling of DNS resolution errors in containerized environments
- Add issue creation functionality with new route and template
* Implement new_issue() route with validation and permission checks
* Create issues/new.html template for issue creation form
* Add 'Create Issue' button to issues list with permission check
- Enhance inventory stock movement validation
* Improve devaluation validation with proper error messages
* Add stock availability checks before devaluation operations
* Validate devaluation methods (percent/fixed) with proper bounds checking
* Add better error handling for return and waste movements with devaluation
* Improve user feedback with specific success messages
- Refine permission system for better granular control
* Add comprehensive issue permissions (view_all_issues, view_own_issues, create_issues, edit_all_issues, edit_own_issues, delete_issues)
* Add manage_payment_gateways permission
* Update payment gateway routes to use manage_payment_gateways instead of admin_access
* Assign new permissions to appropriate roles (admin, manager)
* Add permission checks to UI elements (inventory menu, delete project button)
- Fix permission checks in templates
* Update payment gateway list template to use correct permission
* Add permission check for project delete button
* Add permission check for inventory menu visibility
- Remove requirement for default_project_id in CalDAV sync
- Update config schema to mark default_project_id as optional
- Allow importing calendar events without a project assigned
- Update setup form to show project selection as optional
- Remove disabled state from submit button when no projects exist
- Fix number field handling to allow None values for optional fields
- Update sync logic to handle events without project assignment
- Add allow_admin_override parameter to get_integration() method
- Allow admins to view, test, and sync per-user integrations
- Fix 'Integration not found' errors for admins accessing CalDAV
- Update all integration routes to pass allow_admin_override flag