Skip to content

swiftDialog 3.1.0 Release Notes

swiftDialog 3.1.0 introduces Cards — a powerful new feature for building multi-step dialog workflows from a single JSON configuration.

  • Define an array of cards in your JSON, each with its own title, message, icon, and input fields
  • Users can navigate forward and backward between cards, with input preserved across navigation
  • Accumulated input from all cards is returned as a single JSON output on completion
  • Global configuration properties (defined outside the cards array) act as defaults, overridable per card
  • New --onadvance argument allows a shell script to run when the user advances between cards — the script receives the current card index, card ID, and user input via stdin as JSON, and can block advancement by exiting with a non-zero code
  • Required field validation is enforced per card before advancing
  • Button bar adapts automatically (Back / Next / Finish) based on card position

See Cards for full documentation.


Notifications are now delivered by dedicated helper apps (Dialog Alert.app and Dialog Banner.app) rather than Dialog.app itself.

  • Separate apps for Alert and Banner style notifications, ensuring the correct macOS notification presentation style
  • Helper apps are bundled inside Dialog.app/Contents/Helpers/ and are automatically invoked by the dialog CLI launcher when --style alert or --style banner is used alongside --notification
  • The “Approve Notifications” alert now persists until dismissed — it no longer auto-dismisses
  • New app icons for the notifier helper apps

Deprecation Notice: Sending notifications via Dialog.app directly (without --style alert or --style banner) is deprecated. A warning is now printed to stderr when this legacy usage is detected. This behaviour will be removed in a future release and notifications without a specified style will be delivered as banners by default using the Dialog Banner.app helper.


The --bannerimage argument now supports solid colour and gradient options in addition to image files.

Solid colour banner:

Terminal window
dialog --bannerimage "colour=accent"
dialog --bannerimage "colour=#0066CC"
dialog --bannerimage "colour=blue,nogradient" # disable the default gradient overlay

A subtle gradient overlay is applied by default. Append ,nogradient to disable it.

Multi-colour gradient banner:

Terminal window
dialog --bannerimage "gradient=red,orange,yellow"
dialog --bannerimage "gradient=red,orange,yellow:angle=135"

Colours are comma-separated names or hex values. The optional :angle=<degrees> suffix sets the gradient direction (0 = bottom-to-top, 90 = left-to-right, 180 = top-to-bottom; default is 90).

The same colour= and gradient= keywords also work for --background (watermark) images.


Subtitle Argument (for use with --title and --bannertitle)

--subtitle allows you to add a subtitle below the main title. This is useful for providing additional context or instructions to the user.

Terminal window
dialog --title "Main Title" --subtitle "This is a subtitle"

The subtitle text is styled with the same font properties as the title but at 75% opacity. When a banner image is used with --bannertext enable, the subtitle also adopts the banner text styling (white colour, shadow).

Title Font Offset

--titlefont now accepts an offset=<float> parameter to nudge the title text vertically within its container. Useful when using banner images with overlaid title text but can also be used in regular dialogs to fine-tune title positioning.

Terminal window
dialog --titlefont "size=36,offset=-10"

The following arguments existed in earlier releases but were not documented. Help text is now available via --help <argument> for each:

ArgumentDescription
--helpalignment [left|centre|right]Sets the text alignment of the help sheet message
--helpsheetbuttontext <text>Sets the dismiss button label on the help sheet (default: OK)
--iconalttext <text>Accessibility label for the dialog icon
--bannerheight <num>Sets the height of the banner image area in points
--selectstyle [list|radio|searchable|multiselect]Global display style for all select lists
--progresstextalignment [left|right]Horizontal alignment of progress bar text (default: centred)
--verboseEnable verbose log output to stderr
--eulaDisplay message in EULA mode (monospaced, scrollable)
--alwaysreturninputReturn user input for all exit codes, not just exit code 0
--hidetimerHide the countdown indicator during image carousel autoplay transitions
--listfontsPrint all available font names to stdout

  • Fix #632 — Multiselect dropdown correctly renders selected tags in a scrollable flow layout