feat: Guided Tour - Navigating the Editor#2306
Conversation
🎩 PreviewA preview build has been created at: |
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
a98fb46 to
9f459c8
Compare
45a5a50 to
d1d7979
Compare
9f459c8 to
e7770ca
Compare
d1d7979 to
ca4e7d6
Compare
ca4e7d6 to
433204f
Compare
e26abd3 to
d95e8da
Compare
433204f to
8b17afb
Compare
d95e8da to
6246686
Compare
8b17afb to
76cc3a2
Compare
6246686 to
3adc6cd
Compare
76cc3a2 to
5f30cb6
Compare
## Description This should hopefully fix issues with preview builds in #2306 Adds a `publicAssets` helper than can be users to point public asset urls to the cdn instead of local. <!-- Please provide a brief description of the changes made in this pull request. Include any relevant context or reasoning for the changes. --> ## Related Issue and Pull requests <!-- Link to any related issues using the format #<issue-number> --> ## Type of Change <!-- Please delete options that are not relevant --> - [x] Bug fix - [ ] New feature - [ ] Improvement - [ ] Cleanup/Refactor - [ ] Breaking change - [ ] Documentation update ## Checklist <!-- Please ensure the following are completed before submitting the PR --> - [ ] I have tested this does not break current pipelines / runs functionality - [ ] I have tested the changes on staging ## Screenshots (if applicable) <!-- Include any screenshots that might help explain the changes or provide visual context --> ## Test Instructions <!-- Detail steps and prerequisites for testing the changes in this PR --> ## Additional Comments <!-- Add any additional context or information that reviewers might need to know regarding this PR -->
3adc6cd to
b57b285
Compare
ade8e35 to
a71619d
Compare
b57b285 to
cb2d208
Compare
a71619d to
5939f43
Compare
6e2fe66 to
184b740
Compare
184b740 to
6017dd7
Compare
e1a0ce6 to
98d9144
Compare
Adds the first guided tour. A 14-step walkthrough of the v2 editor registered against the framework introduced in the parent PR. The tour covers menu bar, canvas, dockable panels, task interaction, and the Windows menu. Interactive steps exercise the framework's three primitives — `select-task`, `undock-window`, `redock-window` — each with a non-interactive fallback for when the prompted state is already met. The tour boots into a fresh temporary pipeline cloned from `example-pipelines/Intro-Hello World.pipeline.component.yaml`. DOM anchors added: - data-tour="editor-top-bar" / -menu-items / -top-bar-actions on the menu bar - data-tour="canvas-undo-redo" on the undo/redo cluster - data-tour="windows-menu-content" / -submenu-content on the Windows dropdown content - data-window-id / data-dock-window-content on docked + floating windows - data-task-name on task / IO nodes (via a new `domAttributes` arg on createEntityNode) WindowsMenu now dispatches a `resize` event on open/close so reactour re-measures the portalled dropdown content during step 14.
| "position": "top", | ||
| "stepInteraction": true, | ||
| "interaction": "select-task", | ||
| "targetTaskName": "Greet" |
There was a problem hiding this comment.
🤖 This is an AI-generated code review comment.
This PR adds targetTaskName to the tour data, but TourStep in src/components/Learn/tours/registry.ts only declares interaction, targetWindowId, targetWindowName, and fallbackContent. Because the JSON import is asserted as TourDefinition, this new contract is not type-checked at the source and consumers need separate ad-hoc shapes to access the field.
Suggestion: Add targetTaskName?: string to the shared TourStep type alongside the other tour metadata fields so the tour JSON contract and consumers stay typed from the source.
Rule: .cursorrules TypeScript: use strict TypeScript with proper typing; tangle-ui-review TypeScript typings: prefer proper typing from the source over casts/ad-hoc shapes.

Description
The first registered guided tour against the framework stack (#2348 / #2299 / #2340) —
Navigating the Editor.An 11-step walkthrough of the v2 editor with markdown-formatted copy, stable
data-*selectors, and three interactive moments. Boots into a temporary tour pipeline seeded fromexample-pipelines/Intro-Hello World.pipeline.component.yaml.What's in the tour
select-task)undock-window,targetWindowName: "Task Properties")redock-window)Interactive steps show a checklist of the required action alongside a gated "Next"; completing the action ticks the checklist and the tour auto-advances after a short beat (framework behavior from #2299 / #2340). If the prompted state is already satisfied when the step lands (e.g. the window is already floating), the step opens pre-completed.
Stable selectors
Every step selector targets a
data-*attribute — no.react-flow__*library classes — so the tour doesn't break when the underlying library renames CSS.DOM anchors added in this PR:
data-tour="editor-top-bar",editor-top-bar-left,editor-menu-items,editor-top-bar-actionsonEditorMenuBardata-tour="editor-canvas"on the canvas wrapper inEditorV2data-tour="canvas-undo-redo"on the undo/redo clusterdata-tour="windows-menu-content"/windows-menu-submenu-contenton the Windows dropdown contentdata-window-id/data-dock-window-contenton docked and floating windowsdata-task-nameon task / IO nodes plusdata-tour-node="task"on task nodes only (so step 7 scopes to tasks and not IO ports, which sharedata-task-name)domAttributesarg oncreateEntityNodeinjects these onto the xyflow DOM nodesOne behavior change
WindowsMenunow dispatches aresizeevent on dropdown open/close (with a 250ms follow-up for Radix's exit animation). Without this, reactour can't re-measure the portalled dropdown content during step 11 — the highlight would otherwise stay frozen at the trigger's pre-open coordinates.Related Issue and Pull requests
Progresses https://github.com/Shopify/oasis-frontend/issues/583
Type of Change
Screenshots
Checklist
Test Instructions
Dashboard → Learning Hub → Featured Tours → "Find your way around the editor". Walk through all 11 steps end-to-end.
The tour cannot be paused or dismissed mid-run — ESC, clicks on the mask, and the (hidden) close button are all no-ops; the only mid-tour exit is the Exit Tour button.
/tour/navigating-the-editor?step=N).resizedispatch)./learn/tours; the tour pipeline does not appear in the regular pipelines list./editor/<name>.