[8/12] feat: onboarding, feature tour & live transcript window - #17
[8/12] feat: onboarding, feature tour & live transcript window#17Mvkd108 wants to merge 2 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Introduces Phase 12 “product experience” surfaces (onboarding + feature tour) and a standalone live transcript window, along with an isolated --phase12-* visual verification mode intended to render these UI states without touching production services or user data.
Changes:
- Added onboarding progress persistence/reconciliation (
OnboardingProgressStore) plus the new onboarding window UI (OnboardingWindow). - Added a feature tour window (
FeatureTourWindow) and Phase 12 visual verification entry point/argument parsing (Phase12PreviewMode). - Added a meeting live transcript window UI (
MeetingLiveTranscriptWindow) and documented the Phase 12 product experience and verification matrix.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| windows-native/Muesli.Windows/Services/ProductExperienceState.cs | Adds DTO-style records for representing product experience state and recent history. |
| windows-native/Muesli.Windows/Services/Phase12PreviewMode.cs | Adds isolated Phase 12 preview/visual verification mode and argument parsing for page/case/theme/size. |
| windows-native/Muesli.Windows/Services/OnboardingProgressStore.cs | Adds durable onboarding progress storage + reconciliation helpers for selection changes. |
| windows-native/Muesli.Windows/OnboardingWindow.xaml.cs | Implements onboarding flow UI logic and gating (microphone/model/hotkey/pipeline checks). |
| windows-native/Muesli.Windows/OnboardingWindow.xaml | Adds onboarding window layout and navigation controls. |
| windows-native/Muesli.Windows/MeetingLiveTranscriptWindow.xaml.cs | Adds live transcript window behavior (positioning, UI updates, copy). |
| windows-native/Muesli.Windows/MeetingLiveTranscriptWindow.xaml | Adds live transcript window layout including partial text and waveform display. |
| windows-native/Muesli.Windows/FeatureTourWindow.xaml.cs | Adds a multi-step feature tour window implementation. |
| windows-native/Muesli.Windows/FeatureTourWindow.xaml | Adds the feature tour window layout. |
| docs/PHASE12_PRODUCT_EXPERIENCE.md | Documents Phase 12 onboarding/preview isolation goals and DPI/monitor verification approach. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| private static string? Option(IReadOnlyList<string> args, string name, string? fallback, out string? error) | ||
| { | ||
| var values = args.Where(arg => arg.StartsWith(name, StringComparison.OrdinalIgnoreCase)).ToArray(); error = null; |
| private void ChangeModelFreeDraft(OnboardingDraft draft) { SaveDraft(draft); RenderStep(); } | ||
| private void AddCompletion() => ContentPanel.Children.Add(new TextBlock { Text = $"Microphone: {(_progress.MicrophoneVerified ? "ready" : "needs test")}\nModels: {(_progress.ModelsVerified ? "ready" : "needs preparation")}\nShortcut: {(_progress.HotkeyVerified ? "ready" : "needs check")}\nDictation test: {(_progress.PipelineVerified ? "passed" : "needs successful transcript")}", TextWrapping = TextWrapping.Wrap, FontSize = 15 }); | ||
|
|
||
| private WpfButton ActionButton(string text, Func<Task> action, System.Windows.Controls.Panel? parent = null) |
| <Button Grid.Column="1" Content="Copy" Margin="8,0,0,0" Padding="8,3" Click="Copy_Click" Style="{StaticResource GhostButton}" /> | ||
| <Button Grid.Column="2" Content="×" Margin="6,0,0,0" Padding="8,3" Click="Dismiss_Click" Style="{StaticResource GhostButton}" /> |
| @@ -0,0 +1 @@ | |||
| <Window x:Class="Muesli.Windows.FeatureTourWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Muesli feature tour" Width="620" Height="440" MinWidth="500" MinHeight="360" WindowStartupLocation="CenterOwner" Background="{DynamicResource BackgroundBaseBrush}" Foreground="{DynamicResource TextPrimaryBrush}" PreviewKeyDown="Window_PreviewKeyDown" Loaded="Window_Loaded"><DockPanel Margin="28"><Grid DockPanel.Dock="Bottom" Margin="0,20,0,0"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><Button x:Name="BackButton" Style="{StaticResource GhostButton}" Content="Back" Click="Back_Click" AutomationProperties.Name="Previous tour step"/><Button x:Name="NextButton" Grid.Column="2" Style="{StaticResource PrimaryButton}" Content="Next" Click="Next_Click" AutomationProperties.Name="Next tour step"/></Grid><StackPanel><TextBlock x:Name="PreviewModeText" Style="{StaticResource SectionLabel}" Foreground="{DynamicResource WarningOrangeBrush}" Visibility="Collapsed"/><TextBlock x:Name="ProgressText" Style="{StaticResource SectionLabel}" AutomationProperties.LiveSetting="Polite"/><TextBlock x:Name="TitleText" Style="{StaticResource PageTitle}"/><TextBlock x:Name="BodyText" Style="{StaticResource PageSubtitle}" TextWrapping="Wrap" AutomationProperties.LiveSetting="Polite"/><TextBlock Text="The tour is always replayable from About or the tray." Margin="0,18,0,0" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/></StackPanel></DockPanel></Window> | |||
Adds first-run onboarding covering permissions and model setup, a feature tour for returning users, persistent onboarding progress, and a preview mode flag so the experience can be exercised without a fresh profile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A separate always-on-top window showing the live transcript during a meeting, positioned via the shared window placement service. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9298051 to
b207701
Compare
|
Claude finished @Mvkd108's task in 2m 12s —— View job Claude finished reviewing PR #17Tasks
High:
|
This PR (8/12): onboarding, feature tour & live transcript window
Commits:
213e414feat: onboarding window, feature tour and product experience state —OnboardingWindow.xaml(.cs),FeatureTourWindow.xaml(.cs),Services/OnboardingProgressStore.cs,Services/ProductExperienceState.cs,Services/Phase12PreviewMode.cs,docs/PHASE12_PRODUCT_EXPERIENCE.md9298051feat: meeting live transcript window —MeetingLiveTranscriptWindow.xaml(.cs)10 files, +897.
Review focus
OnboardingProgressStore).FeatureTourWindow— trigger conditions and one-shot semantics.MeetingLiveTranscriptWindow— update cadence against the PR 6 live session; speaker rendering hooks.Phase12PreviewMode/ProductExperienceState— gating of preview experiences.Expected — do not flag: these windows are not shown by the app shell until PR 9/10 wiring; live transcription remains Off by default (PR 6 limits).
Known limits
scripts/verify-phase12-ui.ps1(PR 12) exists for the physical pass.Test evidence
--no-restore); 484/484 passing; visual parity cells 352/352.Phase12ProductExperienceTests.Previous: #16 | Next: #18