Skip to content

Feature/composer - #53

Open
donk8r wants to merge 20 commits into
masterfrom
feature/composer
Open

Feature/composer#53
donk8r wants to merge 20 commits into
masterfrom
feature/composer

Conversation

@donk8r

@donk8r donk8r commented Apr 28, 2026

Copy link
Copy Markdown
Member

No description provided.

donhardman and others added 20 commits April 4, 2026 19:26
- 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
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