New Features since Beta 3
Regular dialog
-
Branched workflows - Workflow pages can route to different cards based on user input, with no callback script required. New per-card properties:
branch- pick the next card from a dropdown selection (map) or a checkbox state (ifTrue/ifFalse), with an optionaldefaultfallback.nextpage- static override that jumps to a specific cardidafter Next.finalpage- terminates the workflow at this card; Button 1 becomes "Finish" regardless of remaining cards.
The Previous button is history-aware and unwinds whichever path the user actually took.
-
aria2 partial-file support -
cacheExtensionsis now a configurable array that marks an item as "downloading" while a partial file with one of these extensions exists incachePaths. Default is['download','pkg','dmg']; add'aria2'for aria2c, which writes<name>.aria2partials. Leading dot optional. (#617)
Inspect mode
-
Gated cadence engine - DEPNotify-style
POLICY_ARRAYreplacement. Messages only advance when a real monitored attribute is satisfied (app/file/plist/defaults/json/managedpref), with optional IPC drive (cadence:satisfy,cadence:advance,cadence:goto) and per-entry timeout / minimum-dwell controls. NewstepType: "cadence"and matching schema definitionsCadenceEntry/CadenceAttribute. -
cadenceStyle: "carousel"- DEPNotify-style horizontal icon-card row (done/active/pending) for cadence steps. -
managedprefattribute type - Cadence and gating conditions can read/Library/Managed Preferences/<domain>.plistdirectly. MDM-agnostic; works with any management vendor. Supports device and user scope. -
ManagedValueReffor per-tenant branding - Lets brand colour and claims pull from different MDM payload domains via a{domain, key, darkKey}reference. Brand colour can now come from one profile while claim text comes from another. -
Forced appearance - New
appearanceconfig key ("dark"/"light"/"auto") forces the inspect window appearance regardless of the OS setting, in both directions. (#669) -
Preset 3 redesign - Hero block, bottom footer, slim brand progress line, rebalanced spacing.
-
Persistent footer brand logo - Stays across step transitions, supports dark-mode variant, honours
maxHeight. -
Per-item descriptions - List items across Presets 1, 2, 3, 5, and 6 now support a description string rendered beneath the item title. (#663)
-
Unified brand-tinted info badge - Brand colour falls back to
highlightColorwhen not set.
Inspect IPC
-
Per-PID session discovery - New
--published-sessions-dirpublishes a<pid>.jsonfile per running Dialog so external drivers (install scripts, ignitecli, MDM helpers) can discover an active session. -
Enriched session JSON - Published session JSON now includes
resultFile,readinessFile, andeventFilepaths so consumers don't need to guess.
Documentation
Bug Fixes
-
Pseudo notifications no longer steal focus when delivered. (#674)
-
Preset 2 header subtitle now sourced from
message. (#670) -
Preset 2 card window auto-follows installs. (#565)
-
Preset 2 custom status + progress text now respected. (#571)
-
Distributed notifications: ignore trigger-file content written before the session is ready (test added).
Schema & Cleanup
-
inspect-config schema (
inspect-config.schema.json) reconciled againstInspectConfig.swift:- Added:
CadenceAttribute,CadenceEntry,ManagedValueRefdefinitions;cadencekeys onStepBase; newcadencestep-type branch and enum value;appearanceenum. - Removed: duplicate camelCase button keys (
button1Disabled,button1Text,button2Text,button2Visible), legacyFeatureItem/features,guidanceContent.multiline. - Tightened:
cacheExtensionsnow typed asarray<string>with description.
- Added:
-
Scheme cleanup - Removed a stale absolute
--jsonfilelaunch arg from the Dialog App Bundle scheme.