Feature/composer - #53
Open
donk8r wants to merge 20 commits into
Open
Conversation
- Decouple cookie and request handling from PHP globals - Implement per-request state reset for long-running processes - Add native Swoole support for request and response handling - Standardize header retrieval and cookie state tracking - Enable dynamic project root detection in Env and bin scripts - Replace filter_input with Request properties in Input class - Remove PHP-FPM specific logic and configuration - Bump minimum requirement to PHP 8.4 and add composer.json - Replace backticks with shell_exec in Env class - Update Dockerfile and bootstrap scripts for new architecture - Replace exit calls with App::stop for cleaner termination BREAKING CHANGE: PHP 8.4 is now required and PHP-FPM is removed.
- Add strict type annotations, PHPDoc hints, and generics - Implement explicit return types and scalar casting in typify - Strengthen static analysis for core and library components - Replace call_user_func with direct closure invocations - Optimize cookie setter and language redirection flows - Ensure redirect calls terminate execution using never type - Streamline directory and configuration initialization - Support unquoted bigints and large integers in JSON processing - Validate cryptographic keys, decryption results, and shell args - Fix logic errors in media type detection and email validation - Improve route matching reliability with null checks - Enable multiple output filters and improve block nesting in View - Standardize session identifiers and view content as strings - Convert multi-request initialization errors to exceptions - Prevent silent failures during file system access BREAKING CHANGE: Fetch::add throws Error; Result::unwrapAll returns array; Response::redirect uses never type; View::create requires strings; View::addOutputFilter appends instead of overwriting.
- Remove client-side build tools including Webpack, Babel, and PostCSS - Delete unused frontend components, navigation, and assets - Strip out all Sass stylesheets, variables, and grid systems - Bump minimum PHP requirement to 8.4 and require Swoole - Eliminate PHP-FPM support and associated configurations - Remove core localization system and Lang class - Strip language-aware routing and URL prefixing from Request - Delete SEO Robots plugin and related functionality - Simplify view directory initialization and compilers - Purge over 8000 lines of dead code across the project BREAKING CHANGE: Minimum PHP version is now 8.4, FPM support is removed, and the entire localization system has been deleted.
- Change App::process() return type from View to string - Remove 591-line View templating engine from codebase - Make Session Swoole-compatible with internal static array - Remove PHP native session functions (start/id/destroy/regenerate) - Add Session::destroy() method for container reset - Replace assertions with proper exceptions in Autoload and container() - Remove clearViewCache() shell command and view_filter_* helpers - Translate Russian comments to English across core files - Clean up docblocks and simplify property documentation - Fix typo: callbable to callable in Fetch error message - Rewrite README as comprehensive user guide BREAKING CHANGE: App::process() now returns string instead of View BREAKING CHANGE: Session no longer uses PHP native $_SESSION
- Add clients/README.md documenting [err, data] protocol - Add PHP client with cURL HTTP and error code constants - Add Python client with zero dependencies using urllib - Add TypeScript client with full typing and ESM/CJS outputs - Support configurable timeouts, headers, and request hooks - Implement get, post, put, delete, request methods across clients - Include structured error handling with connection/refused/timeout codes - Add query parameter serialization and URL building utilities - Require PHP 8.1+, ext-curl, ext-json; Python stdlib; strict TypeScript
- Mark Result template as covariant for better type flow - Add precise template inference to ok helper - Use never type for err and err_list helpers
- Introduce per-coroutine connection tracking to prevent race conditions - Add connection pool with idle limit and automatic cleanup via defer - Shift transaction and reconnect state to be coroutine-aware - Switch to MYSQLI_STORE_RESULT to avoid "commands out of sync" errors - Improve reconnection logic by passing parameters during retries
- Implement Coro class for Swoole-aware per-coroutine state storage - Migrate Cookie, Session, Request, Response, and Input to Coro::bag - Prevent state leakage between concurrent requests in Swoole - Replace shell_exec find with RecursiveDirectoryIterator in Env - Extract multi-field transformation logic into transformMulti - Simplify coroutine ID detection in DB class - Restrict lazy resolution in container() to Closure instances - Add PHPUnit 11, PHPStan, and PHPCS scripts to composer.json - Add GitHub Actions CI workflow for PHP 8.4 and 8.5 - Implement comprehensive test suite for all core components - Add CoroutineSafetyTest to verify request state isolation - Update .gitignore and increase package_max_length in skeleton config - Improve type hinting, docblocks, and formatting across core classes
- Add @method annotation parsing in Env - Track route methods in Request and Router - Enforce allowed methods in App and return 405 on mismatch - Add unit tests for method parsing and route propagation - Update router fixtures to include POST method support
- Reset consecutive failure counter on successful queries - Set session wait_timeout to prevent premature disconnects - Prevent non-reconnectable errors from consuming retry budget - Ensure dead connections are unbound before retrying
- Add bin/test runner for fast test discovery and execution - Implement Docker harness for isolated ephemeral test runs - Create core framework with Registry, Kit facade, and AssertionFailed - Implement Runner with support for filtering and directory selection - Add global test DSL with assertion helpers for equality and types - Integrate pcov for code coverage with Clover XML and text summaries - Implement JUnit XML report generation for test results - Configure test environment database and composer binaries
- Log E_DEPRECATED and E_USER_DEPRECATED instead of throwing errors - Remove explicit curl_close calls to avoid PHP 8.5 deprecations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.