feat(tui): interactive getting-started tour on first run, replayable on demand#3427
Merged
Conversation
Add a hands-on onboarding tour that teaches docker agent by doing instead of reading docs: a floating card observes the real UI and advances when the user performs each step (send a message, approve a tool call, open the palette, use a slash command), with read steps for agent YAML concepts and where to find help. Enter skips a step, Esc quits at any point. The card anchors to the bottom-right of the content area, under the sidebar, and renders below dialogs, so it never hides session info or the feature it teaches. The tool step completes only when the user actually approves a tool call from the confirmation dialog, not when an auto-approved tool responds. Entry points: the getting-started command (alias tour), the /getting-started slash command and palette entry (new Help category), a first-run offer dialog, and a pointer in root help. The offer is prompt-first and never shown in non-interactive, lean, record/replay, read-only, or initial-message runs, honors DOCKER_AGENT_NO_TOUR=1, and folds the telemetry notice into the dialog. State persists in the config dir next to the first-run marker: starting the tour or choosing never stops the offer, not now re-offers on a later run. Closes #3426
Sayt-0
force-pushed
the
feat/getting-started-tour
branch
from
July 3, 2026 08:53
2c5f17d to
f7dccbf
Compare
The suggested ask ("what's in this folder?") routes to the filesystem
list tool, which carries ReadOnlyHint and is auto-approved by the
dispatcher, so no confirmation dialog ever appeared and the step could
not complete. Suggest "run ls in the shell" instead: the shell tool
always prompts. The step body now says that only side-effecting tools
wait for approval instead of claiming nothing runs unapproved.
Also tone the card down: drop the emoji from step titles and the
palette entry (keep the welcome wave and the end-of-tour confetti) and
replace the em-dashes in tour copy, notifications, and command help
with plain punctuation.
dgageot
approved these changes
Jul 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements #3426: a short, skippable, hands-on tour inside the TUI that teaches docker agent by doing, offered on the first interactive run and replayable on demand.
The tour is a floating card that observes the real UI's message stream: each step completes when the user actually performs the action it describes. The card never steals focus and renders below dialogs, so the feature being taught (palette, tool approval) is never hidden by it.
Card rendering (step, then completion flash before auto-advance; titles carry a small emoji in the real UI):
Steps
Enter (on an empty editor) skips a step; Esc quits the tour at any point. Completed steps flash a short celebration, then auto-advance.
Issue expectations mapping
getting-startedwithtouralias/getting-started, new Help palette category<config-dir>/.cagent_tourcontainingdoneornevergetting-startedinvocations tracked via the existing TrackCommand; per-step TUI events would need new telemetry plumbing in pkg/tui, left outOpen questions resolution
getting-started, withtouraliasImplementation notes
getting-starteddispatches through the registered run command (same mechanism as the root command's no-args default), so the session behaves exactly like a regular interactive run.Testing
go build,go vet,golangci-lint run, andgo run ./lint .are clean. The full test suite passes except five packages whose SSRF/private-address tests fail identically on a clean tree in the development environment (pkg/config, pkg/httpclient, tools builtin api/fetch/openapi), unrelated to this change. A manual run of the built binary (docker-agent getting-startedwith isolated state dirs) confirmed the full CLI to TUI to tour path executes and persists the state file.closes #3426