v0.20.0

Latest release

27 October 2026

Icons move into their own addon with a cached sprite, visitor preferences are renamed to options, and Proc::run() runs child processes for the whole core.

Added

  • The icons addon draws Lucide icons with {icon('name', 'class')} as a <use> of one cached sprite at /icons/sprite; inline: true returns the SVG itself. A site adds or overrides an icon at site/views/@icons/{name}.svg.
  • Proc::run($command, $cwd, $timeout, $input, $env) runs a command without a shell and returns a ProcResult.
  • Str::isDigits(), Str::base64(), Arr::random(), F::readLink(), Dt::microtime(), Res::svg() and Res::onShutdown().
  • Cookie::pick() and Cookie::choose() read and set a cookie limited to a list of allowed values.
  • The option() and editing() template functions.
  • The code field type takes a theme option, and highlight() takes a $theme argument.
  • Repeater and stack rows have a drag handle, and reordering a list triggers autosave.

Changed

  • Hx::navigate() is Hx::redirect().
  • Prefs is Options: $app->prefs is $app->options, the prefs config key is options, cookies are option_{key} instead of pref_{key}, and the view is @phlat/options.
  • GitResult is ProcResult.
  • The code.theme config key is fieldtype.code.theme.
  • Icons moved from phlat/icons/ into the icons addon, mounted at icons. Run phlat addons:mount icons on an existing site.

Fixed

  • Editing a nested list field no longer re-renders the top-level field.
  • A collapsed ui dropdown menu no longer catches clicks.

Comments

No comments yet. Be the first!

Loading form…