Laravel Prompts v0.3.15 Adds Streaming, Tasks, Autocomplete, and More
Published on by Eric L. Barnes
Laravel Prompts v0.3.15 is out and it introduces several new features that make it easier to create interactive, real-time, and even AI-driven terminal applications.
Laravel Prompts v0.3.15 is out! A ton of new primitives came out of building the Cloud CLI (+ some unreleased stuff π), so we decided to bake them in Prompts itself. - @joetannenbaum
Run Long Processes with task()
The new task() helper makes it simple to run long-running operations while keeping users informed.
It includes a live-updating spinner, scrolling log output, and clear success, warning, and error states that persist after completion. You can also dynamically update the task label as progress changes.
This is especially useful for deployments, installs, or any process where visibility matters.
Stream Output in Real Time with stream()
The stream() prompt enables incremental output directly to the terminal.
It includes built-in word wrapping, ANSI support, and a smooth fade-in effect. This makes it ideal for:
- AI-generated responses
- Live logs
- Progressive output from APIs
Anything that arrives over time can now be displayed naturally in the CLI.
Smarter Input with autocomplete()
With autocomplete(), users get type-ahead suggestions while still retaining full control over their input.
You can provide:
- A static array of options
- A dynamic closure that filters suggestions as the user types
This is perfect for things like config keys, file paths, or commonly used values where speed matters.
Dynamic Context with Select Prompt info
Select-based prompts now support a dynamic info panel.
By passing a closure, you can display contextual details based on the currently highlighted option. This works across:
selectmultiselectsearchmultisearchsuggest
Use cases include showing pricing, descriptions, IDs, or any additional metadata that helps users make better decisions.
Set Terminal Titles with title()
The new title() helper allows you to update the terminal window or tab title programmatically.
This is particularly useful for long-running commands. Users can monitor progress at a glance, even when the terminal is in the background. Passing an empty string resets the title.
Send Desktop Alerts with notify()
notify() brings native system notifications to your CLI applications.
- macOS support includes subtitles and sounds
- Linux support includes custom icons
This is ideal for background tasks like deployments or builds. Start a process, switch tabs, and get notified when it completes.
Building AI-Powered CLI Apps
These new primitives work especially well together. A simple example:
- Accept user input
- Update the terminal title with
title() - Process the request using an AI agent wrapped in
task() - Stream the generated output with
stream()
This pattern opens the door for powerful AI-driven developer tools directly in the terminal.
Learn More
All of these features are available now and fully documented in the official docs:
β https://laravel.com/docs/13.x/prompts
You can also view the original announcement thread here: