From release verification. Partially addressed during review — the worst case is fixed, two residuals remain.
Already fixed: a tour that resolves empty now swaps the copy to noTour ("Hundreds more where that came from"), so a user who never saw a tour no longer gets "You just made your first". Good.
Residual 1 — the congratulation still fires on endings that earned no congratulation
tourWasShown is set from started, not from the ending's outcome. So a tour that was abandoned (the user also gets a loadError toast) or skipped on step 1 still shows the ran copy — "That was one of hundreds — You just made your first."
The abandoned case is the sharp one: an error toast and a congratulation, at the same time, for the same event.
finish() already computes outcome and skipReason. Arming on those rather than on "a tour started" makes each ending say the right thing — and would let a genuine skip stay silent if that is preferred.
Residual 2 — nudge_shown still fires for a tour that never started
The panel still appears and still emits nudge_shown when no tour ever ran. The copy is now correct, but the funnel event is not: nudge_shown counts an audience that includes users the tour declined.
If the nudge is meant to be shown to that population, the event should distinguish them so the two are separable downstream.
Verified at
#14145 head b43daae4e4 — useFirstRunTourController.ts:47,150,158, FirstRunTourNudge.vue:79-82.
From release verification. Partially addressed during review — the worst case is fixed, two residuals remain.
Already fixed: a tour that resolves empty now swaps the copy to
noTour("Hundreds more where that came from"), so a user who never saw a tour no longer gets "You just made your first". Good.Residual 1 — the congratulation still fires on endings that earned no congratulation
tourWasShownis set fromstarted, not from the ending's outcome. So a tour that was abandoned (the user also gets aloadErrortoast) or skipped on step 1 still shows therancopy — "That was one of hundreds — You just made your first."The abandoned case is the sharp one: an error toast and a congratulation, at the same time, for the same event.
finish()already computesoutcomeandskipReason. Arming on those rather than on "a tour started" makes each ending say the right thing — and would let a genuine skip stay silent if that is preferred.Residual 2 —
nudge_shownstill fires for a tour that never startedThe panel still appears and still emits
nudge_shownwhen no tour ever ran. The copy is now correct, but the funnel event is not:nudge_showncounts an audience that includes users the tour declined.If the nudge is meant to be shown to that population, the event should distinguish them so the two are separable downstream.
Verified at
#14145headb43daae4e4—useFirstRunTourController.ts:47,150,158,FirstRunTourNudge.vue:79-82.