Features
- Per-company order numbering — Each company has its own sequential order counter. Orders use order_number as identifier across all routes and relationships.
- Order PDF export — Generate and download a PDF from the order detail page.
- Delete controllers for Supplier and Bank Account — Missing delete functionality added.
- Laravel Boost & MCP server — Added Laravel Boost integration and MCP server configuration.
- Multi-language support — Localization middleware now correctly applied; user language preference is respected across the app.
Improvements
- Currency formatting — Added CurrencyHelper for consistent currency display.
- Order edit — Customer and items are correctly pre-filled when editing an existing order.
- Order item discount — Defaults to 0 instead of null.
- Company logo upload — Migrated to Laravel's storage system (storage/app/public/).
Security Fixes
- Enforced authentication and cross-tenant authorization on web controllers (#248).
- Fixed permission, email attachment, and company API endpoint vulnerabilities (#247).
- Added authorization check for account deletion.
- Removed local certificates from version control.
- Updated Symfony packages to fix security advisories.
Bug Fixes
- Fixed TypeError when saving a customer with a null company timezone.
- Fixed lead status enum and factory alignment with model constants.
- Restored nullable lat/long columns on the relevant model.
- Fixed company logo saving and lead export.
- Fixed middleware registration for Locked and Localization under Laravel 11+ structure.
CI/CD & Infrastructure
- Migrated to Laravel 13, dropped PHP 8.3 support (requires PHP ≥ 8.4).
- Consolidated CI into a single tests.yml workflow, removed duplicate pipelines.
- Updated GitHub Actions to latest versions.
- Fixed SonarCloud workflow with PHP setup and coverage reporting.
- Updated Docker setup with PHP 8.4 and host-gateway mapping.
- Updated Pint configuration and integrated it into CI.
Tests
- Fixed CompanySaveControllerTest to use Storage::fake and correct disk path.
- Fixed CalendarTest to avoid hardcoded IDs causing auto-increment drift.
- Resolved pre-existing test failures across multiple test files.