* Add frontend core, editor adapter & API refactor
* Remove unused Twig macro import and legacy filter
* Move gateway assets to public/gateways
* Include frontend build and assets in Docker image
* Move branding assets to public and refactor build
* Refine update page UI text and styles
* Add 'miterlimit' to cspell word list
* Bump dependencies in composer.lock
* Add esbuild helpers and update imports
* ddev: Node 24, tighten /data & build checks
* Remove .qwen/settings.json
* Docs: expand frontend, build and dev setup
* Add 'docroot' to cspell word list
* Introduce E2E tests using Cypress
* Removed unrelated submodule
* Add Cypress Cloud project ID
* Save Cypress runs to Cloud
* Pass commit information to the container
* Added admin smoke tests
* Redo Cypress workflow
* Increase shm size
* Run Cypress using Electron
* Add dedicated Docker network alias
* Fixed hostname
* Validate sessions via browser navigation
* Disable session fingerprinting during Cypress tests
* Adjust smoke test paths
* Move Cypress usage to npx
* Remove redundant assertions
* Added basic tests for the client area
* Make spellcheck happy
* Fix test cases
* Added client support lifecycle tests
* Separate tests by directories
* Account for the max subject length
* Fix an actual FOSSBilling error
* Getting around the subject character limit
* Restored the long subject
* Timing issues with Bootstrap modals
* Fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Only upload artifacts when recording is disabled
---------
Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Replace Custom Twig components
Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.
m
Update partial_extensions.html.twig
* Update Twig components and migrate to FOSSBilling namespace
* Update Currency module...
* Refactor Twig environment config and loading
* Switch CSRF to cookie-based double-submit
* Add Api Twig extension and restore widget/svg helpers
* Cast language flags; improve JSON parsing
* Add markdown DI service and use in Admin API
* Refactor Twig extensions and markdown, simplify APIs
* Add sandboxed email Twig env, update render APIs
* Fix pagination URL usage and menu class
* Fix HTML markup in email templates
* Use macro for avatars and status badges
* Fix Twig spacing and pagination URL filter order
* Replace Custom Twig components
Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.
m
Update partial_extensions.html.twig
* Update Twig components and migrate to FOSSBilling namespace
* Refactor Twig environment config and loading
* Add Api Twig extension and restore widget/svg helpers
* Cast language flags; improve JSON parsing
* Add markdown DI service and use in Admin API
* Refactor Twig extensions and markdown, simplify APIs
* Fix pagination URL usage and menu class
* Fix Twig spacing and pagination URL filter order
* Use `current_theme` global and refactor `period_title`
* Allow markdown and date in email Twig sandbox
* Update email template examples
* Fix Twig URLs, quoting, and logo alt text
* Fix Twig templates: URLs, i18n, search params
* Use `templates/*` directories for module templates
* Tighten Twig sandbox and add tests
* Add Twig environment and template docs to `AGENTS.md`
* Use Symfony Filesystem/Finder and assorted fixes
* Fix ticket reply link fragment concatenation
* Close missing divs in dashboard template
* Use detailed `toApiArray` for client
* Fix module name resolution for email templates
* Regenerate `composer.lock`
* Use `markdown_to_html` filter in admin macro
* Handle null price/quantity and rename test method
* Use `Tools::isHTTPS()` for HTTPS checks
* Add 'area' param to `url` filter and update templates
* Use client area URLs in admin templates
* Use client area and guest API URLs in templates
* Remove client-side invoice delete feature
* Create Twig env via `TwigFactory` for PDF rendering
* Add embedded orderbutton JS and update render
* Add 'srclink' to cspell allowlist
* Use `renderEmailTplString` for email rendering
* Bump twig/markdown-extra to v3.24
* Use `markdown_to_html` for privacy policy
* Escape API JSON, handle null IP, client URLs
* Remove initial admin creation flow
* Handle HTTP failures and make tests robust
* Use `api_url` helper in admin templates
* Use `url` filter for footer link 5
* Add patch53 to remove legacy html templates
* Bump setting last_patch to 53
* Add patch54 to restore legacy email templates
* Use renderEmailTplString for email templating
* Remove redundant else/endif in order template
* Add file-hash cache buster for asset URLs
* Remove raw Twig filter and handle missing modules dir
* Return '-' for future timestamps
* Register and reuse TwigFactory and add CSRF cookie
* Adjust API URL helper and add Twig error handling
* Update composer.lock and package-lock.json
* Add twig_factory to ServiceTest DI
* Use url filter for link_page in template
* Composer - update deps and add markdown-extra
* Remove docblocks and inline comments in `TwigFactory`
* Add patches 53-55 and update `last_patch`
* Add `has_permission` Twig function; exclude `href`
* Remove duplicate network interface form
* Guard removal of legacy dirs; add network input
* Handle null category descriptions in template
* Add Twig adapter env and sandbox policy
* Add 'striptags' to cspell word list
* Update composer.lock (deps updated/removed)
* Sanitize custom payment adapter templates
* Remove redundant legacy API tests
* Bump `last_patch` setting to 56
* Coalesce null before `markdown_to_html`
* Move update patcher to system CLI command
* Remove stray `endif` from recaptcha macro
* Update composer.lock
* Fix extra closing brace in Api ServiceTest
* Fix test errors from main merge
- Remove testGetRequestCount tests (method moved to RateLimiter)
- Remove testGetDi from Staff and System GuestTest (protected method)
- Fix IP error message in testLoginCheckIpException
- Add rate_limiter mock to Staff GuestTest tests that need it
* Fix remaining Staff GuestTest issues
- Add extension service mock for captcha check
- Fix error message from 'User not found' to 'Admin not found'
* Fix Staff GuestTest: update query and add logger mock
* Fix Staff GuestTest: set admin status to active for password reset flow
* Fix stale API calls and inverted required condition
- Notification: replace removed system_string_render with direct output
- Antispam settings: replace |alink/|link with |url/|api_url filters
- build_form macro: fix inverted required condition for non-textarea inputs
* Sanitize JS/data URIs and disable buttons by permission
* Use client login/profile links in support emails
* Encode fb-api JSON and tighten URL sanitization
* Prefer session auth for API key methods
* Remove stray endif and fix template formatting
* Add CSRF token to CSV exports; fix template
* Remove stray endif in currency template
* Make invoice PDF generation return Response
* Fix Twig filters, templates, and form handling
* Remove readonly from anonymous class in test
* Inline DebugBar CSS/JS in renderHead
* Add Bootstrap Tab to global bootstrap
* Capitalize template UI strings
* Use CKEditor API for reply quotes
* Remove WYSIWYG module and move CKEditor to themes
* Bump `last_patch` in install SQL to 59
* Remove Spamchecker module
* Run domain management script only for active orders
* Standardize UI text capitalization & minor fixes
* Remove Spamchecker legacy tests; fix period test
* Rename Spamchecker tests to Antispam
* Restore antispam config in tests; remove fixture
* Refactor Antispam Guest tests for config checks
* Update theme build docs; remove Wysiwyg module
* Remove spamchecker from cspell and tweak comment
* Add spamchecker to cspell word list
* Capitalize 'Update Graphs' button label
* Migrate asset build system from Webpack Encore to esbuild
Replaces Symfony Webpack Encore with esbuild for frontend asset compilation. Updates documentation, removes related dependencies and config files, and adds esbuild configuration for themes. This modernizes the build process for improved speed and maintainability.
* Remove redundant comments and spinner from build scripts
Cleaned up code by removing unnecessary comments and the spinner utility from esbuild scripts in admin_default and huraga themes. Also simplified logic in API handler, currency entity, currency service, and profile client validator by removing redundant comments and streamlining null/empty checks.
* Add new terms to cspell custom dictionary
Added 'Spriter', 'spriter', 'dataurl', and 'tomselect' to the cspell custom words list to prevent false spelling errors for these terms.
* Potential fix for code scanning alert no. 422: Shell command built from environment values
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for pull request finding 'Unused variable, import, function or class'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Potential fix for pull request finding 'Unused variable, import, function or class'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Potential fix for pull request finding 'Unused variable, import, function or class'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Refactor theme build to use custom SASS and PostCSS pipeline
Replaces direct SCSS imports in JS with a custom esbuild pipeline for both admin_default and huraga themes. Adds SASS and PostCSS (autoprefixer) processing via esbuild plugins, improves tilde (~) import resolution, and ensures CSS is post-processed and source maps are handled. This change modernizes and unifies the asset build process, making it more maintainable and extensible.
* Update sass import and flag-icons path in themes
Changed sass import to use namespace import in both admin_default and huraga esbuild.mjs files for consistency. Set $flag-icons-path in huraga _flags.scss to ensure correct path resolution for flag-icons assets.
* Refactor theme CSS build to use vendor bundles
Introduces separate vendor.css files for both admin_default and huraga themes, consolidating third-party CSS imports. Updates esbuild scripts to build and include these vendor bundles, removes tilde (~) importers, and adjusts SCSS to use CSS variables instead of direct SCSS variable imports. Twig templates are updated to load the new vendor.css files, and Huraga's theme variables are migrated to CSS custom properties for better maintainability.
* Update `package-lock.json` with new CKEditor 5 packages
Added and updated multiple @ckeditor/ckeditor5-* packages to version 47.3.0 and related dependencies. This change likely prepares the project for enhanced or new CKEditor 5 features and plugins.
* Refactor theme build scripts and add shared utils
Introduces a new `@fossbilling/frontend-build-utils` package with shared helpers and esbuild plugins for theme builds. Refactors admin_default and huraga esbuild scripts to use these utilities, improving maintainability and reducing code duplication. Removes unused `sprite.js` and updates asset handling. Updates workspace configuration in `package.json` and `package-lock.json`.
* Refactor theme asset build paths and add svg sprite helper
Migrates theme asset outputs to 'assets/build' directories for both admin_default and huraga themes, updating all references and build scripts accordingly. Adds a Twig function for inlining SVG sprites. Updates SQL defaults and patcher for new asset paths. Removes direct jQuery imports from theme JS entrypoints and uses an esbuild inject shim for global jQuery. Also includes minor CSS and manifest adjustments.
* Potential fix for pull request finding 'Unused variable, import, function or class'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Add PurgeCSS plugin and integrate with theme builds
Introduced a new PurgeCSS plugin in frontend-build-utils to remove unused CSS from bundled files. Updated package.json and package-lock.json to include PurgeCSS and its dependencies. Integrated the plugin into the esbuild scripts for admin_default and huraga themes to enable CSS purging in production builds.
* Set NODE_ENV=production for frontend build
Ensures the frontend assets are built with production optimizations by explicitly setting NODE_ENV=production during the build step in the release workflow.
* Fix static analysis warning in module directory scan
Updated the type check in the module directory scan to use a null coalescing operator, improving compatibility with static analysis tools like PHPStan.
* Update PHPStan baseline for ctype_alnum argument count
Added a new baseline entry to ignore an argument count warning for ctype_alnum in src/modules/Extension/Service.php.
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>