Repository navigation
0.12.0
·
36 commits
to develop
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
Breaking Changes
- feat: gate before hooks, policy-level before and an ability-checked event by @markshust in #571
- feat!: add remember, add, pull and forever to the cache by @markshust in #572
- feat!: add marko/redis shared connection package and move cache-redis onto it by @markshust in #573
- feat!: engine-agnostic template functions, shared view data and precompile contract by @markshust in #577
- feat!: streamed and file responses with http range support by @markshust in #578
- feat!: relationship existence filters with exists, column comparison and not-in query primitives by @markshust in #579
- feat!: queue job contract changes (per-job state, release(JobInterface), PushResult, shared JobRunner) by @markshust in #580
- feat!: log handler contract, handler stacking and a stdout/stderr stream handler by @markshust in #581
- feat!: schedule console commands and run them in the background by @markshust in #582
- feat!: end a user's other sessions and remember-me devices by @markshust in #587
- feat!: job failure hook, one final-failure path, and job lifecycle events by @markshust in #591
- feat: run scheduled tasks on one server with onOneServer() and a lock-backed TaskMutex by @markshust in #592
- feat!: queue retry deadline (RetryUntilInterface), maxExceptions and self-release by @markshust in #597
- feat!: per-job timeout, worker --max-time, and one worker stop-reason mechanism by @markshust in #602
- feat!: redis queue driver (marko/queue-redis) by @markshust in #603
- feat!: queue:restart for graceful worker restarts after deploys by @markshust in #605
- feat: make marko/cache optional for marko/queue by @markshust in #607
- refactor!: set the module loader once in the latte and twig engine factories by @markshust in #628
- refactor!: move SleeperInterface into marko/core by @markshust in #629
- feat: detect changes to the discovery environment variables in the config cache by @markshust in #630
- fix: resolve a relative cache path against the project root by @markshust in #631
- feat!: log queue worker output through LoggerInterface instead of error_log() by @markshust in #633
New Features
- feat: scheduler time helpers, per-task time zones and when/skip conditions by @markshust in #568
- feat: notification sender interface and FakeNotificationSender by @markshust in #569
- feat: format, size, date comparison, distinct and enum validation rules by @markshust in #570
- feat: filesystem fake, swappable disks via FilesystemManagerInterface and shared path rules by @markshust in #574
- feat: password reset broker with hashed, expiring tokens by @markshust in #575
- feat: production config caching through discovery:cache by @markshust in #576
- feat: implicit and presence-aware validation rules by @markshust in #583
- feat: password confirmation middleware for sensitive routes by @markshust in #584
- feat: exists and unique validation rules for entities (marko/validation-database) by @markshust in #585
- feat: session, auth, download and json validation assertions for http tests by @markshust in #586
- feat: atomic cache locks with redis, file and array stores by @markshust in #588
- feat: login challenge hook and two-factor authentication package by @markshust in #589
- feat: current password and password strength validation rules by @markshust in #590
- feat: passkey (webauthn) sign-in and management package (marko/authentication-passkey) by @markshust in #593
- feat: latte and twig template precompilers for view:cache by @markshust in #594
- feat: signed and temporary signed urls with a valid-signature middleware by @markshust in #595
- feat: unique queue jobs (UniqueJobInterface) that skip duplicate dispatches by @markshust in #596
- feat: add marko/forms with redirect-back flash of validation errors and old input by @markshust in #598
- feat: email verification with signed links and a verified middleware by @markshust in #599
- feat: flashed validation-error and old-input assertions on TestResponse by @markshust in #600
- feat: register only named packages with bin/register-packagist.sh by @markshust in #606
- feat: list URL_SIGNING_KEY in the skeleton .env.example by @markshust in #622
- feat: serve file and streamed responses through the roadrunner bridge by @markshust in #626
- feat: add FakeUserPersister to marko/testing by @markshust in #627
- feat: database-backed password reset token repository (marko/authentication-database) by @markshust in #635
- feat: cache-backed restart signal for queue workers on several hosts by @markshust in #637
- feat: ship marko/log with the file and stream handlers in the skeleton by @markshust in #642
- feat: throw when a failed job can't be stored instead of only logging it by @markshust in #643
Bug Fixes
- fix: render validation redirects through http exception responders by @markshust in #604
- fix: accept the compiled-template cache directory on windows by @markshust in #623
- fix: declare health's optional packages and fail loudly when one is missing by @markshust in #634
- fix: resolve relative local disk roots against the project root by @markshust in #638
- fix: make flaky detached devserver and amphp sse stream timeout tests deterministic by @markshust in #639
Documentation
- docs: remove the markotalk example from the readme and docs by @markshust in #645
Refactoring
- refactor: verify admin passwords through PasswordVerifierInterface by @markshust in #624
- refactor: resolve configured paths through ProjectPaths by @markshust in #632
Testing
- test: derive the root composer.json package set from packages/ by @markshust in #625
CI
- ci: label a pr breaking only for a ! title or BREAKING CHANGE: footer by @markshust in #644
- ci: bump checkout to v7, setup-node to v7 and composer-install to v4 by @markshust in #646
Maintenance
- chore: tests never read documentation by @markshust in #530
Full Changelog: 0.11.0...0.12.0