Experimental interactive readline
The pure-PHP experimental readline implementation now has its own built-in pager. Long output opens in an alternate-screen pager with keyboard and mouse scrolling, search, wrap-aware layout, and sensible scrollback behavior after exit.
This is specific to PsySH's experimental userland readline, and it's another reason to give it a try:
psysh --experimental-readlineOr enable it in config:
'useExperimentalReadline' => true,The built-in pager is enabled automatically with experimental readline, or explicitly with 'pager' => true.
We'd love your feedback! Try it out and let us know what works, what doesn't, and what still feels weird.
Better docs
doc understands more PHP manual targets directly, including structured manual page IDs like language.types.array, language type/operator pages, and language constructs like array and list. Addresses #937 (thanks @Tomirad!)
Manual output also got a big upgrade: variadic signatures make more sense; structured text, tables, and code blocks now render properly; PHP snippets get syntax highlighting; and wrapping works better across styled and wide-character output.
History improvements
- Added
history --sessionto show, save, or replay only commands from the current REPL session history --clearnow rejects filters and range options instead of accepting combinations it ignores
Bug fixes
- Fix exception formatting over-matching and eating the beginning of error messages. Fixes #943 (thanks @bilboque!)
- Fix
timeitmedian calculation - Fix
sudoinstantiation for classes without constructors - Avoid deprecated reflection calls on PHP 8.4+
Under the hood
- Readline rendering now uses widgets and a shared mode stack for completion, history search, and the pager
- Release automation now creates draft releases with
gh - Removed Codecov from CI
- Added Dependabot cooldowns and updated CI dependencies. Thanks @dependabot!
- Fixed Laravel and MediaWiki smoke tests