New-ImageConsoleStory
Creates a reusable script-free console story from PowerShell-native steps, captured transcript lines, or a native ChartForgeX terminal story.
Syntax
New-ImageConsoleStory
[-AnimationScale <Int32>]
[-EndHoldSeconds <Double>]
[-FilePath <String>]
[-FramesPerSecond <Int32>]
[-MaximumFrames <Int32>]
[-NoLoop]
[-PassThru]
[-Show]
[-StoryScript] <ScriptBlock>
[<CommonParameters>]#StoryScriptNew-ImageConsoleStory
[-AnimationScale <Int32>]
-Content <ScriptBlock>
[-CustomPrompt <String>]
[-Dialect <TerminalDialect>]
[-EndHoldSeconds <Double>]
[-FilePath <String>]
[-FontSize <Double>]
[-FramesPerSecond <Int32>]
[-InitialDelaySeconds <Double>]
[-LineDelaySeconds <Double>]
[-LineHeight <Double>]
[-MaximumFrames <Int32>]
[-NoFinalPrompt]
[-NoLoop]
[-Palette <TerminalTheme>]
[-PassThru]
[-PngOutputScale <Int32>]
[-Show]
[-Speed <Slow| Normal| Fast>]
[-TabHoldSeconds <Double>]
[-Theme <String>]
[-Title <String>]
[-TypingSpeed <Double>]
[-Width <Int32>]
[-WindowStyle <MacOS| WindowsTerminal| Minimal>]
[-WorkingDirectory <String>]
[<CommonParameters>]#ContentNew-ImageConsoleStory
[-AnimationScale <Int32>]
[-CustomPrompt <String>]
[-Dialect <TerminalDialect>]
[-EndHoldSeconds <Double>]
[-FilePath <String>]
[-FontSize <Double>]
[-FramesPerSecond <Int32>]
[-InitialDelaySeconds <Double>]
[-LineDelaySeconds <Double>]
[-LineHeight <Double>]
[-MaximumFrames <Int32>]
[-NoFinalPrompt]
[-NoLoop]
[-Palette <TerminalTheme>]
[-PassThru]
[-PngOutputScale <Int32>]
[-Show]
[-Speed <Slow| Normal| Fast>]
-Step <ImageConsoleStoryStep[]>
[-TabHoldSeconds <Double>]
[-Theme <String>]
[-Title <String>]
[-TypingSpeed <Double>]
[-Width <Int32>]
[-WindowStyle <MacOS| WindowsTerminal| Minimal>]
[-WorkingDirectory <String>]
[<CommonParameters>]#StepNew-ImageConsoleStory
[-AnimationScale <Int32>]
[-EndHoldSeconds <Double>]
[-FilePath <String>]
[-FramesPerSecond <Int32>]
[-MaximumFrames <Int32>]
[-NoLoop]
[-PassThru]
[-Show]
-Story <TerminalStory>
[<CommonParameters>]#StoryNew-ImageConsoleStory
[-AnimationScale <Int32>]
-CommandText <String>
[-CustomPrompt <String>]
[-Dialect <TerminalDialect>]
[-EndHoldSeconds <Double>]
[-FilePath <String>]
[-FontSize <Double>]
[-FramesPerSecond <Int32>]
[-InitialDelaySeconds <Double>]
-InputObject <String>
[-LineDelaySeconds <Double>]
[-LineHeight <Double>]
[-MaximumFrames <Int32>]
[-NoFinalPrompt]
[-NoLoop]
[-Palette <TerminalTheme>]
[-PassThru]
[-PngOutputScale <Int32>]
[-Show]
[-Speed <Slow| Normal| Fast>]
[-TabHoldSeconds <Double>]
[-Theme <String>]
[-Title <String>]
[-TypingSpeed <Double>]
[-Width <Int32>]
[-WindowStyle <MacOS| WindowsTerminal| Minimal>]
[-WorkingDirectory <String>]
[<CommonParameters>]#TranscriptDescription
The recommended Content and Step parameter sets compose objects created by the New-ImageConsoleStoryCommand, Output, Table, BlankLine, Pause, Tab, and Select-ImageConsoleStoryTab cmdlets. StoryScript remains available as the low-level ChartForgeX builder escape hatch.
The cmdlet renders deterministic SVG or HTML motion, animated GIF or APNG motion, and a completed PNG state. It never executes the displayed command: callers run scripts themselves and pipe captured output when they want a real execution transcript.
Examples
Author a paced multi-tab Windows Terminal presentation
$story = New-ImageConsoleStory -WindowStyle WindowsTerminal -Width 1100 -Speed Slow -Content {
New-ImageConsoleStoryTab -Id PowerShell -Title 'PowerShell' -Profile PowerShell -Active
New-ImageConsoleStoryCommand -Text 'dotnet build'
New-ImageConsoleStoryOutput -Text 'Build succeeded.' -Style Success
New-ImageConsoleStoryTab -Id WindowsPowerShell -Title 'Windows PowerShell' -Profile WindowsPowerShell
New-ImageConsoleStoryCommand -Text '.\Invoke-LegacyTests.ps1'
New-ImageConsoleStoryOutput -Text 'PS 5.1 compatibility passed.' -Style Success
New-ImageConsoleStoryTab -Id Ubuntu -Title 'Ubuntu' -Profile Ubuntu
New-ImageConsoleStoryCommand -Text './build.sh'
New-ImageConsoleStoryOutput -Text 'Linux package ready.' -Style Success
}
$story | Export-ImageConsoleStory -Path '.\demo.gif'Creates three persistent tab buffers. Each new tab opens atomically after the previous tab's reading dwell, then the shared story is exported through Export-ImageConsoleStory.
Jump between retained sessions intentionally
$story = New-ImageConsoleStory -WindowStyle WindowsTerminal -Speed Slow -Content {
New-ImageConsoleStoryTab -Id PowerShell -Profile PowerShell -Active
New-ImageConsoleStoryTab -Id Logs -Title 'Build logs' -Profile PowerShell -Background
New-ImageConsoleStoryCommand -Text 'dotnet build'
Select-ImageConsoleStoryTab -Id Logs
New-ImageConsoleStoryOutput -Text 'Waiting for integration tests...' -Style Muted
New-ImageConsoleStoryPause -Seconds 1.5
Select-ImageConsoleStoryTab -Id PowerShell
New-ImageConsoleStoryCommand -Text 'Get-ChildItem .\artifacts'
}
$story | Export-ImageConsoleStory -Path '.\navigation.gif'Background prepares an inactive tab. Each Select step deliberately switches to a retained buffer; a pause can show that session ready and a later command continues it.
Render output captured from an actual script run
$output = & .\Invoke-EnvironmentAudit.ps1 2>&1 | Out-String -Stream -Width 110
$story = $output | New-ImageConsoleStory -CommandText '.\Invoke-EnvironmentAudit.ps1' -Dialect PowerShell
$story | Export-ImageConsoleStory -Path '.\audit-demo.svg'The caller controls execution; the cmdlet only turns the captured lines into a deterministic presentation.
Export a portable animated GIF for chat or documentation
$story = New-ImageConsoleStory -Dialect CSharp -Title 'dotnet run - ChartForgeX' -Content {
New-ImageConsoleStoryCommand -Text 'var chart = Chart.Create().WithTitle("Weekly builds");'
New-ImageConsoleStoryCommand -Text 'chart.SavePng("weekly-builds.png");'
New-ImageConsoleStoryOutput -Text 'Saved weekly-builds.png' -Style Success
}
$story | Export-ImageConsoleStory -Path '.\chart-demo.gif' -FramesPerSecond 10 -EndHoldSeconds 1.5GIF and APNG export sample the same deterministic terminal timeline used by SVG and HTML.
Tune typing and tab reading time independently
$story = New-ImageConsoleStory -Speed Normal -TypingSpeed 36 -TabHoldSeconds 2.5 -Content {
New-ImageConsoleStoryCommand -Text 'Invoke-ProjectBuild'
New-ImageConsoleStoryOutput -Text 'Build completed.' -Style Success
}TypingSpeed is measured in visible characters per second. A command-level DurationSeconds value remains the most specific override.
Parameters
- -AnimationScale Int32
- Raster density multiplier used for animated GIF and APNG output.
- -EndHoldSeconds Double
- Completed-state hold time used for animated GIF and APNG output.
- -FilePath String
- Output file path. Supported extensions are SVG, HTML, HTM, PNG, GIF, and APNG.
- -FramesPerSecond Int32
- Frame rate used for animated GIF and APNG output.
- -MaximumFrames Int32
- Maximum frame budget used for animated GIF and APNG output.
- -NoLoop SwitchParameter
- Produce a single-play animated GIF or APNG instead of a repeating animation.
- -PassThru SwitchParameter
- Write the configured ChartForgeX TerminalStory to the pipeline.
- -Show SwitchParameter
- Open the generated presentation after creation.
- -StoryScript ScriptBlock
- Script block that receives and configures a new ChartForgeX TerminalStory.
- -Content ScriptBlock
- PowerShell-native authoring block that emits command, output, table, pause, tab declaration, and tab-selection steps.
- -CustomPrompt String
- Prompt text used when Dialect is Custom.
- -Dialect TerminalDialect
- Prompt dialect used for captured transcript presentations.
- Possible values:
PowerShell,Bash,CommandPrompt,Python,CSharp,Custom - -FontSize Double
- Terminal font size used by composed and captured stories.
- -InitialDelaySeconds Double
- Delay before the first animated step.
- -LineDelaySeconds Double
- Delay between output lines.
- -LineHeight Double
- Terminal line height used by composed and captured stories.
- -NoFinalPrompt SwitchParameter
- Hide the final prompt and cursor in the completed story.
- -Palette TerminalTheme
- Optional custom palette, normally created by New-ImageConsoleStoryPalette.
- -PngOutputScale Int32
- PNG output density multiplier used by composed and captured stories.
- -Speed TerminalStoryPlaybackSpeed
- Reusable playback pace. Slow leaves the most reading time, Normal is balanced, and Fast is intended for short demos.
- Possible values:
Slow,Normal,Fast - -TabHoldSeconds Double
- Optional minimum reading time after content appears and before the active tab changes. When omitted, Speed selects the hold: Slow 2 seconds, Normal 0.9 seconds, or Fast 0.35 seconds.
- -Theme String
- Built-in terminal color palette used by composed and captured stories.
- Possible values:
Dark,PowerShell,WindowsPowerShell,Ubuntu,Campbell,Classic,Light - -Title String
- Terminal title shown for captured transcript presentations.
- -TypingSpeed Double
- Optional simulated command typing speed in visible characters per second. When omitted, Speed selects the rate: Slow 28, Normal 42, or Fast 72 characters per second.
- -Width Int32
- Logical terminal width used by composed and captured stories.
- -WindowStyle TerminalWindowStyle
- Visible terminal window chrome, independent of the color palette and prompt dialect.
- Possible values:
MacOS,WindowsTerminal,Minimal - -WorkingDirectory String
- Working directory shown in shell prompts for captured transcript presentations.
- -Step ImageConsoleStoryStep[]
- Typed console story steps. Accepts pipeline input and arrays created by the console story step cmdlets.
- -Story TerminalStory
- Native ChartForgeX terminal story to render.
- -CommandText String
- Command text shown before captured transcript lines.
- -InputObject String
- One captured output line. Accepts pipeline input and never executes the displayed command.
Common Parameters
This command supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable.
For more information, see about_CommonParameters.