Skip to content

swiftDialog 3.1.1 Release Notes

  • #484 - Restored name= property in --messagefont help text
  • #574 - Date/time picker wired up correctly for --textfield
  • #608 - Repeatable options no longer crash as final argument
  • #630 - --ontop respects dock placement
  • #690 - Imagecaption command-file updates
  • #691 - Preset5 group header rendering
  • #696 - Fixed regression when --hidedefaultkeyboardaction was not working
  • #689 - Minimise/maximise in inspect mode
  • Added boundedBinding and setIfInBounds helpers to Card textfield/toggle bindings to prevent “Index out of range” crashes when advancing off cards with input fields
  • Switched from ForEach(0..<collection.count) to ForEach(Array(collection.indices), id: \.self) to prevent stale index traps
  • Fixed --textfield ...,date and --textfield ...,time to correctly return values
  • --alwaysreturninput returns select/list/JSON results on all quit paths, not just button press.
    • Note: Scripts relying on the old behaviour (only returning on button press) may see new output. Review may be required if using this feature
  • Remote fetches - Bounded by explicit timeouts (10s) for images and markdown
  • Image decoding - Images decode once instead of per-render
  • SVG/PDF loading - Load once via .task instead of per-render
  • View measurements - Use onGeometryChange instead of GeometryReader
  • Per-button timers - Only run when enableOnTimer is set
  • JSON parsing - Parsed once instead of twice at startup

Many arguments that previously accepted only comma-separated values can now be specified as JSON objects. This provides more direct control and is especially useful for complex configurations.

Supported arguments:

  • --textfield
  • --checkbox
  • --listitem
  • --selecttitle / --selectitem
  • --titlefont / --messagefont
  • --icon / --overlayicon
  • --button1symbol / --button2symbol / --infobuttonsymbol

Example:

Terminal window
# Text field with date picker and bounds
dialog --textfield '{"title":"Select Date","date","mindate":"20260901","maxdate":"20260930","format":"+%Y-%m-%d"}'
# Checkbox with icon
dialog --checkbox '{"label":"Enable telemetry","checked":true,"icon":{"sf":"checkmark.circle","colour":"green"}}'
# List item with animated icon
dialog --listitem '{"title":"Download","status":"wait","icon":{"sf":"gear","colour":"blue","animation":"variable"}}'

See individual documentation pages for detailed JSON schemas and examples.

Date and time pickers now support minimum and maximum date bounds via the mindate= and maxdate= modifiers.

Terminal window
dialog --textfield "Pick a day,date,mindate=20260901,maxdate=20260930"

Inspect mode now supports an options object in the JSON configuration to control general dialog behaviour:

{
"options": {
"moveable": true,
"ontop": true,
"resizable": true,
"windowbuttons": "min,max,close"
}
}
  • The isdate modifier for --textfield has been deprecated in favour of date and time
  • Quoted numeric values in JSON configuration (e.g., "size": "40") now trigger a deprecation warning. Use unquoted numbers instead