v1 task queue: add TASK 19-23 (transitions, hotkeys, media source, audio sync, studio mode)

- TASKS.md: added 5 new tasks for v1 feature completeness, execution order, updated backlog
- MONETIZATION.md: added v1 feature completeness section (competitive gap analysis)
- ai.md: added v1 task queue note in Current limitations/TODOs
- HANDOFF.md: updated session state and next steps
- ViewModels/SocialsDialogViewModel.cs: removed isPremium parameter (social slot locks)
- ViewModels/MainViewModel.cs: removed isPremium argument from SocialsDialogViewModel constructor
- ytLive.Tests/SocialsDialogViewModelTests.cs: updated 5 tests for unlocked slots
This commit is contained in:
2026-08-19 11:51:32 -07:00
parent f9ad7c2cb1
commit e97406d649
6 changed files with 375 additions and 103 deletions
-1
View File
@@ -2626,7 +2626,6 @@ public class MainViewModel : ViewModelBase
SignInAsync,
SignOutYouTubeAsync,
_youtubeAuth.CurrentChannel,
IsPremium,
_socials);
var window = new ytLive.SocialsDialog(dialog) { Owner = Application.Current.MainWindow };
if (window.ShowDialog() == true)
+2 -5
View File
@@ -204,7 +204,6 @@ public sealed class SocialsDialogViewModel : ViewModelBase
private readonly ISocialValidator _validator;
private readonly Func<Task<YouTubeChannel?>> _signInProvider;
private readonly Func<Task> _signOutAction;
private readonly bool _isPremium;
private readonly List<DialogEntry> _working = new();
private readonly CancellationTokenSource _cts = new();
private YouTubeChannel? _account;
@@ -218,13 +217,11 @@ public sealed class SocialsDialogViewModel : ViewModelBase
Func<Task<YouTubeChannel?>> signInProvider,
Func<Task> signOutAction,
YouTubeChannel? account,
bool isPremium,
SocialsConfig? current = null)
{
_validator = validator;
_signInProvider = signInProvider;
_signOutAction = signOutAction;
_isPremium = isPremium;
_barEnabled = current?.BarEnabled ?? true;
_account = account;
_isSignedIn = account != null;
@@ -494,9 +491,9 @@ public sealed class SocialsDialogViewModel : ViewModelBase
slot.ProfileUrl = entry.ProfileUrl;
slot.FediverseSoftware = entry.FediverseSoftware;
}
else if (!_isPremium && i >= 2)
else if (i >= 2)
{
slot.IsLocked = true;
// Slot is empty — ready for user to add
}
}
slot.PropertyChanged += OnSlotPropertyChanged;