teamsiso/docs/superpowers/plans/_NEXT.md
Zac Gaetano c08b90b0b2
All checks were successful
CI / build-and-test (push) Successful in 40s
feat(ui): Launch Teams rail button + spec for embedded-Teams roadmap
First step of Phase E.1 from the new spec at docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md: a third icon in the left rail launches the Microsoft Teams desktop client as a subprocess of TeamsISO so the operator doesn't have to leave the app to start a meeting.

Services/TeamsLauncher tries the ms-teams: URI first, falls back to %LOCALAPPDATA%\\Microsoft\\WindowsApps\\ms-teams.exe (new Teams), then the classic Update.exe handoff. On failure surfaces a friendly MessageBox with the install link.

The spec doc lays out the full three-phase roadmap (launcher -> window orchestration -> in-app meeting controls via Graph API or UIAutomation) and explicitly calls out what's out of scope (replacing Teams' media stack).

_NEXT.md updated to mark Phase D done and queue Phase E + remaining polish items (code-signing, Inter/JetBrains Mono font bundling, real Wild Dragon dragon-mark, drops counter, running-fps display).
2026-05-08 01:05:26 -04:00

4.4 KiB
Raw Blame History

Plan Backlog

Completed phases

  • Phase A — Engine Foundation (tag: phase-a-complete) — domain model, parsers, participant tracker, frame processor, config, fakes, CI gate.
  • Phase B-1 — Pipeline Orchestration (tag: phase-b-1-complete) — NdiReceiver, NdiSender, ExponentialBackoff, NdiRuntimeProbe, IsoPipeline supervisor, IsoController.
  • Phase B-2 — Real NDI Interop (tag: phase-b-2-complete) — NdiInteropPInvoke against NDI 6 SDK, managed BGRA scaler, TeamsISO.Console headless smoke runner, NdiVersion constants.
  • Phase C — WPF UI (tag: phase-c-complete) — MVVM helpers, ParticipantViewModel, GlobalSettingsViewModel, AlertBannerViewModel, MainViewModel, MainWindow XAML with participants DataGrid + settings sidebar + alert banner, App.xaml DI bootstrap.
  • Hardening — May 2026 (no tag) — see "Done in May 2026" below; covers the bug-fix triad that turned this from "won't even start" into "discovers real Teams participants in a real meeting", plus integration coverage and the brand/UX rebuild.
  • Phase D — WiX Installer — WiX v5 MSI scaffold, Forgejo CI fix (artifact v3 pin), Forgejo release workflow on tag push.

Done in May 2026

  • Fixed .sln path-separator mismatch that broke .slnf filters on Windows.
  • NdiNativeLibraryResolver resolves Processing.NDI.Lib.x64.dll via NDI_RUNTIME_DIR_V6 so the engine starts on installs where the NDI dir isn't on PATH.
  • NdiVersion.ExpectedRuntimeVersionPrefix updated to match the shipping NDI 6 banner format (NDI SDK WIN64 ...).
  • NdiSourceParser accepts current Teams desktop's MS Teams - <name> brand format (plus legacy Teams and defensive Microsoft Teams).
  • --list-sources diagnostic on TeamsISO.Console.
  • NDI groups end-to-end (discovery + output) so the operator can confine Teams' raw broadcasts to a private group.
  • Hide-(Local) toggle so the user's own self-preview doesn't pollute the participants list.
  • Single-instance enforcement via per-user named Mutex with broadcast bring-to-front.
  • WPF rebuilt around Wild Dragon brand × Microsoft Teams flush layout (left rail + chromeless title bar + caption controls + cyan accent + JetBrains Mono).
  • IsoHealthStats wired end-to-end: live receiver/sender refs published from the inner pipeline, frame counters and source resolution displayed in a Live column on the participants DataGrid (1 Hz polled).
  • Rolling daily file logging at %LOCALAPPDATA%\TeamsISO\Logs\ via Serilog.Sinks.File.
  • Real-NDI integration test tier (requires=ndi): runtime probe, finder/sender lifecycle on default + custom groups, loopback discovery, and a full pipeline frame round-trip that asserts 1920×1080 normalization.
  • Forgejo CI is green (actions/upload-artifact pinned to v3 since Forgejo doesn't support v4).
  • WiX v5 MSI scaffold + Forgejo release workflow on tag push (windows-latest runner; uploads MSI as both workflow artifact and release asset).
  • Code-review pass + fixes (no static Serilog.Log.Logger mutation, frame-dimension snapshot instead of holding a RawFrame ref, ComponentDispatcher unsubscribe, Mutex-ownership flag).
  • "Launch Teams" rail button (Phase E.1 starter, see docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md).

Next

  1. Phase E — Embedded Teams orchestration — see the spec at docs/superpowers/specs/2026-05-08-embedded-teams-orchestration.md. Three-phase rollout: launcher → window orchestration → in-app meeting controls. Phase E.1 partially shipped (launcher).

  2. Code-signing the MSIinstaller/TeamsISO.Installer.wixproj has a SignOutput hook but no cert. For a v1.0 release, wire signtool invocation from a release-only CI secret. Until then SmartScreen will warn on first launch.

  3. Bundle Inter / JetBrains Mono fonts so the typography doesn't depend on Windows fallbacks. Today the WPF UI uses Segoe UI Variable Display + Cascadia Mono as fallbacks.

  4. Wild Dragon dragon-mark — the rail logo is a stylized "W" placeholder; swap in the real dragon SVG when available.

  5. Optional polish before v1.0 — running incoming-fps display (today the field on IsoHealthStats is 0), per-pipeline output thumbnail previews, MaterialDesignThemes-equivalent transitions, system health (CPU/network) meters in the rail.

  6. Drops counter on IsoHealthStatsFrameProcessor doesn't currently surface drops or duplicates; wire those through so the Live column can show "↓ N (dropped M)".