Assign Request::$allowMethodOverride on the class before any Request is
built, so the constructor does not cache an overridden verb while the
static still defaults to true. When override is disabled and an override
header or _method field is present, recompute the cached request method
so early Flight::request() access cannot keep a spoofed DELETE/PUT/PATCH.
Add regression tests for the Engine start path, early request construction,
_method, and intentional manual method assignment without override input.
make:controller now generates App\Controller under app/Controller/, and
ai:generate-instructions writes only AGENTS.md with Twig/SimplePdo
conventions. Clear a stale PHPStan baseline entry and resolve PHPCS
issues so multi-PHP tests/phpstan/phpcs pass cleanly.
Allow class components to return full <style> or <script> tags from css() and js(), while preserving default wrapping for raw CSS/JS strings. Add data-provider coverage and fixtures for both custom style and custom script tag behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Extend View component rendering tests to cover functional and class components receiving props via variadic and individual parameters, and update View callable invocation to map template data into callable arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use per-render instance state for component style/script dedupe in View::fetch so assets are deduped within a render without leaking across tests or subsequent renders.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
On Windows, PHP_EOL is \\r\\n but the CLI library writes \\n to the
output file. The removeColors() helper converts \\r\\n→\\n, so using
str_replace(PHP_EOL, '') afterwards failed to strip those \\n on
Windows, leaving newlines in the haystack while the needle had none.
Fix: replace both \\r\\n and \\n so all newline variants are stripped
from both needle and haystack before comparison, making the test
platform-independent.
String middleware classes that do not exist or fail container
resolution are now validated at request time, matching route
handler behavior. Middleware that only implements one phase
(before/after) continues to be skipped for the other phase.
Fixes#696