Keep the inbox tour on screen and in step with the user #298
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "tour-waits-for-async-banners"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #289, plus three defects found while testing that fix.
A coach-mark is a top-layer bubble anchored to a live element, which is where all four problems come from.
It started too early. The banners
App.vuerenders above the router view hang off/api/auth/meand/api/accounts; arriving late, they dragged an open bubble down the page (#289). The tour now waits for both. The retention banner needed nothing - it lands with the settings querytour.activealready waits for.A click beside a callout ended it for good. NLDD reports that as reason
ignored, and Waggle mapped it to ending the tour: hint marked seen, demo card gone with it, nothing left on screen to explain what happened. It now puts the same step back and leaves the counter alone. Advancing on it is wrong the other way round - every stray click walks the tour forward, and step 4 opens a card modal over whatever the user was doing.One click counted as many steps. A card list mounts a coach-mark per row (25 cards = 50 of them, all inactive but the tour's own) and NLDD fires
nldd-closeon those too. The tour counted each one, raced to the end and dismissed itself.Hintnow stays quiet unless it is the active coach-mark - the right rule for every consumer. Steps 1-3 live in the list and 4-7 in the card, so the tour also follows the user across that line instead of leaving the screen blank with the skip button still up.The in-card steps were painted under the modal. Both live in the top layer, where the last promotion wins, so a step lit before
showModal()sat under the dialog - present, visible to every locator, invisible to the user until a Tab re-promoted it.Modalalready emitsopenaftershowModal(), so that is when they light up.Testing
Inbox.test.ts,Hint.test.ts: the tour is held whileme/accountsare pending; a click beside the callout keeps its step; a close outside a running tour does nothing; the tour follows the user in and out of a card; an inactive hint stays quiet.onboarding-tour-start.spec.ts: delays/api/accountsand asserts the banner is already up when the tour starts; asserts a click beside the callout neither ends nor advances it; asserts the in-card callout is the topmost element viaelementFromPoint-toBeVisible()passes either way and would not catch it.attachments-lightbox.spec.tsstubbedGET /api/settingswithouthints_seen, so the tour ran through that whole file and competed for the focus those tests assert on; it only passed because the old code destroyed the tour on the first stray click. The stub now carrieshints_seen.Verified in the browser as well as in CI. Local gates: 1095 vitest, e2e 98 passed / 3 skipped, typecheck, eslint, pre-commit.
65d073147ba88fbd23b5a88fbd23b54dd85de8be4dd85de8bed0fb45944dd0fb45944d6265a4cb826265a4cb82eb8f2a6a27247b575ccf259656060fStart the inbox tour only once the banners above it have settledto Keep the inbox tour on screen and in step with the user259656060f73d44de58d