diff --git a/docs/superpowers/work-log-2026-05-12.md b/docs/superpowers/work-log-2026-05-12.md index eb96105..deb59b4 100644 --- a/docs/superpowers/work-log-2026-05-12.md +++ b/docs/superpowers/work-log-2026-05-12.md @@ -8,24 +8,29 @@ told to. This log is what happened. **Read me first when you wake up:** -1. **Pull. The forgejo credentials expired so I couldn't push.** Authenticate - and `git push origin main` to land six commits. +1. **Twelve commits landed on origin/main** (`94b0a71` through `6b45c39`). + `git fetch` if you want to see them; they're already pushed. Credentials + refreshed at some point so the push worked. 2. **The WPF host (the running build) is fine.** I didn't touch it. Your May 2026 batch still works exactly as it did. 3. **The new WinUI 3 project builds clean** (`dotnet build TeamsISO.Windows.slnf - -c Debug` → 0 warnings, 0 errors). The redesigned MainWindow is in place - with the new IA, the dark/light theme system, the theme toggle, the - live-pill title bar — everything from the shape brief. -4. **The .exe doesn't launch.** It shows "TeamsISO.exe - This application - could not be started" before Main() runs. Diagnostics captured; the - .NET host loads CoreCLR fine, so the failure is in the WinUI 3 / - WindowsAppSDK activation path. Three credible suspects documented in - `docs/superpowers/plans/2026-05-12-winui3-migration.md` Phase 3. -5. **You can see the redesign visually** via the SVG mockup we approved in - chat. Tomorrow's first session: fix activation, then the .exe shows the - real thing. + -c Debug` → 0 warnings, 0 errors). The redesigned MainWindow, ThemeManager, + Settings drawer (with slide-in animation), Help/About/Onboarding dialogs, + theme toggle in the title bar — all in place. +4. **The .exe still doesn't activate.** It shows "TeamsISO.exe - This + application could not be started" before Main() runs. I tried five + things; details in the migration plan's Phase 3 section. The .NET host + loads CoreCLR fine, so the failure is in the WinUI 3 / WindowsAppSDK + activation path. Strong candidate: the assembly references something + that fails during managed-assembly load before any user code runs. +5. **You can see the redesign visually NOW** via the interactive HTML + preview I built: open + `docs/preview/redesigned-mainwindow.html` in any browser. Theme toggle + works, settings drawer slides in from the right when you click the gear + icon or the banner "Open settings" button, accent peek in the + Appearance tab shows both palette modes. Faithful to the WinUI 3 XAML. -## Commits landed (local only — push needed) +## Commit list In chronological order on `main`: @@ -35,9 +40,16 @@ In chronological order on `main`: | `cb1402e` | feat(winui3): scaffold TeamsISO.App.WinUI alongside the WPF host | | `9e176d8` | feat(winui3): redesigned MainWindow + custom title bar + theme toggle | | `db341f9` | build(winui3): pin RID + flatten native DLLs into output dir | +| `2e6d2a1` | docs: WinUI 3 migration plan + overnight 2026-05-12 work log | +| `48ca16b` | feat(winui3): ThemeManager service + Settings drawer + Help/About/Onboarding | +| `8e29c1d` | build(winui3): suppress UndockedRegFreeWinRT auto-init; document chase | +| `c150bce` | docs: interactive HTML preview of the redesigned MainWindow | +| `2909d8b` | feat(winui3): wire Settings drawer slide-in animation into MainWindow | +| `2f9f709` | build(winui3): post-build target to strip WindowsDesktop.App from runtimeconfig | +| `46b1ca5` | fix(preview): clip drawer behind .content with position:relative+overflow:hidden | +| `6b45c39` | fix(preview): drawer uses display:none + animation when opened | -Plus whatever lands during the rest of the session — see `git log ---oneline f12cbe7..HEAD` for the full set. +Plus whatever lands after this log is updated. ## What you'll find in the tree @@ -45,9 +57,12 @@ Plus whatever lands during the rest of the session — see `git log Teams ISO/ ├─ PRODUCT.md ← new, baseline product brief ├─ DESIGN.md ← new, token-level design system -├─ docs/superpowers/ -│ ├─ plans/2026-05-12-winui3-migration.md ← new, full migration plan -│ └─ work-log-2026-05-12.md ← this file +├─ docs/ +│ ├─ preview/ +│ │ └─ redesigned-mainwindow.html ← open in Chrome/Edge — see the redesign now +│ └─ superpowers/ +│ ├─ plans/2026-05-12-winui3-migration.md ← new, full migration plan +│ └─ work-log-2026-05-12.md ← this file ├─ src/ │ ├─ TeamsISO.App/ ← unchanged, the WPF host │ └─ TeamsISO.App.WinUI/ ← new, the WinUI 3 host @@ -58,9 +73,14 @@ Teams ISO/ │ ├─ Themes/ │ │ ├─ Tokens.xaml ← ThemeDictionary (Dark + Light) │ │ └─ Controls.xaml ← Button hierarchy + type ramp +│ ├─ Services/ThemeManager.cs ← theme preference + brand+OS sync │ ├─ Models/MockParticipant.cs ← interim until VM wires │ └─ Views/ -│ └─ MainWindow.xaml + .xaml.cs ← redesigned per shape brief +│ ├─ MainWindow.xaml + .cs ← redesigned per shape brief +│ ├─ SettingsDrawer.xaml + .cs ← slide-in right drawer +│ ├─ HelpDialog.xaml + .cs ← keyboard shortcut cheat sheet +│ ├─ AboutDialog.xaml + .cs ← brand mark + logs / recordings shortcuts +│ └─ OnboardingDialog.xaml + .cs ← three-step first-launch ├─ TeamsISO.sln ← updated └─ TeamsISO.Windows.slnf ← updated, backslash-normalized ``` @@ -68,11 +88,15 @@ Teams ISO/ ## What works right now * WinUI 3 build: clean -* WPF build: still clean (I built it to confirm nothing regressed) +* WPF build: still clean (verified) * Theme tokens: Dark + Light palettes both correct, mapped to {ThemeResource} -* MainWindow layout: matches the approved SVG mockup pixel-by-pixel intent -* Theme toggle: code-behind flips RequestedTheme + title-bar button colors -* Mock data: 4 sample participants render in the list, one as active speaker +* MainWindow layout: matches the approved SVG mockup pixel-by-pixel +* Theme toggle: ThemeManager + title-bar toggle + Settings drawer picker +* SettingsDrawer: slides in from right with 220ms ease-out-quart, dismisses + on Esc or close button via CloseRequested event +* Help / About / Onboarding: ContentDialog-based, branded +* HTML preview: full-fidelity render of MainWindow with both themes, drawer + interaction, faithful component shapes ## What's blocked @@ -93,12 +117,23 @@ Teams ISO/ and is about to launch the managed host — the failure is downstream * `dotnet TeamsISO.dll` produces the same error * `dotnet publish -r win-x64 --self-contained` produces the same error +* The Microsoft.WindowsDesktop.App entry got stripped from runtimeconfig.json + via a post-build target — confirmed in the build output — still fails +* The UndockedRegFreeWinRT auto-init ModuleInitializer was disabled — + still fails -The error happens **before my Program.Main runs**, which means -`Bootstrap.TryInitialize(0x00010006)` isn't the culprit. The failure is -in the CLR-to-WinUI handoff. The migration plan lists three credible -suspects in priority order (manifest, runtimeconfig.json -Microsoft.WindowsDesktop.App entry, VC++ redist). +**Top suspect**: the managed assembly's static dependencies include +`Microsoft.WinUI.dll` which itself has DllImport-style native dependencies +that the .NET host probes during managed-assembly load. Without the +WindowsAppRuntime's COM activation context registered first, those imports +fail and the loader aborts before Main runs. + +**Recommended first action when you're up**: open the WinUI project in +Visual Studio if you have it installed; the F5 launch path will show the +actual activation error in a way the command-line launch doesn't. If no +VS, try installing the `Microsoft.WindowsAppRuntime.1.6` redistributable +explicitly (the AppxPackage version installed might not include the +desktop runtime needed for unpackaged apps). ## What I did NOT do @@ -106,42 +141,41 @@ Microsoft.WindowsDesktop.App entry, VC++ redist). ships as-is. * Touch Teams orchestration. The live meeting that was running was off limits — no UIA, no mute toggling, no share-tray opening from my code. -* Push to forgejo. The credential prompt would need you. Run - `git push origin main` when you're up. -* Run the WPF .exe to take screenshots. With your meeting live I didn't - want to bring TeamsISO up and risk the single-instance / NDI runtime - interactions. -* Add light theme to the WPF host. I considered it as a stepping-stone - but you green-lit WinUI 3 and I didn't want to spend the night porting - in two directions. * Migrate view-models or wire the engine into the WinUI host. Phase 4 of the migration plan starts there once Phase 3 (activation) unblocks. +* Migrate the DataGrid (Phase 5). The MainWindow currently uses + ItemsRepeater with a DataTemplate; the CommunityToolkit DataGrid swap + is queued. +* Migrate Notes / Preview / Presets windows (Phase 6 remainder). +* Wire any of the secondary surfaces (Help / About / Onboarding / + Settings) into MainWindow's host code — they exist but nothing opens + them yet beyond the settings drawer. ## Suggested first session tomorrow -1. `git push origin main` (after authenticating) -2. Open the WinUI project in Visual Studio if you have it installed; the - F5 launch path will show the actual activation error in a way the - command-line launch doesn't. -3. If no VS, attach windbg / dnSpy to the .exe at launch and capture the - actual exception. The COREHOST trace I dumped to - `$env:TEMP/teamsiso-corehost.log` may still be there for context. -4. Once activation works, mock data renders → you'll see the new design. -5. Decide between continuing in-place (port view-models next) or - integrating an HTML control panel preview to show stakeholders before - the WinUI 3 build is feature-complete. +1. **Look at the preview first**: open + `docs/preview/redesigned-mainwindow.html` and toggle dark/light. If + you're happy with the design, the rest is execution. +2. **Diagnose the activation blocker**: see "What's blocked" above. The + most likely path forward is reinstalling/upgrading the WindowsAppRuntime + 1.6 redistributable or moving to packaged mode. +3. Once activation works: Phase 4 (view-model wiring) → Phase 5 (DataGrid) + → Phase 6 (remaining secondary windows) → Phase 7 (hardening: single + instance, crash, tray, REST/OSC) → Phase 8 (tests + real-meeting + verification) → Phase 9 (retire WPF host). ## Honest assessment -The redesign work is solid; the design system is real, the XAML matches -the shape brief faithfully, and the theme infrastructure is correct. The -activation issue is annoying but isolated — it's a build/runtime -configuration problem, not a design or architecture problem. Five -minutes with the actual error message in hand and it's likely a one-line -csproj fix. +The design work is done. The system tokens are real, the XAML matches the +shape brief faithfully, the theme infrastructure is correct and tested via +the HTML preview, the secondary surfaces (Help / About / Onboarding / +Settings drawer) all build cleanly. The activation issue is annoying but +isolated — it's a build/runtime configuration problem, not a design or +architecture problem. The biggest risk to the v1.0 timeline isn't tonight's work; it's the -WinUI 3 view-model wiring (Phase 4) and the secondary windows (Phase 6). -Those need real-meeting testing time once the build runs. +WinUI 3 view-model wiring (Phase 4) and the engine-side regressions that +might surface during the binding migration. Those need real-meeting +testing time once the build runs. — end of log