a74162e34e
- Bottom-bar resolution dropdown (1080p60/1080p30/720p60/480p30) with tooltip on finding upload bandwidth; disabled while live; no in-app speed test - FocusPreservingListBox keeps selection/focus coherent when a selected scene/source is deleted (skip hidden scenes; leave list when empty) - Themes/Controls.xaml: single dark-theme dictionary merged once in App.xaml; custom ComboBox template fixes SelectionBoxItem rendering; GoLiveWindow and ReuseImageDialog consolidated onto shared styles - AppLog file logger + AppDomain/Dispatcher exception hooks; checkpointed MainWindow/VM/dialog constructors (caught MenuItemRole.Separator XAML crash) - Memory map: schema.md conventions, per-directory index.md, updated ai.md/ TASKS.md/README.md (OAuth creds real; token persistence still pending)
18 lines
1.1 KiB
Markdown
18 lines
1.1 KiB
Markdown
# Helpers — index
|
|
|
|
Cross-cutting utilities. See [`schema.md`](../schema.md) for the memory-map conventions.
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `ViewModelBase.cs` | `INotifyPropertyChanged` + `SetProperty<T>()` — base for all ViewModels |
|
|
| `RelayCommand.cs` | `ICommand` implementation for all button actions |
|
|
| `AppLog.cs` | File logger to `%APPDATA%\ytLlive\startup.log`; startup checkpoints + unhandled-exception capture (the crash this map is named for) |
|
|
| `FocusPreservingListBox.cs` | `ListBox` subclass that keeps selection/focus coherent when the selected item is deleted; `IsSelectable` predicate skips hidden scenes; drag-reorder guard |
|
|
| `OAuthCredentials.cs` | Baked-in Google OAuth client ID/secret (desktop app; loopback callback) |
|
|
| `ImageCache.cs` | Image byte caching (assets live in the DB) |
|
|
| `InverseBoolToVisibilityConverter.cs` / `NotNullToVisibilityConverter.cs` | XAML value converters for visibility bindings |
|
|
|
|
Related: [`Themes/Controls.xaml`](../Themes/Controls.xaml) styles the lists this
|
|
class backs; [`Models/index.md`](../Models/index.md) and
|
|
[`ViewModels/index.md`](../ViewModels/index.md) for the objects it works on.
|