swiftDialog 3.1.1 Release Notes
- #484 - Restored
name=property in--messagefonthelp text - #574 - Date/time picker wired up correctly for
--textfield - #608 - Repeatable options no longer crash as final argument
- #630 -
--ontoprespects dock placement - #690 - Imagecaption command-file updates
- #691 - Preset5 group header rendering
- #696 - Fixed regression when
--hidedefaultkeyboardactionwas not working - #689 - Minimise/maximise in inspect mode
- Added
boundedBindingandsetIfInBoundshelpers 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)toForEach(Array(collection.indices), id: \.self)to prevent stale index traps - Fixed
--textfield ...,dateand--textfield ...,timeto correctly return values --alwaysreturninputreturns 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
Performance Improvements
Section titled “Performance Improvements”- 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
.taskinstead of per-render - View measurements - Use
onGeometryChangeinstead of GeometryReader - Per-button timers - Only run when
enableOnTimeris set - JSON parsing - Parsed once instead of twice at startup
Enhancements
Section titled “Enhancements”Per-Argument JSON Configuration
Section titled “Per-Argument JSON Configuration”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:
# Text field with date picker and boundsdialog --textfield '{"title":"Select Date","date","mindate":"20260901","maxdate":"20260930","format":"+%Y-%m-%d"}'
# Checkbox with icondialog --checkbox '{"label":"Enable telemetry","checked":true,"icon":{"sf":"checkmark.circle","colour":"green"}}'
# List item with animated icondialog --listitem '{"title":"Download","status":"wait","icon":{"sf":"gear","colour":"blue","animation":"variable"}}'See individual documentation pages for detailed JSON schemas and examples.
Date Picker Bounds
Section titled “Date Picker Bounds”Date and time pickers now support minimum and maximum date bounds via the mindate= and maxdate= modifiers.
dialog --textfield "Pick a day,date,mindate=20260901,maxdate=20260930"Inspect Mode General Options
Section titled “Inspect Mode General Options”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" }}Deprecations
Section titled “Deprecations”- The
isdatemodifier for--textfieldhas been deprecated in favour ofdateandtime - Quoted numeric values in JSON configuration (e.g.,
"size": "40") now trigger a deprecation warning. Use unquoted numbers instead