feat: Implement Quick Tutorial flow with keyboard-based chapter filtering#650
Open
prince-0408 wants to merge 4 commits intoscribe-org:mainfrom
Open
feat: Implement Quick Tutorial flow with keyboard-based chapter filtering#650prince-0408 wants to merge 4 commits intoscribe-org:mainfrom
prince-0408 wants to merge 4 commits intoscribe-org:mainfrom
Conversation
…ring - Wire 'Quick tutorial' button in InstallationVC to present TutorialView - Add entry screen with tip card, description, chapter list and Start full tutorial button - Add chapter screens with multi-step support and interactive Try it here text fields - Add real-time correct/incorrect feedback for interactive steps - Add TutorialKeyboardDetector to hide Noun annotation chapter for English-only users - Add Non-Scribe keyboard warning screen - Nav bar matches Figma: idle shows back+label, feedback shows bare back+xmark Closes #[issue-number]
Thank you for the pull request! 💙🩵The Scribe-iOS team will do our best to address your contribution as soon as we can. The following are some important points:
Note Scribe uses Conventional Comments in reviews to make sure that communication is as clear as possible. |
Maintainer ChecklistThe following is a checklist for maintainers to make sure this process goes as well as possible. Feel free to address the points below yourself in further commits if you realize that actions are needed :) |
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.
Closes #649
Summary
The "Quick tutorial" button in
InstallationVChad a blank action — clicking it did nothing. This PR implements the full interactive tutorial flow as designed in Figma, allowing users to learn Scribe keyboard features through hands-on practice with interactive "Try it here" text fields.What's Implemented
Core Features
Entry screen (
TutorialView):Chapter screens (
TutorialChapterView):Keyboard detection (
TutorialKeyboardDetector):UserDefaultsWrong keyboard warning:
.onAppearUI/UX Details
Navigation bar behavior (matches Figma):
< Quick tutorial(leading only, no xmark)<(leading) +×(trailing)<(leading) +×(trailing)Feedback messages:
Other details:
Logic Rules Implemented
Noun Annotation Chapter Visibility
Rule: Hide the Noun annotation chapter if only English keyboard is installed, since English nouns don't have grammatical gender.
Implementation:
Languages with noun-gender annotations:
German, Spanish, French, Portuguese, Russian, Italian, Swedish, Norwegian, Danish, Hebrew, Indonesian
Edge cases handled:
Wrong Keyboard Detection
Rule: Show warning screen if user opens tutorial with a non-Scribe keyboard active.
Implementation:
.onAppearof chapter viewFiles Changed
New Files (7)
Scribe/Tutorial/TutorialView.swift— Entry screenScribe/Tutorial/TutorialChapterView.swift— Chapter display with multi-step supportScribe/Tutorial/TutorialChapter.swift— Chapter enum (4 chapters)Scribe/Tutorial/TutorialChapterContent.swift— Step definitions and instructionsScribe/Tutorial/TutorialStep.swift— Step modelScribe/Tutorial/TutorialTipCard.swift— Tip card componentScribe/Tutorial/TutorialKeyboardDetector.swift— Keyboard detection logicModified Files (3)
Scribe/InstallationTab/InstallationVC.swift— Wired "Quick tutorial" button to presentTutorialViewScribe.xcodeproj/project.pbxproj— Added new Tutorial files to Xcode projectScribe/i18nsubmodule — Updated with new localization keys inLocalizable.xcstringsScreenshots
Add screenshots of:
Questions for Review
Keyboard detection method: Currently using
UserDefaults.standard.dictionaryRepresentation()["AppleKeyboards"]— is this the correct approach or should we use a different API?Additional logic rules needed? Are there other scenarios where chapters should be hidden/shown based on:
Localization: All strings use
NSLocalizedStringwith English defaults. Should we pre-translate any languages or wait for Weblate?Accessibility: Should we add VoiceOver labels/hints for the interactive text fields and feedback states?
Testing Checklist
Related
Screenshots