- Improve entrypoint scripts for local test environments
- Fix entrypoint script issues and enhance reliability
- Update test environment setup and configuration
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.
- Rename 'metadata' column to 'extra_data' in ClientNotification model
to avoid SQLAlchemy Declarative API reserved word conflict
- Update ClientNotificationService to use 'extra_data' instead of 'metadata'
- Maintain API compatibility by returning 'metadata' key in to_dict() method
- Update migration to create 'extra_data' column instead of 'metadata'
- Improve migration idempotency and SQLite compatibility with proper checks
- Enhance backup directory handling with configurable BACKUP_FOLDER support
- Update admin routes to use centralized backup directory function
This fixes the application startup error:
sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved
when using the Declarative API.
The migration is now idempotent and handles both PostgreSQL and SQLite
databases safely.
- Refactor migrations with idempotency checks and better error handling
* Add SQLAlchemy inspector checks for table/column existence
* Improve error messages and handling for schema operations
* Make migrations safe to run multiple times
* Update 27 migration files with enhanced error handling patterns
- Add missing schema columns via new migrations
* Migration 095: Add ui_show_issues column to users table
* Migration 096: Add portal_issues_enabled column to clients table
- Enhance Settings model error handling
* Improve detection of schema errors (table/column missing)
* Better handling of SQLAlchemy exceptions during migrations
* More comprehensive error checking for OperationalErrors
- Fix database auto-switching logic in app initialization
* Respect explicit DATABASE_URL setting to prevent unwanted switches
* Only auto-switch to PostgreSQL when not explicitly configured
- Update docker entrypoint script with migration improvements
- Change CONFIG_DIR from relative 'data' to absolute '/data' path in installation.py
This fixes PermissionError when trying to create /app/data instead of using
the mounted volume at /data
- Update telemetry marker file paths to use absolute /data path for consistency
- Add ensure_data_directory() function to entrypoint_fixed.sh to:
- Create /data directory if it doesn't exist
- Set proper permissions (755) on /data
- Attempt to set ownership to current user
- Create /data/uploads subdirectory
This resolves the 'Permission denied: data' errors when accessing /admin/settings
and ensures the data volume is properly initialized at container startup.
- Integrate Flask-Babel and i18n utilities; initialize in app factory
- Add `preferred_language` to `User` with Alembic migration (011_add_user_preferred_language)
- Add `babel.cfg` and `scripts/extract_translations.py`
- Add `translations/` for en, de, fr, it, nl, fi
- Update templates to use `_()` and add language picker in navbar/profile
- Respect locale in routes and context processors; persist user preference
- Update requirements and Docker/Docker entrypoint for Babel/gettext support
- Minor copy and style adjustments across pages
Migration: run `alembic upgrade head`
- Add organized screenshot sections for better visual presentation
- Include all 12 available screenshots from assets/screenshots/
- Group screenshots into logical categories:
* Core Application Views (Dashboard, Projects, Tasks, Clients)
* Management & Analytics (Reports, Visual Analytics, Task Management, Admin)
* Data Entry & Creation (Log Time, New Task, New Client, New Project)
- Improve visual layout with proper spacing and responsive design
- Enhance user experience by showcasing full application capabilities