packagist psy/psysh v0.12.24
PsySH v0.12.24

7 hours ago

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-readline

Or 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 --session to show, save, or replay only commands from the current REPL session
  • history --clear now 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 timeit median calculation
  • Fix sudo instantiation 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

Don't miss a new psysh release

NewReleases is sending notifications on new releases.