Skip to content

Comments

feat: add interactive tutorial system with welcome and timeline basics tutorials#1491

Merged
yuto-trd merged 21 commits intomainfrom
yuto-trd/interactive-tutorial
Feb 23, 2026
Merged

feat: add interactive tutorial system with welcome and timeline basics tutorials#1491
yuto-trd merged 21 commits intomainfrom
yuto-trd/interactive-tutorial

Conversation

@yuto-trd
Copy link
Member

Description

Implements an interactive tutorial system for Beutl, including a tutorial service, overlay UI, and two built-in tutorials (Welcome and Timeline Basics). Tutorial strings are organized in a dedicated TutorialStrings resource file (separate from Strings.resx) to keep localization concerns modular. Tutorials can be triggered automatically on first run or first scene open, and can also be launched manually from the Help menu or the editor home screen.

Breaking changes

None.

Fixed issues

None.

@yuto-trd yuto-trd force-pushed the yuto-trd/interactive-tutorial branch from bd14543 to 3184b7a Compare February 22, 2026 07:35
@yuto-trd yuto-trd marked this pull request as ready for review February 22, 2026 14:08
Copilot AI review requested due to automatic review settings February 22, 2026 14:08
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 70b404c0de

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements a comprehensive interactive tutorial system for Beutl, including a tutorial service framework, overlay UI for displaying tutorial steps, and three built-in tutorials (Welcome, Timeline Basics, and Animation Editing). The system allows tutorials to be triggered automatically on first run or manually from the Help menu or home screen. Tutorial progress is persisted in configuration, and tutorials can target specific UI elements with highlighting and positioning.

Changes:

  • Added tutorial infrastructure with ITutorialService, TutorialServiceHandler, and supporting data models
  • Implemented TutorialOverlay UI component with visual highlighting and step-by-step navigation
  • Created three built-in tutorials covering basic Beutl usage and animation editing
  • Added tutorial configuration persistence with TutorialConfig in GlobalConfiguration
  • Integrated tutorial access points in Help menu and editor home screen
  • Added localized tutorial strings in separate TutorialStrings resource files (English and Japanese)

Reviewed changes

Copilot reviewed 32 out of 34 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
src/Beutl.Core/Services/Tutorials/ITutorialService.cs Interface defining tutorial service contract with methods for managing tutorial state
src/Beutl.Core/Services/Tutorials/TutorialService.cs Static service locator for accessing the tutorial service
src/Beutl.Core/Services/Tutorials/TutorialDefinition.cs Data model for tutorial metadata and configuration
src/Beutl.Core/Services/Tutorials/TutorialStep.cs Data model for individual tutorial steps with callbacks and targeting
src/Beutl.Core/Services/Tutorials/TutorialState.cs Runtime state tracking for active tutorials
src/Beutl.Core/Services/Tutorials/TargetElementDefinition.cs Configuration for targeting UI elements in tutorial steps
src/Beutl.Core/Services/Tutorials/TutorialStepPlacement.cs Enum for tutorial tip placement options
src/Beutl/Services/Tutorials/TutorialServiceHandler.cs Implementation of tutorial service managing tutorial lifecycle
src/Beutl/Services/Tutorials/TutorialHelpers.cs Utility functions for common tutorial operations (element finding, subscriptions)
src/Beutl/Services/Tutorials/WelcomeTutorial.cs Welcome tutorial introducing basic Beutl features
src/Beutl/Services/Tutorials/TimelineBasicsTutorial.cs Tutorial covering scene editing and animation basics
src/Beutl/Services/Tutorials/AnimationEditTutorial.cs Advanced tutorial for graph editor and animation techniques
src/Beutl/Views/Tutorial/TutorialOverlay.axaml(.cs) UI component displaying tutorial steps with visual highlighting
src/Beutl/Views/Tutorial/TutorialListDialog.axaml(.cs) Dialog for selecting and launching tutorials
src/Beutl/Views/MainView.axaml(.cs) Added tutorial overlay and menu integration
src/Beutl/Views/EditorHostFallback.axaml(.cs) Added tutorial launcher on home screen
src/Beutl.Extensibility/TutorialExtension.cs Base extension class for registering tutorials
src/Beutl/Services/PrimitiveImpls/DefaultTutorialExtension.cs Built-in tutorial extension registering default tutorials
src/Beutl.Configuration/TutorialConfig.cs Configuration for tracking completed tutorials
src/Beutl.Configuration/GlobalConfiguration.cs Integration of tutorial config into global configuration
src/Beutl.Language/TutorialStrings.resx English tutorial strings
src/Beutl.Language/TutorialStrings.ja.resx Japanese tutorial strings
src/Beutl.Language/Strings.resx Added "Tutorials" and "ToggleMute" strings
src/Beutl/App.axaml.cs Initialization of tutorial service
src/Beutl/Services/StartupTasks/LoadPrimitiveExtensionTask.cs Registration of tutorial extension
Files not reviewed (2)
  • src/Beutl.Language/Strings.Designer.cs: Language not supported
  • src/Beutl.Language/TutorialStrings.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

… file

Extract tutorial-related localization strings from Strings.resx into a
new TutorialStrings.resx file, and update all references in tutorial
services and views accordingly. Add a Start Tutorial button to
EditorHostFallback and a Tutorials menu item to the Help menu.
Add FulfillPrerequisites property to TutorialDefinition that allows
tutorials to automatically satisfy their prerequisites when CanStart
returns false. The TutorialServiceHandler now accepts an
autoFulfillPrerequisites parameter that triggers this behavior.

For TimelineBasicsTutorial, this creates a new project in
~/.beutl/tmp/tutorials and opens the scene automatically when no
project is open.
…od for better control over UI thread updates
@yuto-trd yuto-trd force-pushed the yuto-trd/interactive-tutorial branch from df4d2be to 5079069 Compare February 23, 2026 07:01
… in TimelineBasicsTutorial and TutorialHelpers
@github-actions
Copy link
Contributor

No TODO comments were found.

@github-actions
Copy link
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
Beutl.Operators 2% 0% 210
Beutl.Editor 82% 76% 870
Beutl.Core 39% 36% 2997
Beutl.Engine 20% 19% 13925
Beutl.Threading 100% 93% 122
Beutl.Utilities 73% 67% 358
Beutl.Configuration 40% 20% 306
Beutl.Extensibility 14% 15% 102
Beutl.ProjectSystem 12% 6% 2968
Beutl.Language 0% 17% 1049
Summary 24% (13242 / 55182) 23% (3664 / 15765) 22907

Minimum allowed line rate is 0%

@yuto-trd yuto-trd merged commit fc3a90c into main Feb 23, 2026
4 checks passed
@yuto-trd yuto-trd deleted the yuto-trd/interactive-tutorial branch February 23, 2026 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant