Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 21, 2025

GitHub Action for Production Release Workflow

This PR adds a GitHub Action workflow that triggers on merge to master to create production-ready releases with automatic versioning and GitHub release creation.

Plan:

  • Create .github/workflows/release.yml workflow file
  • Add Crowdin translation download step (using Crowdin GitHub Action)
  • Add Node.js setup and build step (yarn install --frozen-lockfile && yarn build)
  • Add PHP/Composer setup and production install step (composer install --no-dev --optimize-autoloader)
  • Add cleanup steps (remove node_modules and minimize vendor)
  • Add archive creation step (zip the project for release)
  • Add release artifact upload
  • Create comprehensive README documentation
  • Optimize workflow based on code review (combined find commands, removed unused code)
  • Validate YAML syntax and structure
  • Address final code review feedback (remove redundant parameters, update docs)
  • Fix CodeQL security issue (add explicit permissions)
  • Implement user feedback from PR review
    • Use composer-vendor-cleaner package for vendor optimization
    • Add workflow validation steps and echoes
    • Add checksum generation (SHA256 and MD5)
    • Configure Crowdin to output to resources/lang/ with PHP files
    • Optimize yarn installation for production
    • Update PHP to 8.4
    • Add required PHP extensions (gd, bcmath, dom, intl, xml, zip)
    • Add .DS_Store cleanup
    • Add mPDF optimization (fonts and QR code data)
    • Add release notes generation
  • Address automated code review feedback
    • Optimize vendor cleaner installation process
    • Improve mPDF cleanup readability
    • Limit release notes to prevent performance issues
  • Update Crowdin config to use full language names
  • Add automatic versioning and GitHub release creation
    • Shallow clone with tags (fetch-depth: 1)
    • Configurable release type (alpha/beta/stable)
    • Automatic version tagging
    • Release notes between tags
    • GitHub Release creation in Releases section
  • All validation complete ✅

What's Included:

New Files:

  • .github/workflows/release.yml - Production release workflow (314 lines, fully optimized)
  • .github/workflows/README.md - Comprehensive documentation (updated)
  • crowdin.yml - Crowdin configuration for Laravel PHP translations

Workflow Features:

  1. Crowdin Integration - Downloads latest translations to resources/lang/ with PHP files
  2. Translation Validation - Validates language directory structure
  3. Frontend Build - Compiles production assets with Vite (optimized yarn installation)
  4. Backend Dependencies - Installs production PHP dependencies only
  5. Vendor Optimization - Uses composer-vendor-cleaner package + custom cleanup
  6. mPDF Optimization - Removes unnecessary fonts (keeps DejaVu) and QR code data
  7. Packaging - Creates timestamped ZIP archive with -9 compression
  8. Checksums - Generates SHA256 and MD5 checksums
  9. Automatic Versioning - Creates version tags based on configurable release type
  10. Release Notes - Generates changelog between git tags
  11. GitHub Releases - Automatically creates releases in the Releases section
  12. Artifact Storage - Uploads ZIP, checksums, and release notes (90-day retention)
  13. Security - Minimal permissions (contents: write, actions: write)

Enhanced Workflow Steps (16 total):

  1. ✅ Checkout repository (shallow clone with tags for performance)
  2. ✅ Download translations from Crowdin (configured for resources/lang/)
  3. ✅ Validate translations directory structure
  4. ✅ Setup Node.js with caching
  5. ✅ Install frontend dependencies (production optimized)
  6. ✅ Build frontend assets
  7. ✅ Setup PHP 8.4 with all required extensions
  8. ✅ Display tool versions (PHP, Composer, Node, npm, Yarn)
  9. ✅ Install Composer dependencies (production)
  10. ✅ Install and run composer-vendor-cleaner (optimized)
  11. ✅ Clean workspace (node_modules, .DS_Store, mPDF, .git, .github)
  12. ✅ Package InvoicePlane with checksums
  13. Generate version tag and release notes (between tags)
  14. ✅ Upload release artifact
  15. Create GitHub Release (automatic)
  16. ✅ Display workflow summary

Automatic Versioning & Releases:

Release Types (configurable via RELEASE_TYPE environment variable):

  • alpha - Pre-release versions (increments patch, adds -alpha suffix: v0.1.1-alpha)
  • beta - Beta versions (increments patch, adds -beta suffix: v0.1.1-beta)
  • stable - Stable releases (increments minor version: v0.2.0)

Versioning Strategy:

  • Detects latest tag (or starts from v0.0.0)
  • Automatically increments version based on release type
  • Creates and pushes new git tag
  • Generates release notes showing changes between tags

GitHub Releases:

  • Automatically created in the Releases section
  • Pre-release flag for alpha/beta versions
  • Includes ZIP file, SHA256/MD5 checksums, and release notes
  • Tagged with version number

PHP Configuration:

  • Version: 8.4
  • Extensions: gd, bcmath, dom, intl, xml, zip, mbstring, pdo_mysql
  • mPDF Support: Optimized for PDF generation

Crowdin Configuration:

  • Language Format: Full language names (e.g., "english", "german", "french")
  • Translation Path: resources/lang/%language%/**/*.php
  • Preserves: Laravel translation structure with PHP files

Latest Optimizations:

  • Checkout: Shallow clone (fetch-depth: 1) with tags for faster performance
  • Vendor Cleaner: Uses --no-update for faster installation
  • mPDF Cleanup: More readable and explicit find command
  • Release Notes: Generated between git tags (previous tag to HEAD)
  • Crowdin: Updated to use %language% placeholder for full language names
  • Permissions: Updated to contents: write for creating releases and tags

Required Setup:

The workflow requires two GitHub secrets to be configured:

  • CROWDIN_PROJECT_ID - Your Crowdin project ID
  • CROWDIN_PERSONAL_TOKEN - Your Crowdin personal access token

Artifacts Created:

Each workflow run produces:

GitHub Release (primary delivery method):

  • Release tagged with version (e.g., v0.1.0-alpha)
  • ZIP file attached to release
  • SHA256 and MD5 checksums attached
  • Release notes with changelog between tags

Workflow Artifacts (90-day retention):

  • invoiceplane-v2-YYYYMMDD_HHMMSS.zip - Production package
  • sha256.txt - SHA256 checksum
  • md5.txt - MD5 checksum
  • RELEASE_NOTES.md - Changelog

Requirements Addressed:

✅ 1. Retrieve translations from Crowdin (to resources/lang/ with PHP files, full language names)
✅ 2. Build frontend assets for production (optimized yarn install)
✅ 3. Install PHP dependencies without dev requirements
✅ 4. Clean up node_modules directory
✅ 5. Minimize vendor directory (composer-vendor-cleaner + custom cleanup)
✅ 6. Create zip archive for release (with checksums and release notes)
✅ 7. Fetch only last commit (shallow clone with tags for performance)
✅ 8. Tag new release (configurable: alpha/beta/stable in workflow env variable)
✅ 9. Release notes between tags (automatic changelog generation)
✅ 10. Create GitHub Release (automatic publication to Releases section)

Additional Enhancements from User Feedback:

✅ composer-vendor-cleaner integration (optimized installation)
✅ Validation steps with clear output
✅ Checksum generation (SHA256 + MD5)
✅ Release notes generation (between tags)
✅ PHP 8.4 support
✅ Extended PHP extensions for mPDF
✅ .DS_Store cleanup
✅ mPDF optimization (improved readability)
✅ Workflow progress echoes
✅ Crowdin configured for full language names
Automatic versioning and tagging
GitHub Release creation
Shallow clone for performance
Configurable release type

Testing & Validation:

✅ YAML syntax validated
✅ Workflow structure verified
✅ User feedback implemented
✅ Automated code review feedback addressed
✅ CodeQL security scan passed
✅ No security vulnerabilities detected

Original prompt

Every time i merge to master i nedd a GitHub action that: 1) retrieves the translaions from crowdin, 2) yarn install --frozen-lockfile && yarn build (for production), 3) composer install (without require-dev), 4) rm -Rf node_modules, 5) clean the "vendor" directory, so it's as small as possible, 5) zip the project, so it can be released


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@InvoicePlane InvoicePlane deleted a comment from coderabbitai bot Nov 21, 2025
Copilot AI changed the title [WIP] Add GitHub action for production deployment Add automated production release workflow with Crowdin integration Nov 21, 2025
Copilot AI requested a review from nielsdrost7 November 21, 2025 02:17
Copilot AI and others added 2 commits November 21, 2025 02:44
Copilot AI changed the title Add automated production release workflow with Crowdin integration Add automated production release workflow with Crowdin integration, checksums, and release notes Nov 21, 2025
Copilot AI requested a review from nielsdrost7 November 21, 2025 02:49
@InvoicePlane InvoicePlane deleted a comment from coderabbitai bot Nov 21, 2025
crowdin.yml Outdated

files:
- source: /resources/lang/en/**/*.php
translation: /resources/lang/%two_letters_code%/**/%original_file_name%
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot my translation languages don't have "two letters", they are the full language names

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in commit d104ccc. Changed the Crowdin configuration to use %language% placeholder instead of %two_letters_code%. This will now use full language names (e.g., "english", "german", "french") for the directory structure in resources/lang/.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 21, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI changed the title Add automated production release workflow with Crowdin integration, checksums, and release notes Add automated production release workflow with Crowdin integration, automatic versioning, and GitHub releases Nov 21, 2025
Copilot AI requested a review from nielsdrost7 November 21, 2025 03:31
@nielsdrost7 nielsdrost7 marked this pull request as ready for review November 21, 2025 03:44
@nielsdrost7 nielsdrost7 merged commit 9defe4b into feature/85-core-export-clients-invoices-expenses-payments-etc Nov 21, 2025
1 check passed
@nielsdrost7 nielsdrost7 deleted the copilot/add-github-action-for-deploy branch November 21, 2025 03:44
nielsdrost7 added a commit that referenced this pull request Dec 28, 2025
* Making export possible refs #85

* Some more Export tests refs #85

* Making export possible refs #85

* Adds the maatwebsite/excel package and prepares all exports, export services and actions that call the export services refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* just a new phpstan baseline (8 more errors)

* Update Modules/Clients/Exports/ContactsExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Clients/Exports/ContactsLegacyExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Quotes/Feature/Modules/QuotesExportImportTest.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Expenses/Exports/ExpensesExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Payments/Services/PaymentExportService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Refactor exports to use Filament Export Actions with SOLID/DRY principles and i18n support (#128)

* Initial plan

* Create Filament Exporters for all modules

Co-authored-by: nielsdrost7 <[email protected]>

* Update all List Pages to use Filament Export Actions

Co-authored-by: nielsdrost7 <[email protected]>

* Add Filament exports table migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive export refactoring documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Fix exporters: add translations, handle enums/dates/accessors properly, implement DRY with BaseExporter

Co-authored-by: nielsdrost7 <[email protected]>

* Update documentation to reflect code improvements and explain test requirements

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Refactor export tests, document queue requirements, and add AI agent guidelines (#129)

* Initial plan

* Refactor Expenses, Invoices, and Quotes export tests to use Queue fakes

Co-authored-by: nielsdrost7 <[email protected]>

* Complete export test refactoring for all modules and remove exports migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add export architecture documentation explaining temporary nature of export records

Co-authored-by: nielsdrost7 <[email protected]>

* Clean up unused imports in ExpensesExportImportTest

Co-authored-by: nielsdrost7 <[email protected]>

* Update README and documentation files with queue requirements for exports

- Added queue worker requirement to main README.md features and installation
- Updated .github/copilot-instructions.md with Queue System in tech stack
- Added Export System Rules section to copilot-instructions.md
- Enhanced Modules/Core/Filament/Exporters/README.md with detailed queue configuration
- Included local development and production setup instructions
- Added Supervisor configuration example for production environments

Co-authored-by: nielsdrost7 <[email protected]>

* Create comprehensive .junie/guidelines.md for AI agent configuration

Created detailed guidelines document for AI agents (like Junie) with:
- Complete project architecture overview
- SOLID principles and code quality standards
- DTO/Transformer patterns with examples
- Testing standards and export testing rules
- Database/Model conventions
- Filament resource best practices
- Export system architecture and queue configuration
- Security and multi-tenancy guidelines
- Development workflow commands
- Performance optimization strategies
- Common pitfalls to avoid
- Code review checklist
- Documentation references and learning resources

This provides maximum information for AI agents to understand the codebase structure, conventions, and performance requirements.

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Projects/Services/ProjectExportService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Add automated production release workflow with Crowdin integration, automatic versioning, and GitHub releases (#134)

* Initial plan

* Add production release workflow with Crowdin integration

Co-authored-by: nielsdrost7 <[email protected]>

* Optimize release workflow based on code review feedback

Co-authored-by: nielsdrost7 <[email protected]>

* Address final code review feedback and update documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Add explicit permissions to workflow for security (CodeQL fix)

Co-authored-by: nielsdrost7 <[email protected]>

* Enhance workflow with user feedback: PHP 8.4, vendor cleaner, checksums, release notes

Co-authored-by: nielsdrost7 <[email protected]>

* Address code review feedback: optimize vendor cleaner install, improve mPDF cleanup, limit release notes

Co-authored-by: nielsdrost7 <[email protected]>

* Update Crowdin config to use full language names instead of two-letter codes

Co-authored-by: nielsdrost7 <[email protected]>

* Add automatic versioning, tagging, and GitHub release creation

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Apply suggestions from code review

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Copilot <[email protected]>
nielsdrost7 added a commit that referenced this pull request Dec 29, 2025
* [IP-85]: Export Possibilities (#124)

* Making export possible refs #85

* Some more Export tests refs #85

* Making export possible refs #85

* Adds the maatwebsite/excel package and prepares all exports, export services and actions that call the export services refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* just a new phpstan baseline (8 more errors)

* Update Modules/Clients/Exports/ContactsExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Clients/Exports/ContactsLegacyExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Quotes/Feature/Modules/QuotesExportImportTest.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Expenses/Exports/ExpensesExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Payments/Services/PaymentExportService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Refactor exports to use Filament Export Actions with SOLID/DRY principles and i18n support (#128)

* Initial plan

* Create Filament Exporters for all modules

Co-authored-by: nielsdrost7 <[email protected]>

* Update all List Pages to use Filament Export Actions

Co-authored-by: nielsdrost7 <[email protected]>

* Add Filament exports table migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive export refactoring documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Fix exporters: add translations, handle enums/dates/accessors properly, implement DRY with BaseExporter

Co-authored-by: nielsdrost7 <[email protected]>

* Update documentation to reflect code improvements and explain test requirements

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Refactor export tests, document queue requirements, and add AI agent guidelines (#129)

* Initial plan

* Refactor Expenses, Invoices, and Quotes export tests to use Queue fakes

Co-authored-by: nielsdrost7 <[email protected]>

* Complete export test refactoring for all modules and remove exports migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add export architecture documentation explaining temporary nature of export records

Co-authored-by: nielsdrost7 <[email protected]>

* Clean up unused imports in ExpensesExportImportTest

Co-authored-by: nielsdrost7 <[email protected]>

* Update README and documentation files with queue requirements for exports

- Added queue worker requirement to main README.md features and installation
- Updated .github/copilot-instructions.md with Queue System in tech stack
- Added Export System Rules section to copilot-instructions.md
- Enhanced Modules/Core/Filament/Exporters/README.md with detailed queue configuration
- Included local development and production setup instructions
- Added Supervisor configuration example for production environments

Co-authored-by: nielsdrost7 <[email protected]>

* Create comprehensive .junie/guidelines.md for AI agent configuration

Created detailed guidelines document for AI agents (like Junie) with:
- Complete project architecture overview
- SOLID principles and code quality standards
- DTO/Transformer patterns with examples
- Testing standards and export testing rules
- Database/Model conventions
- Filament resource best practices
- Export system architecture and queue configuration
- Security and multi-tenancy guidelines
- Development workflow commands
- Performance optimization strategies
- Common pitfalls to avoid
- Code review checklist
- Documentation references and learning resources

This provides maximum information for AI agents to understand the codebase structure, conventions, and performance requirements.

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Projects/Services/ProjectExportService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Add automated production release workflow with Crowdin integration, automatic versioning, and GitHub releases (#134)

* Initial plan

* Add production release workflow with Crowdin integration

Co-authored-by: nielsdrost7 <[email protected]>

* Optimize release workflow based on code review feedback

Co-authored-by: nielsdrost7 <[email protected]>

* Address final code review feedback and update documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Add explicit permissions to workflow for security (CodeQL fix)

Co-authored-by: nielsdrost7 <[email protected]>

* Enhance workflow with user feedback: PHP 8.4, vendor cleaner, checksums, release notes

Co-authored-by: nielsdrost7 <[email protected]>

* Address code review feedback: optimize vendor cleaner install, improve mPDF cleanup, limit release notes

Co-authored-by: nielsdrost7 <[email protected]>

* Update Crowdin config to use full language names instead of two-letter codes

Co-authored-by: nielsdrost7 <[email protected]>

* Add automatic versioning, tagging, and GitHub release creation

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Apply suggestions from code review

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Copilot <[email protected]>

* [IP-130]: Report Builder: Drag-and-Drop, Block-Based, Multi-Tenant, Grid-Snapped Reports for InvoicePlane v2 (#111)

* Making export possible refs #85

* Some more Export tests refs #85

* Making export possible refs #85

* Adds the maatwebsite/excel package and prepares all exports, export services and actions that call the export services refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* just a new phpstan baseline (8 more errors)

* Initial plan

* Add report_templates disk and ReportTemplateFileRepository with tests

Co-authored-by: nielsdrost7 <[email protected]>

* Address code review feedback - add throw/report config, improve JSON handling

Co-authored-by: nielsdrost7 <[email protected]>

* Add ReportTemplate model and migration for ReportBuilder module (#117)

* Initial plan

* Add ReportTemplate model, migration and tests

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Add BlockDTO, GridPositionDTO, and BlockTransformer for ReportBuilder module (#118)

* Initial plan

* Create BlockDTO, GridPositionDTO, and BlockTransformer

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive tests for BlockDTO, GridPositionDTO, and BlockTransformer

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Implement ReportBuilder service layer with template management and PDF rendering (#119)

* Initial plan

* Add ReportBuilder services, handlers, and factory

Co-authored-by: nielsdrost7 <[email protected]>

* Fix property names in block handlers to match models

Co-authored-by: nielsdrost7 <[email protected]>

* Add unit tests for ReportBuilder services

Co-authored-by: nielsdrost7 <[email protected]>

* Use static BlockFactory methods in ReportRenderer

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Add Filament Admin resources and feature tests for ReportBuilder module (#120)

* Initial plan

* Add Filament Admin resources and feature tests for ReportBuilder

Co-authored-by: nielsdrost7 <[email protected]>

* Add module configuration and service provider for ReportBuilder

Co-authored-by: nielsdrost7 <[email protected]>

* Fix loadBlocks method to properly index blocks by ID

Co-authored-by: nielsdrost7 <[email protected]>

* Address code review feedback: improve filters, confirmations, and test quality (#121)

* Initial plan

* Implement code review feedback: improve filters, confirmations, and test quality

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Clients/Exports/ContactsExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Clients/Models/Relation.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Clients/Services/RelationExportService.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Expenses/Exports/ExpensesExport.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Expenses/Feature/Modules/ExpensesExportImportTest.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Quotes/Filament/Company/Resources/Quotes/Pages/ListQuotes.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Projects/Feature/Modules/TasksExportImportTest.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/ReportBuilder/Repositories/ReportTemplateFileRepository.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Address code review feedback: remove duplication, improve type safety, and harden error handling (#122)

* Initial plan

* Implement code review fixes - part 1

- Remove duplicate color() method call in TasksTable
- Remove unused getStatusColor() helper
- Extract shared formatCurrency() to trait
- Unify export methods in ContactExportService and ProjectExportService
- Tighten mapping type in ContactsExport
- Update PHPDoc for enum casts in Payment model
- Remove no-op mutateDataUsing calls
- Translate hard-coded section headings
- Add PHPMD suppression for unused parameter
- Strengthen QR escaping with full ENT flags
- Use array_replace_recursive for deep merges
- Remove public URL from private disk config
- Harden JSON encoding/decoding with error handling
- Document export_version config constraint
- Instantiate handlers via container

Co-authored-by: nielsdrost7 <[email protected]>

* Add column formatting, user feedback, and logging improvements

- Add explicit column formats for dates and totals in InvoicesExport
- Add user feedback notification after template creation
- Log failed file deletions in ReportTemplateService

Co-authored-by: nielsdrost7 <[email protected]>

* Improve test assertions and coverage

- Add PDF signature check in ReportRenderingTest
- Loosen exception message assertion in BlockFactoryTest
- Verify deep copy in BlockDTOTest cloning test

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Fix duplicate code review issues: DTO initialization, enum serialization, export consistency (#123)

* Initial plan

* Fix blockers: GridPositionDTO constructor and export action ID mismatches

Co-authored-by: nielsdrost7 <[email protected]>

* Fix enum serialization, invalid icons, and ReportTemplateService improvements

Co-authored-by: nielsdrost7 <[email protected]>

* Add medium priority fixes: export headers, null-safety, company context guards

Co-authored-by: nielsdrost7 <[email protected]>

* Add low priority fixes: replace mb_trim, fix ReportRenderer factory usage

Co-authored-by: nielsdrost7 <[email protected]>

* Complete remaining export service improvements (Invoice, Payment, Project, Relation)

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Standardize test naming conventions and AAA comment structure (#125)

* Initial plan

* Standardize unit test naming to use it_ prefix and #[Test] attributes

Co-authored-by: nielsdrost7 <[email protected]>

* Standardize AAA comment casing to lowercase in ReportBuilder tests

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Update config/ip.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* ran pint

* Add AAA comments to ReportTemplateFileRepositoryTest and BlockTransformerTest

Co-authored-by: nielsdrost7 <[email protected]>

* Add AAA comments to all remaining test files in ReportBuilder module

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: Niels Drost <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: wysiwyg <[email protected]>

* [IP-126]: Feature: Implement peppol (#113)

* Making export possible refs #85

* Some more Export tests refs #85

* Making export possible refs #85

* Adds the maatwebsite/excel package and prepares all exports, export services and actions that call the export services refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Intermediary commits for the exports refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* Exports for Projects, Tasks, Products, Payments, Invoices, Quotes, Expenses, Relations, Contacts refs #85

* just a new phpstan baseline (8 more errors)

* Initial plan

* Add comprehensive Peppol integration with HTTP clients, services, actions, and tests

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive Peppol documentation and example configuration

Co-authored-by: nielsdrost7 <[email protected]>

* Add decorator tests and complete documentation with files summary

Co-authored-by: nielsdrost7 <[email protected]>

* Add Peppol fields to relations table and create supporting enums and traits

Co-authored-by: nielsdrost7 <[email protected]>

* Refactor HTTP client architecture: simplify to single request() method, remove convenience methods

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Invoices/Providers/InvoicesServiceProvider.php

Co-authored-by: Copilot <[email protected]>

* Update Modules/Invoices/Tests/Unit/Peppol/Services/PeppolServiceTest.php

Co-authored-by: Copilot <[email protected]>

* Update Modules/Invoices/Tests/Unit/Actions/SendInvoiceToPeppolActionTest.php

Co-authored-by: Copilot <[email protected]>

* Expand Peppol infrastructure: comprehensive format enum, endpoint schemes, Strategy Pattern handlers, and configurable settings

Co-authored-by: nielsdrost7 <[email protected]>

* Implement Strategy Pattern for format handlers with PEPPOL BIS and UBL handlers, update PeppolService with LogsApiRequests trait

Co-authored-by: nielsdrost7 <[email protected]>

* Implement complete e-invoice.be API: Participants, Tracking, Webhooks, and Health clients with comprehensive documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive implementation summary documenting all Peppol features and architecture

Co-authored-by: nielsdrost7 <[email protected]>

* Implement CII format handler with comprehensive UN/CEFACT standard compliance

Co-authored-by: nielsdrost7 <[email protected]>

* Fix ApiClient references across test suite and register CII handler

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive tests for PeppolDocumentFormat enum with 15 test cases

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Clients/Database/Migrations/2025_10_01_002042_add_peppol_fields_to_relations_table.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Modules/Invoices/Peppol/Clients/EInvoiceBe/EInvoiceBeClient.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Implement missing Peppol format handlers and comprehensive test suite (#108)

* Initial plan

* Add missing Peppol format handlers and PeppolEndpointScheme tests

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive tests for format handlers and update README with format documentation

Co-authored-by: nielsdrost7 <[email protected]>

* 📝 Add docstrings to `copilot/implement-format-handlers` (#109)

Docstrings generation was requested by @nielsdrost7.

* #108 (comment)

The following files were modified:

* `Modules/Invoices/Peppol/FormatHandlers/EhfHandler.php`
* `Modules/Invoices/Peppol/FormatHandlers/FacturXHandler.php`
* `Modules/Invoices/Peppol/FormatHandlers/FacturaeHandler.php`
* `Modules/Invoices/Peppol/FormatHandlers/FatturaPaHandler.php`
* `Modules/Invoices/Peppol/FormatHandlers/OioublHandler.php`
* `Modules/Invoices/Peppol/FormatHandlers/ZugferdHandler.php`

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat: Implement PEPPOL e-invoicing with dynamic provider architecture (#104)

* Initial plan

* Add core PEPPOL database migrations, models, providers, and events

Co-authored-by: nielsdrost7 <[email protected]>

* Add Jobs, Services, and enhanced configuration for PEPPOL lifecycle management

Co-authored-by: nielsdrost7 <[email protected]>

* Add audit listener, console commands, and comprehensive architecture documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Refactor PEPPOL to use enums, remove JSON columns, use key-value config, and logging trait

Co-authored-by: nielsdrost7 <[email protected]>

* Implement dynamic provider discovery by scanning Providers directory

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Invoices/Models/CustomerPeppolValidationHistory.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* 📝 Add docstrings to `copilot/add-peppol-architecture-components` (#105)

Docstrings generation was requested by @nielsdrost7.

* #104 (comment)

The following files were modified:

* `Modules/Clients/Database/Migrations/2025_10_02_000007_add_peppol_validation_fields_to_relations_table.php`
* `Modules/Clients/Models/Relation.php`
* `Modules/Invoices/Console/Commands/PollPeppolStatusCommand.php`
* `Modules/Invoices/Console/Commands/RetryFailedPeppolTransmissionsCommand.php`
* `Modules/Invoices/Console/Commands/TestPeppolIntegrationCommand.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000001_create_peppol_integrations_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000002_create_peppol_integration_config_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000003_create_peppol_transmissions_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000004_create_peppol_transmission_responses_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000005_create_customer_peppol_validation_history_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000006_create_customer_peppol_validation_responses_table.php`
* `Modules/Invoices/Enums/PeppolConnectionStatus.php`
* `Modules/Invoices/Enums/PeppolErrorType.php`
* `Modules/Invoices/Enums/PeppolTransmissionStatus.php`
* `Modules/Invoices/Enums/PeppolValidationStatus.php`
* `Modules/Invoices/Events/Peppol/PeppolAcknowledgementReceived.php`
* `Modules/Invoices/Events/Peppol/PeppolEvent.php`
* `Modules/Invoices/Events/Peppol/PeppolIdValidationCompleted.php`
* `Modules/Invoices/Events/Peppol/PeppolIntegrationCreated.php`
* `Modules/Invoices/Events/Peppol/PeppolIntegrationTested.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionCreated.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionDead.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionFailed.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionPrepared.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionSent.php`
* `Modules/Invoices/Jobs/Peppol/PeppolStatusPoller.php`
* `Modules/Invoices/Jobs/Peppol/RetryFailedTransmissions.php`
* `Modules/Invoices/Jobs/Peppol/SendInvoiceToPeppolJob.php`
* `Modules/Invoices/Listeners/Peppol/LogPeppolEventToAudit.php`
* `Modules/Invoices/Models/CustomerPeppolValidationHistory.php`
* `Modules/Invoices/Models/CustomerPeppolValidationResponse.php`
* `Modules/Invoices/Models/PeppolIntegration.php`
* `Modules/Invoices/Models/PeppolIntegrationConfig.php`
* `Modules/Invoices/Models/PeppolTransmission.php`
* `Modules/Invoices/Models/PeppolTransmissionResponse.php`
* `Modules/Invoices/Peppol/Contracts/ProviderInterface.php`
* `Modules/Invoices/Peppol/FormatHandlers/FormatHandlerFactory.php`
* `Modules/Invoices/Peppol/Providers/BaseProvider.php`
* `Modules/Invoices/Peppol/Providers/EInvoiceBe/EInvoiceBeProvider.php`
* `Modules/Invoices/Peppol/Providers/ProviderFactory.php`
* `Modules/Invoices/Peppol/Providers/Storecove/StorecoveProvider.php`
* `Modules/Invoices/Peppol/Services/PeppolManagementService.php`
* `Modules/Invoices/Peppol/Services/PeppolTransformerService.php`
* `Modules/Invoices/Traits/LogsPeppolActivity.php`

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* CodeRabbit Generated Unit Tests: Add PEPPOL PHPUnit test suite and testing documentation (#107)

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Revert "feat: Implement PEPPOL e-invoicing with dynamic provider architecture…" (#112)

This reverts commit 3462b27.

* Copilot/add peppol architecture components (#114)

* Initial plan

* Add core PEPPOL database migrations, models, providers, and events

Co-authored-by: nielsdrost7 <[email protected]>

* Add Jobs, Services, and enhanced configuration for PEPPOL lifecycle management

Co-authored-by: nielsdrost7 <[email protected]>

* Add audit listener, console commands, and comprehensive architecture documentation

Co-authored-by: nielsdrost7 <[email protected]>

* Refactor PEPPOL to use enums, remove JSON columns, use key-value config, and logging trait

Co-authored-by: nielsdrost7 <[email protected]>

* Implement dynamic provider discovery by scanning Providers directory

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Invoices/Models/CustomerPeppolValidationHistory.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* 📝 Add docstrings to `copilot/add-peppol-architecture-components` (#105)

Docstrings generation was requested by @nielsdrost7.

* #104 (comment)

The following files were modified:

* `Modules/Clients/Database/Migrations/2025_10_02_000007_add_peppol_validation_fields_to_relations_table.php`
* `Modules/Clients/Models/Relation.php`
* `Modules/Invoices/Console/Commands/PollPeppolStatusCommand.php`
* `Modules/Invoices/Console/Commands/RetryFailedPeppolTransmissionsCommand.php`
* `Modules/Invoices/Console/Commands/TestPeppolIntegrationCommand.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000001_create_peppol_integrations_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000002_create_peppol_integration_config_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000003_create_peppol_transmissions_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000004_create_peppol_transmission_responses_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000005_create_customer_peppol_validation_history_table.php`
* `Modules/Invoices/Database/Migrations/2025_10_02_000006_create_customer_peppol_validation_responses_table.php`
* `Modules/Invoices/Enums/PeppolConnectionStatus.php`
* `Modules/Invoices/Enums/PeppolErrorType.php`
* `Modules/Invoices/Enums/PeppolTransmissionStatus.php`
* `Modules/Invoices/Enums/PeppolValidationStatus.php`
* `Modules/Invoices/Events/Peppol/PeppolAcknowledgementReceived.php`
* `Modules/Invoices/Events/Peppol/PeppolEvent.php`
* `Modules/Invoices/Events/Peppol/PeppolIdValidationCompleted.php`
* `Modules/Invoices/Events/Peppol/PeppolIntegrationCreated.php`
* `Modules/Invoices/Events/Peppol/PeppolIntegrationTested.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionCreated.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionDead.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionFailed.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionPrepared.php`
* `Modules/Invoices/Events/Peppol/PeppolTransmissionSent.php`
* `Modules/Invoices/Jobs/Peppol/PeppolStatusPoller.php`
* `Modules/Invoices/Jobs/Peppol/RetryFailedTransmissions.php`
* `Modules/Invoices/Jobs/Peppol/SendInvoiceToPeppolJob.php`
* `Modules/Invoices/Listeners/Peppol/LogPeppolEventToAudit.php`
* `Modules/Invoices/Models/CustomerPeppolValidationHistory.php`
* `Modules/Invoices/Models/CustomerPeppolValidationResponse.php`
* `Modules/Invoices/Models/PeppolIntegration.php`
* `Modules/Invoices/Models/PeppolIntegrationConfig.php`
* `Modules/Invoices/Models/PeppolTransmission.php`
* `Modules/Invoices/Models/PeppolTransmissionResponse.php`
* `Modules/Invoices/Peppol/Contracts/ProviderInterface.php`
* `Modules/Invoices/Peppol/FormatHandlers/FormatHandlerFactory.php`
* `Modules/Invoices/Peppol/Providers/BaseProvider.php`
* `Modules/Invoices/Peppol/Providers/EInvoiceBe/EInvoiceBeProvider.php`
* `Modules/Invoices/Peppol/Providers/ProviderFactory.php`
* `Modules/Invoices/Peppol/Providers/Storecove/StorecoveProvider.php`
* `Modules/Invoices/Peppol/Services/PeppolManagementService.php`
* `Modules/Invoices/Peppol/Services/PeppolTransformerService.php`
* `Modules/Invoices/Traits/LogsPeppolActivity.php`

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* CodeRabbit Generated Unit Tests: Add PEPPOL PHPUnit test suite and testing documentation (#107)

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* ran pint

* ran pint

* ran phpstan, pint

* pint, tmp

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: wysiwyg <[email protected]>

* Update Modules/Invoices/Peppol/FormatHandlers/ZugferdHandler.php

Co-authored-by: Copilot <[email protected]>

* Comment out optional health checks in docker.yml

Commented out the optional health checks or tests section.

* Address PR review comments: security fix, SOLID refactoring, FQDN cleanup, documentation updates (#275)

* Initial plan

* Fix security and code style issues from review

Co-authored-by: nielsdrost7 <[email protected]>

* Refactor PaymentService and PaymentExportService following SOLID principles

Co-authored-by: nielsdrost7 <[email protected]>

* Update documentation with Peppol integration details and improved guidelines

Co-authored-by: nielsdrost7 <[email protected]>

* Replace all FQDN usage with proper imports across codebase

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* feat: Implement multiple Filament panel themes (#277)

* Added basic InvoicePlane theme

* Added CSS to invoiceplane-blue theme

* Added CSS to invoiceplane-blue theme

* Updated theme name

* Initial plan

* feat: Add multiple Filament themes (invoiceplane, invoiceplane_blue, nord, orange, reddit)

Co-authored-by: nielsdrost7 <[email protected]>

* feat: Configure themes for all Filament panels and add theme documentation

Co-authored-by: nielsdrost7 <[email protected]>

* docs: Enhance theme documentation with detailed color schemes and quick reference

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: AeroBytesNL <[email protected]>
Co-authored-by: Niels Drost <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Fix PHP 8.2 compatibility by constraining dependency versions (#278)

* Initial plan

* Fix PHP 8.2 compatibility by constraining package versions

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Update pint.yml

* Run Laravel Pint without test flag

* Replace DocumentGroup with unified Numbering system for all entity types (#279)

* Initial plan

* Add Numbering system core files: enum, model, service, DTO, migrations, and factory

Co-authored-by: nielsdrost7 <[email protected]>

* Fix code consistency: use trim instead of mb_trim, ensure mb_str_pad usage

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive unit tests for NumberingService

Co-authored-by: nielsdrost7 <[email protected]>

* Fix company_id handling in NumberingFactory and NumberingService

Co-authored-by: nielsdrost7 <[email protected]>

* Delete Modules/Core/DataTransferObjects/NumberingUpdateResult.php

* Remove create and edit routes from NumberingResource

Removed create and edit routes from getPages method.

* Delete Modules/Projects/Models/Job.php

* Delete Modules/Projects/Models/JobCard.php

* Refactor AbstractNumberGenerator to use Numbering model with thread-safe generation

Co-authored-by: nielsdrost7 <[email protected]>

* Delete Modules/Projects/Support/JobCardNumberGenerator.php

* Delete Modules/Projects/Support/JobNumberGenerator.php

* Remove Job and JobCard from NumberingType enum, keep only Project

Co-authored-by: nielsdrost7 <[email protected]>

* Add all entity types to NumberingType enum and create their number generators

Co-authored-by: nielsdrost7 <[email protected]>

* Merge DocumentGroup schema into Numbering model and migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add reset functionality to AbstractNumberGenerator and create FK migration

Co-authored-by: nielsdrost7 <[email protected]>

* Add DocumentGroup as compatibility layer extending Numbering

Co-authored-by: nielsdrost7 <[email protected]>

* Change primary key from numbering_id back to id

Co-authored-by: nielsdrost7 <[email protected]>

* Remove all DocumentGroup and document_group_id references, replace with Numbering

Co-authored-by: nielsdrost7 <[email protected]>

* Add number fields to Payment, Project, and Task table migrations and models

Co-authored-by: nielsdrost7 <[email protected]>

* Update factories, forms, and tables for Payment, Project, and Task number fields

Co-authored-by: nielsdrost7 <[email protected]>

* Add smoke and crud groups to numbering test

* Rename NumberingFormTest.php to NumberingTest.php

* Delete Modules/Core/Tests/Feature/Numbering directory

* Refactor NumberingTest class and add new tests

* Apply suggestions from code review

Co-authored-by: Copilot <[email protected]>

* Fix code review issues: rename relationships, fix table names, improve tests

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Core/Database/Migrations/2009_01_01_000003_create_numbering_table.php

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Finishing touches: fix prefix replacement, add entity relationships, remove DTO

Co-authored-by: nielsdrost7 <[email protected]>

* Fix reset logic to apply consistently for all numbering schemes

Co-authored-by: nielsdrost7 <[email protected]>

* Fix unbounded while loop and improve company_id resolution with proper exception handling

Co-authored-by: nielsdrost7 <[email protected]>

* Restore extreme logging and add comprehensive template variable tests

Co-authored-by: nielsdrost7 <[email protected]>

* Restrict separators to dash/underscore, add company isolation tests, implement last_id troubleshooting

Co-authored-by: nielsdrost7 <[email protected]>

* Fix Numbering model relationships and update tests for actual schema

Co-authored-by: nielsdrost7 <[email protected]>

* Add missing numbering_id field to InvoiceForm schema

Co-authored-by: nielsdrost7 <[email protected]>

* Add comprehensive tests for numbering scheme changes on existing invoices

Co-authored-by: nielsdrost7 <[email protected]>

* Add duplicate number prevention, company panel numbering resource, and access control

Co-authored-by: nielsdrost7 <[email protected]>

* Move duplicate validation to Observers and internationalize all labels

Co-authored-by: nielsdrost7 <[email protected]>

* Update Modules/Core/Services/CompanyDefaultsBootstrapService.php

Co-authored-by: Copilot <[email protected]>

* Update Modules/Core/Services/NumberingService.php

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Address PR review comments: fix error handling, validation exceptions, and documentation accuracy (#280)

* Initial plan

* Fix PR review comments: improve error handling, docs, and validation

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Add write permissions to pint.yml workflow (#281)

* Initial plan

* Add permissions to pint.yml workflow to enable commit of lint fixes

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Fix Pint workflow auto-commit by replacing action with native git commands (#283)

* Initial plan

* fix: downgrade to git-auto-commit-action@v4 and improve configuration

- Use v4 instead of v5 for better stability
- Add ref parameter to checkout correct branch
- Add debug step to verify changes detection
- Remove complex file_pattern that may cause issues
- Add explicit skip_* configuration options

Co-authored-by: nielsdrost7 <[email protected]>

* fix: replace git-auto-commit-action with manual git commands

- Remove git-auto-commit-action dependency entirely
- Use native git commands for commit and push
- Add conditional check to only commit if changes exist
- Configure git user as github-actions[bot]
- Add clear logging for success/no-changes cases

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* Fix PHP parse error in NumberingCompanyIsolationTest and improve Pint workflow error handling (#284)

* Initial plan

* Fix parse error in NumberingCompanyIsolationTest.php by correcting namespace separator

Co-authored-by: nielsdrost7 <[email protected]>

* Improve pint.yml to commit successfully formatted files even when parse errors occur

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

* style: apply Laravel Pint fixes

* Display Pint progress in real-time during workflow execution (#285)

* Initial plan

* feat: show Pint progress in real-time with duration notice

Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: nielsdrost7 <[email protected]>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: wysiwyg <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: AeroBytesNL <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants