Commit Graph

83 Commits

Author SHA1 Message Date
Dries Peeters d7c0a277d5 Update setup.py 2026-01-13 21:58:43 +01:00
Dries Peeters 5d62b16bd5 Fix unwanted border lines in PDF template editor
- Remove separator lines from loadDefaultLayout() in both quote and invoice templates
- Improve cleanup logic to detect and remove border lines at origin (0,0) with full page width
- Enhance filtering in code generation to catch border lines before export
- Add comprehensive line detection that calculates actual position from points array
- Filter out lines with colors #667eea, #dee2e6, and other gray/blue separator colors
- Ensure cleanup runs on template load to remove any saved unwanted elements

This fixes the persistent issue where unwanted border lines would reappear
even after deletion, especially at position (0,0) with full page width.
The lines are now filtered at multiple stages: during load, before save,
and during code generation to ensure they never appear in exported templates.

Fixes issue with unwanted border lines in PDF previews and generated PDFs.
2026-01-13 20:09:15 +01:00
Dries Peeters f998961041 Version Bump 2026-01-13 13:45:36 +01:00
Dries Peeters 2af0a931aa chore: bump version to 4.10.3 2026-01-12 20:09:15 +01:00
Dries Peeters dd125fbc9c Bump version to 4.10.2 2026-01-11 21:48:32 +01:00
Dries Peeters 15b0c2c2b4 chore: bump version to 4.10.1 2026-01-11 12:15:37 +01:00
Dries Peeters 36483648bb chore: Update Docker configuration and infrastructure setup
- 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)
2026-01-11 08:38:10 +01:00
Dries Peeters 4a8607f400 feat: Add major feature updates - integrations, services, and utilities
- Add Google Calendar integration with OAuth 2.0 support
- Implement integration service and workflow engine
- Add new routes: auth, clients, custom_reports, integrations, invoices, team_chat
- Add utility modules: config_manager, email, excel_export, file_upload, permissions_seed
- Add integration view template
- Add Docker permission fixes and enhanced start scripts
- Add migration management utilities and legacy schema migration
- Add validation and version management scripts
- Update setup.py version to 4.9.16

This release significantly expands the application's integration capabilities,
adds new business logic services, and improves infrastructure tooling.
2026-01-09 22:42:53 +01:00
Dries Peeters 98bc9af56b chore: bump version to 4.9.15 2026-01-09 14:16:50 +01:00
Dries Peeters a97e6b4537 chore: Bump version to 4.9.14 2026-01-09 11:44:36 +01:00
Dries Peeters 9b595f7b55 Version Bump 4.9.13 2026-01-07 20:05:47 +01:00
Dries Peeters b00d75782f Fix template permissions and setup configuration
- Add permission check for payment gateway edit button
- Fix project view template permission check for budget analysis link
- Update setup.py configuration
2026-01-07 13:19:04 +01:00
Dries Peeters 1bc4074f6b Fix permission checks and update version to 4.9.11
- 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
2026-01-07 05:54:38 +01:00
Dries Peeters 7975eeb96d chore: bump version to 4.9.10 2026-01-06 21:51:31 +01:00
Dries Peeters 7274ce9a1d Version bump 2026-01-05 22:08:50 +01:00
Dries Peeters c013adee80 Version Bump 2026-01-05 20:43:17 +01:00
Dries Peeters 4ba9d4feb9 chore: bump version to 4.9.7 2026-01-05 19:33:03 +01:00
Dries Peeters cb8d091126 Version Bump 2026-01-05 17:06:18 +01:00
Dries Peeters 4d336ac54a feat: improve inventory lot grouping and add issues table migration
- Inventory: Group stock lots by warehouse, unit cost, lot type, and date
  to prevent duplicate display entries
- Inventory: Add total value calculation and display per warehouse
- Migration: Make 082_add_global_integrations migration idempotent with
  existence checks for columns and indexes
- Migration: Add 101_add_issues_table migration for client-reported issues
  tracking with multi-database support (SQLite, PostgreSQL, MySQL)
- Version: Bump to 4.9.5
2026-01-05 16:23:30 +01:00
Dries Peeters 74e2f93f6e Update setup.py 2026-01-04 16:52:35 +01:00
Dries Peeters 482d79ce05 version bump to v4.9.3 2026-01-04 06:25:43 +01:00
Dries Peeters 8302cc56b8 Update setup.py 2026-01-04 05:17:17 +01:00
Dries Peeters a2156de296 Update setup.py 2026-01-03 20:48:40 +01:00
Dries Peeters 753b98d272 feat: add Peppol e-invoicing and stock lot valuation
Add Peppol BIS Billing 3.0 (UBL) invoice sending via a configurable access point, including admin-configurable settings, per-invoice send history, and documentation/README updates.

Also introduce stock lots/allocations (valuation layers) with supporting inventory route/report/UI updates and hardened startup migration handling.
2026-01-03 07:00:30 +01:00
Dries Peeters 1ea87c81e5 fix: make migration 081 tolerant of existing settings columns
Some legacy/partially-upgraded databases already have one or more integration OAuth columns in settings (e.g. google_calendar_client_id). Only add missing columns and set defaults for columns that exist so upgrades don't fail with DuplicateColumn.

Bump version to 4.8.12.
2026-01-02 19:05:46 +01:00
Dries Peeters bd59488132 fix: make template-related migrations idempotent
Avoid DuplicateTable/duplicate index errors on partially-migrated databases by skipping creation of existing template tables (quote_templates, project_templates, time_entry_templates) and only creating missing indexes/columns.

Also bump version to 4.8.11.
2026-01-02 17:19:19 +01:00
Dries Peeters 7f209751ab fix: harden Alembic upgrades on legacy databases
Prevent Postgres upgrades from failing when alembic_version.version_num is too small for long revision IDs, and add an alias migration to bridge older installs that recorded '067_add_integration_credentials'.
2026-01-02 15:53:51 +01:00
Dries Peeters e177c25818 Bump version: 4.8.9 2026-01-02 07:53:28 +01:00
Dries Peeters f054f52c17 Version Bump 2026-01-01 13:31:46 +01:00
Dries Peeters f562768e01 Version Bump v4.8.7 2026-01-01 09:19:04 +01:00
Dries Peeters 0dedb5e782 Update setup.py 2025-12-31 11:52:13 +01:00
Dries Peeters b709e1f08d Update setup.py 2025-12-31 07:04:06 +01:00
Dries Peeters 123fc067da version bump 4.8.4 2025-12-30 20:42:20 +01:00
Dries Peeters d4ee8fe4a3 version bump to 4.8.3 2025-12-30 09:52:31 +01:00
Dries Peeters e21a350ec6 version bump 2025-12-29 20:36:18 +01:00
Dries Peeters 764f65639d Version Bump 2025-12-29 16:09:01 +01:00
Dries Peeters 083dd9f1f2 feat: Implement comprehensive module system with visibility controls
- Add centralized module registry system (ModuleRegistry) for managing
  module metadata, dependencies, and visibility across the application
- Create module helper utilities with decorators (@module_enabled) and
  helper functions for route protection and template access
- Add database migration (092) to add missing module visibility flags
  to settings and users tables for granular control
- Extend Settings and User models with additional module visibility
  flags for CRM, Finance, Tools, and Advanced features
- Implement admin module management UI for system-wide module
  enable/disable controls
- Add module checks to routes (calendar, contacts, deals, expenses,
  invoices, leads, custom_reports) to enforce visibility rules
- Update scheduled report service and report templates to respect
  module visibility settings
- Bump version to 4.8.0 in setup.py
- Add comprehensive documentation for module integration planning
  and implementation analysis
2025-12-29 14:13:32 +01:00
Dries Peeters ff2b8be015 Bump Version 2025-12-29 08:02:19 +01:00
Dries Peeters 5d5ebc98d0 Version Bump 2025-12-20 17:43:18 +01:00
Dries Peeters 7791e6ada0 feat: Add comprehensive issue/bug tracking system
Implement a complete issue management system with client portal integration
and internal admin interface for tracking and resolving client-reported issues.

Features:
- New Issue model with full lifecycle management (open, in_progress, resolved, closed, cancelled)
- Priority levels (low, medium, high, urgent) with visual indicators
- Issue linking to projects and tasks
- Create tasks directly from issues
- Client portal integration for issue reporting and viewing
- Internal admin routes for issue management, filtering, and assignment
- Comprehensive templates for both client and admin views
- Status filtering and search functionality
- Issue assignment to internal users
- Automatic timestamp tracking (created, updated, resolved, closed)

Client Portal:
- Clients can report new issues with project association
- View all issues with status filtering
- View individual issue details
- Submit issues with optional submitter name/email

Admin Interface:
- List all issues with advanced filtering (status, priority, client, project, assignee, search)
- View, edit, and delete issues
- Link issues to existing tasks
- Create tasks from issues
- Update issue status, priority, and assignment
- Issue statistics dashboard

Technical:
- Added Issue model with relationships to Client, Project, Task, and User
- New issues blueprint for internal management
- Extended client_portal routes with issue endpoints
- Updated model imports and relationships
- Added navigation links in base templates
- Version bump to 4.6.0
- Code cleanup in docker scripts and schema verification
2025-12-14 07:25:42 +01:00
Dries Peeters 8324636e2b perf: optimize task listing and improve version management
- Bump version to 4.5.1
- Refactor version retrieval: make get_version_from_setup() public and add multiple path fallbacks for better reliability in production and development environments
- Optimize task listing performance:
  * Replace joinedload with selectinload to avoid cartesian product issues
  * Implement optimized pagination that avoids expensive count queries when possible
  * Move AJAX request check earlier to skip unnecessary filter data loading
  * Add query limits to filter dropdowns (projects: 500, users: 200)
  * Optimize permission checks by checking is_admin first (no DB query)
- Update API info endpoint and context processor to use centralized version retrieval
- Maintain backward compatibility with _get_version_from_setup alias
2025-12-13 19:06:19 +01:00
Dries Peeters a582e2af62 feat: improve error handling, performance logging, and PWA install UI
- Add session state clearing (expunge_all) after rollbacks in custom field
  definition error handlers to prevent stale session state
- Add graceful error handling for missing link_templates table with proper
  rollback and session cleanup, preventing app crashes when migrations
  haven't been run
- Add detailed performance logging to TaskService.list_tasks method to track
  timing of each query step for performance monitoring
- Improve PWA install prompt UI with better toast integration, dismiss button,
  and proper DOM manipulation using requestAnimationFrame
- Bump version to 4.5.0
2025-12-12 21:49:26 +01:00
Dries Peeters 3c2e144f5c Fix dashboard cache invalidation when editing timer entries (#342)
- Add cache invalidation to update_entry API endpoint
- Add cache invalidation to edit_timer route
- Add cache invalidation to delete_entry API endpoint
- Add cache invalidation to delete_timer route
- Add cache invalidation to create_entry API endpoint

The dashboard caches data for 5 minutes, but the cache was not being
invalidated when time entries were modified. This caused the 'Recent
Entries' table to show stale duration values until the cache expired
or the browser tab was refreshed.

Now the dashboard cache is immediately invalidated whenever a time
entry is created, updated, or deleted, ensuring users see the latest
data without waiting for cache expiration.
2025-12-05 07:44:57 +01:00
Dries Peeters c64af6dd3a Update setup.py 2025-12-03 09:16:59 +01:00
Dries Peeters ac19bebf2d feat: enhance offline sync and improve performance (v4.3.2)
- Add comprehensive offline sync improvements with enhanced IndexedDB support
- Optimize task model with cached total_hours calculation for better performance
- Improve task service query optimization and eager loading strategies
- Update CSP policy to allow CDN connections for improved resource loading
- Enhance service worker with better background sync capabilities
- Improve error handling and offline queue processing
- Update base template and comment templates for better UX
- Bump version to 4.3.2
2025-12-02 06:13:54 +01:00
Dries Peeters 2bd48d9e60 feat: Add client count tracking and cleanup for custom field definitions
- Add count_clients_with_value() method to CustomFieldDefinition model to track how many clients have values for each custom field

- Display client count in custom field definitions list view

- Automatically remove custom field values from all clients when a custom field definition is deleted

- Show user-friendly confirmation message indicating how many clients were affected when deleting a field definition

- Update client view to use custom field definitions for friendly field names instead of raw field keys

- Add comprehensive test suite for custom field definitions including model creation, client count functionality, deletion cleanup, and edge cases

- Update templates to display client counts and improve delete confirmation dialogs
2025-12-01 18:48:38 +01:00
Dries Peeters 9ffcd5a1b2 Update setup.py 2025-12-01 15:44:10 +01:00
Dries Peeters 1f6941ff43 Fix AUTH_METHOD=none and add comprehensive schema verification
- Fix AUTH_METHOD=none: Read from Flask app config instead of Config class
- Add comprehensive schema verification: Verify all SQLAlchemy models against
  database and auto-fix missing columns
- Improve startup logging: Unified format with timestamps and log levels
- Enhanced migration flow: Automatic schema verification after migrations

Fixes authentication issue where password field showed even with AUTH_METHOD=none.
Ensures all database columns from models exist, preventing missing column errors.
Improves startup logging for better debugging and monitoring.
2025-12-01 08:15:30 +01:00
Dries Peeters ac465d9612 feat: Enhance UI/UX with improved form validation and error handling
- Add comprehensive form validation system with real-time feedback
- Implement enhanced error handling with retry mechanisms and offline support
- Update route handlers for improved error responses
- Enhance list templates with better error handling and validation
- Update dashboard, timer, and report templates with enhanced UI
- Improve project service with better error handling
- Update config manager utilities
- Bump version to 4.2.0

Files updated:
- Routes: auth, clients, invoices, projects, quotes, tasks, timer, custom_reports
- Templates: base, dashboard, all list views, timer pages, reports
- Static: enhanced-ui.js, error-handling-enhanced.js, form-validation.js
- Services: project_service.py
- Utils: config_manager.py
- Version: setup.py
2025-11-30 10:51:09 +01:00
Dries Peeters 4cf4d0396a Update setup.py 2025-11-29 14:59:00 +01:00