add: Show tutorial invitation on first launch#9169
Conversation
On first launch, hide the profile list and show a focused tutorial invitation. "Start Tutorial" launches the Mudlet Tutorial directly. "Skip - show me the games list" reveals the full connection dialog.
|
Hey there! Thanks for helping Mudlet improve. 🌟 Test versionsYou can directly test the changes here:
No need to install anything - just unzip and run. |
|
#### Brief overview of PR changes/additions Increased test timeouts in TelnetTextDisplayedTest - profile load from 1s to 5s, telnet connect from 500ms to 2s. #### Motivation for adding to Mudlet CI runners are slower than local machines, causing the test to consistently time out and segfault (the QPointer access after timeout triggers a crash). This was blocking PR #9169 and likely other PRs touching the same CI jobs. #### Other info (issues closed, discussion etc) Fixes flaky TelnetTextDisplayedTest failures seen across all CI platforms (Linux, macOS, Windows). Ideally the root cause (crash on timeout) would be fixed, but since the cost here is just a few extra seconds of wait time, increasing the timeouts is a proportionate fix.
|
TriggerEditorTest and dlgTriggerEditorUndoRedoTest were never patched for the tutorial banner; clicking the hidden new_profile_button was a no-op so signal_profileLoaded never fired. The other three tests had dismissal but their 1000 ms wait was tighter than the chained 100 ms qWaits, leaving no headroom on CI.
Adds mudlet::signal_connectionDialogShown, emitted from slot_showConnectionDialog after the dialog's deferred show(). Tests now connect once with Qt::SingleShotConnection and call the new dlgConnectionProfiles::dismissTutorialInvitation() slot directly, instead of polling findChild + isVisible() inside a chain of QTest::qWait calls. Also extracts the old inline button-click handler into the same slot so the user-facing button reuses it.
|
Reviews (3): Last reviewed commit: "Replace tutorial-dismiss polling with si..." | Re-trigger Greptile |
|
Reviews (4): Last reviewed commit: "Replace tutorial-dismiss polling with si..." | Re-trigger Greptile |
Adds qDebug() tracing through the profile creation flow to diagnose timeouts on signal_profileLoaded under offscreen + ASan in CI: dlgConnectionProfiles tutorial dismissal, fillout_form, slot_addProfile, signal_load_profile emit; mudlet::slot_showConnectionDialog timer and slot_connectionDialogueFinished. TriggerEditorTest startProfile traces focus widget at each step. To revert once CI failure is diagnosed.
Brief overview of PR changes/additions
Motivation for adding to Mudlet
New users currently face a wall of 20+ unknown game names with no guidance - a focused tutorial invitation improves first-time retention by teaching basics before choosing a game.
A user who completes the tutorial understands triggers, aliases, and navigation - making them far more likely to pick a game from the list and stick with it. The games list is one click away via the skip button, so no functionality is removed.
Other info (issues closed, discussion etc)
First launch only - experienced users and bootstrap/
telnet://URI launches are unaffected.Test case: Delete
~/.config/mudlet/profiles/(back it up first), launch Mudlet, verify tutorial invitation appears. Click "Start Tutorial" - should launch tutorial. Restart with profiles restored - should show normal dialog.