Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time



  • Add support for choosing exit code while handling signal, or to not exit at all
  • Add ProgressBar::setPlaceholderFormatter to set a placeholder attached to a instance, instead of being global.
  • Add ReStructuredTextDescriptor


  • Improve truecolor terminal detection in some cases
  • Add support for 256 color terminals (conversion from Ansi24 to Ansi8 if terminal is capable of it)
  • Deprecate calling *Command::setApplication(), *FormatterStyle::setForeground/setBackground(), Helper::setHelpSet(), Input*::setDefault(), Question::setAutocompleterCallback/setValidator()without any arguments
  • Change the signature of OutputFormatterStyleInterface::setForeground/setBackground() to setForeground/setBackground(?string)
  • Change the signature of HelperInterface::setHelperSet() to setHelperSet(?HelperSet)


  • Add support to display table vertically when calling setVertical()
  • Add method __toString() to InputInterface
  • Added OutputWrapper to prevent truncated URL in SymfonyStyle::createBlock.
  • Deprecate Command::$defaultName and Command::$defaultDescription, use the AsCommand attribute instead
  • Add suggested values for arguments and options in input definition, for input completion
  • Add $resumeAt parameter to ProgressBar#start(), so that one can easily 'resume' progress on longer tasks, and still get accurate getEstimate() and getRemaining() results.


  • Command::setHidden() has a default value (true) for $hidden parameter and is final
  • Remove Helper::strlen(), use Helper::width() instead
  • Remove Helper::strlenWithoutDecoration(), use Helper::removeDecoration() instead
  • AddConsoleCommandPass can not be configured anymore
  • Remove HelperSet::setCommand() and getCommand() without replacement


  • Add TesterTrait::assertCommandIsSuccessful() to test command
  • Deprecate HelperSet::setCommand() and getCommand() without replacement


  • Add GithubActionReporter to render annotations in a Github Action
  • Add InputOption::VALUE_NEGATABLE flag to handle --foo/--no-foo options
  • Add the Command::$defaultDescription static property and the description attribute on the console.command tag to allow the list command to instantiate commands lazily
  • Add option --short to the list command
  • Add support for bright colors
  • Add #[AsCommand] attribute for declaring commands on PHP 8
  • Add Helper::width() and Helper::length()
  • The --ansi and --no-ansi options now default to null.


  • Added SingleCommandApplication::setAutoExit() to allow testing via CommandTester
  • added support for multiline responses to questions through Question::setMultiline() and Question::isMultiline()
  • Added SignalRegistry class to stack signals handlers
  • Added support for signals:
    • Added Application::getSignalRegistry() and Application::setSignalsToDispatchEvent() methods
    • Added SignalableCommandInterface interface
  • Added TableCellStyle class to customize table cell
  • Removed php prefix invocation from help messages.


  • Command::setHidden() is final since Symfony 5.1
  • Add SingleCommandApplication
  • Add Cursor class


  • removed support for finding hidden commands using an abbreviation, use the full name instead
  • removed TableStyle::setCrossingChar() method in favor of TableStyle::setDefaultCrossingChar()
  • removed TableStyle::setHorizontalBorderChar() method in favor of TableStyle::setDefaultCrossingChars()
  • removed TableStyle::getHorizontalBorderChar() method in favor of TableStyle::getBorderChars()
  • removed TableStyle::setVerticalBorderChar() method in favor of TableStyle::setVerticalBorderChars()
  • removed TableStyle::getVerticalBorderChar() method in favor of TableStyle::getBorderChars()
  • removed support for returning null from Command::execute(), return 0 instead
  • ProcessHelper::run() accepts only array|Symfony\Component\Process\Process for its command argument
  • Application::setDispatcher accepts only Symfony\Contracts\EventDispatcher\EventDispatcherInterface for its dispatcher argument
  • renamed Application::renderException() and Application::doRenderException() to renderThrowable() and doRenderThrowable() respectively.


  • deprecated finding hidden commands using an abbreviation, use the full name instead
  • added Question::setTrimmable default to true to allow the answer to be trimmed
  • added method minSecondsBetweenRedraws() and maxSecondsBetweenRedraws() on ProgressBar
  • Application implements ResetInterface
  • marked all dispatched event classes as @final
  • added support for displaying table horizontally
  • deprecated returning null from Command::execute(), return 0 instead
  • Deprecated the Application::renderException() and Application::doRenderException() methods, use renderThrowable() and doRenderThrowable() instead.
  • added support for the NO_COLOR env var (


  • added support for hyperlinks
  • added ProgressBar::iterate() method that simplify updating the progress bar when iterating
  • added Question::setAutocompleterCallback() to provide a callback function that dynamically generates suggestions as the user types


  • allowed passing commands as [$process, 'ENV_VAR' => 'value'] to ProcessHelper::run() to pass environment variables
  • deprecated passing a command as a string to ProcessHelper::run(), pass it the command as an array of its arguments instead
  • made the ProcessHelper class final
  • added WrappableOutputFormatterInterface::formatAndWrap() (implemented in OutputFormatter)
  • added capture_stderr_separately option to CommandTester::execute()


  • added option to run suggested command if command is not found and only 1 alternative is available
  • added option to modify console output and print multiple modifiable sections
  • added support for iterable messages in output write and writeln methods


  • OutputFormatter throws an exception when unknown options are used
  • removed QuestionHelper::setInputStream()/getInputStream()
  • removed Application::getTerminalWidth()/getTerminalHeight() and Application::setTerminalDimensions()/getTerminalDimensions()
  • removed ConsoleExceptionEvent
  • removed ConsoleEvents::EXCEPTION


  • added SHELL_VERBOSITY env var to control verbosity
  • added CommandLoaderInterface, FactoryCommandLoader and PSR-11 ContainerCommandLoader for commands lazy-loading
  • added a case-insensitive command name matching fallback
  • added static Command::$defaultName/getDefaultName(), allowing for commands to be registered at compile time in the application command loader. Setting the $defaultName property avoids the need for filling the command attribute on the console.command tag when using AddConsoleCommandPass.


  • added ExceptionListener
  • added AddConsoleCommandPass (originally in FrameworkBundle)
  • [BC BREAK] Input::getOption() no longer returns the default value for options with value optional explicitly passed empty
  • added console.error event to catch exceptions thrown by other listeners
  • deprecated console.exception event in favor of console.error
  • added ability to handle CommandNotFoundException through the console.error event
  • deprecated default validation in SymfonyQuestionHelper::ask


  • added setInputs() method to CommandTester for ease testing of commands expecting inputs
  • added setStream() and getStream() methods to Input (implement StreamableInputInterface)
  • added StreamableInputInterface
  • added LockableTrait


  • added truncate method to FormatterHelper
  • added setColumnWidth(s) method to Table


  • remove readline support from the question helper as it caused issues


  • use readline for user input in the question helper when available to allow the use of arrow keys


  • added a Process helper
  • added a DebugFormatter helper


  • deprecated the dialog helper (use the question helper instead)
  • deprecated TableHelper in favor of Table
  • deprecated ProgressHelper in favor of ProgressBar
  • added ConsoleLogger
  • added a question helper
  • added a way to set the process name of a command
  • added a way to set a default command instead of ListCommand


  • added a way to force terminal dimensions
  • added a convenient method to detect verbosity level
  • [BC BREAK] made descriptors use output instead of returning a string


  • added multiselect support to the select dialog helper
  • added Table Helper for tabular data rendering
  • added support for events in Application
  • added a way to normalize EOLs in ApplicationTester::getDisplay() and CommandTester::getDisplay()
  • added a way to set the progress bar progress via the setCurrent method
  • added support for multiple InputOption shortcuts, written as '-a|-b|-c'
  • added two additional verbosity levels, VERBOSITY_VERY_VERBOSE and VERBOSITY_DEBUG


  • added support for colorization on Windows via ConEmu
  • add a method to Dialog Helper to ask for a question and hide the response
  • added support for interactive selections in console (DialogHelper::select())
  • added support for autocompletion as you type in Dialog Helper


  • added ConsoleOutputInterface
  • added the possibility to disable a command (Command::isEnabled())
  • added suggestions when a command does not exist
  • added a --raw option to the list command
  • added support for STDERR in the console output class (errors are now sent to STDERR)
  • made the defaults (helper set, commands, input definition) in Application more easily customizable
  • added support for the shell even if readline is not available
  • added support for process isolation in Symfony shell via --process-isolation switch
  • added support for --, which disables options parsing after that point (tokens will be parsed as arguments)