Rebuild chat desktop shell as native WinUI 3 - #1339
Conversation
There was a problem hiding this comment.
Pull request overview
This PR rebuilds the IntelligenceX Chat desktop shell to default to a native WinUI 3 experience (with the legacy WebView shell only available via IXCHAT_LEGACY_WEBVIEW=1), and establishes a native rendering contract that delegates Markdown parsing to OfficeIMO and visual artifact parsing/rendering to ChartForgeX.
Changes:
- Added a new native WinUI window/shell (sidebar, transcript, composer, header/auth state, export) plus view models and deterministic sample-data mode.
- Introduced OfficeIMO → native transcript projection (paragraph/code/table/visual blocks) and a ChartForgeX bridge for visual fences with preview rendering.
- Updated package/version contracts (OfficeIMO + ChartForgeX) and added focused unit/integration tests for native projection, launch-mode routing, and native table workspace behavior.
Reviewed changes
Copilot reviewed 49 out of 52 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| InternalDocs/chat-native-winui/officeimo-chartforgex-native-rendering-contract.md | Defines ownership boundaries and the bridge contract between OfficeIMO native Markdown projection and ChartForgeX artifacts. |
| InternalDocs/chat-native-winui/native-chat-visual-direction.md | Captures internal visual direction boards and design principles for the WinUI shell. |
| InternalDocs/chat-native-winui/native-chat-ui-contract.md | Documents the intended WinUI app shape, UX contract, and proof gates for replacing the WebView shell. |
| InternalDocs/chat-native-winui/chartforgex-native-visuals-agent-brief.md | Handoff brief for upstream ChartForgeX work to support native hosts without HTML shells. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/OfficeImoAssemblyContractDiagnostics.cs | Raises minimum OfficeIMO package contract versions for native projection/presets. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/Rendering/NativeVisualPreviewRenderer.cs | Adds ChartForgeX artifact → SVG/PNG preview rendering (compile-time gated). |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/Rendering/NativeVisualFenceClassifier.cs | Classifies OfficeIMO semantic fences into product-neutral visual kinds and attributes. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/Rendering/NativeTranscriptContent.cs | Introduces native transcript content models (paragraph/code/table/visual/diagnostic). |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/Rendering/NativeMarkdownProjection.cs | Projects OfficeIMO native blocks into transcript items and parses visuals via ChartForgeX. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeVisualArtifactHostControl.cs | Adds a native host control for visual artifacts with optional PNG preview dialog. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTranscriptTablePreviewControl.cs | Adds a compact native table preview surface with search/sort and workspace launcher. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTranscriptMessageControl.cs | Renders transcript messages with native content elements (code/table/visual/diagnostic). |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTranscriptMarkdownFormatter.cs | Formats native transcript items back into exportable Markdown. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTableWorkspaceViewModel.cs | Implements table search/sort/filter/selection/windowing + TSV/CSV export projections. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTableWorkspaceControl.cs | Provides a WinUI control for the table workspace (filters, selection, copy/export). |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeTableArtifactTitleResolver.cs | Infers operator-facing table titles from known header schemas. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeSidebarItem.cs | Adds sidebar item model + query matching for sample-mode navigation. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeSampleTranscriptFactory.cs | Generates deterministic sample transcripts (tables + Mermaid fences) per sidebar item. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeControlBrushes.cs | Centralizes shared brush helpers for native UI styling. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Workspace.cs | Builds the main workspace surface (header/transcript/composer) and empty-state UI. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Sidebar.cs | Builds the native sidebar surface and navigation behavior. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Samples.cs | Adds env-var driven sample-mode seeding for deterministic UI verification. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Header.cs | Adds header chrome (auth/runtime chips + sign-in actions) and state styling. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Export.cs | Adds transcript export flow via save picker and existing export writer. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.cs | Introduces the WinUI window root, view model wiring, and placement logic. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatWindow.Composer.cs | Implements native composer UI and send/stop command wiring. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatViewModel.cs | Adds view model for send/cancel, streaming updates, and auth readiness state. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatTurnRunner.cs | Defines runner interfaces and request/result/callback contracts for the native shell. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatTranscriptItem.cs | Adds transcript item model with deferred projection during streaming. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatServiceTurnRunner.cs | Implements the runner over the existing named-pipe chat service protocol. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeChatServiceProcessHost.cs | Starts/owns the chat service sidecar process for the native shell. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/Native/NativeAuthenticationState.cs | Adds typed authentication readiness states for native empty-state/header logic. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/IntelligenceX.Chat.App.csproj | Adds ChartForgeX/OfficeIMO package refs + optional local engine project refs and defines. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/ChatAppLaunchMode.cs | Adds a launch-mode resolver to default to native WinUI and gate legacy WebView. |
| IntelligenceX.Chat/IntelligenceX.Chat.App/App.xaml.cs | Updates app launch to use the resolver, ensures resources init, and adds XAML metadata provider. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/TranscriptMarkdownContractIntegrationTests.cs | Adjusts normalization contract expectations with updated OfficeIMO behavior. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/TranscriptHtmlFormatterRenderingTests.cs | Loosens HTML assertions while still verifying ordered list rendering behavior. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/TranscriptForensicsExporterTests.cs | Updates expected minimum OfficeIMO version strings in forensics bundle assertions. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/OfficeImoMarkdownRuntimeContractTests.cs | Updates pinned OfficeIMO package expectations (and adds IX renderer package assertion). |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/OfficeImoMarkdownRuntimeContract.TestShim.cs | Updates test shim minimum OfficeIMO versions to match new contract. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeTableWorkspaceViewModelTests.cs | Adds unit coverage for search/sort/windowing/visibility/filtering and TSV/CSV exports. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeTableArtifactTitleResolverTests.cs | Adds tests for title inference based on common table header schemas. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeSidebarItemTests.cs | Adds tests for sidebar item search matching behavior. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeSampleTranscriptFactoryTests.cs | Adds tests ensuring sample transcripts exist and project tables/visuals. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeRenderingProjectionTests.cs | Adds tests for fence classification, attribute projection, and native Markdown projection. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/NativeChatViewModelTests.cs | Adds tests for send/stream/finalize behavior and auth flows without WinUI controls. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/LocalExportArtifactWriterTests.cs | Updates adjacent ordered-list export normalization expectation. |
| IntelligenceX.Chat/IntelligenceX.Chat.App.Tests/ChatAppLaunchModeResolverTests.cs | Adds tests for native-default launch mode and legacy escape hatch behavior. |
| IntelligenceX.Chat/Directory.Build.props | Pins updated OfficeIMO and new ChartForgeX package versions for the Chat solution. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
8e89049 to
0f40c4b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 051f947f27
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
0f40c4b to
488d518
Compare
IntelligenceX Review (failed open)Reviewing this pull request: Rebuild chat desktop shell as native WinUI 3 WARNING: Reviewer execution failed and this workflow was allowed to pass open.
The static analysis gate still ran and remained enforcing in this workflow. |
488d518 to
9838df5
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9838df5b17
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Make the native WinUI chat shell the default launch path with the legacy WebView shell behind IXCHAT_LEGACY_WEBVIEW=1. Add native transcript, sidebar, composer, auth/readiness state, table workspace, visual artifact host, OfficeIMO/ChartForgeX package-mode projection, tests, and internal design mockups/contracts.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b23649b7f6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bf0f7d589f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e79ed99e6f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6703062149
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9700a5d88b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b157099d91
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7950680377
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8dcb9a01ae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e9a865b407
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 640f05e5c4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 340324de25
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (!options.ApplyRuntimeOverrides) { | ||
| await status("Selected existing service profile without app runtime overrides.").ConfigureAwait(false); | ||
| return; |
There was a problem hiding this comment.
Bootstrap missing profiles on connected services
When the shared pipe already has a service running but the requested native profile is absent (for example, a fresh/default native profile attaching to a service left running on another profile), this condition skips SetProfileAsync; because ApplyRuntimeOverrides is false for that fresh profile, lines 362–364 then return without using BootstrapMissingProfile. Bootstrap handling currently only exists in ServiceLaunchArguments for newly spawned services, so subsequent turns silently run against the other service's active profile instead of the requested profile.
Useful? React with 👍 / 👎.
| <OfficeImoMarkdownNuGetVersion Condition="'$(OfficeImoMarkdownNuGetVersion)' == ''">2.0.2</OfficeImoMarkdownNuGetVersion> | ||
| <OfficeImoMarkdownRendererNuGetVersion Condition="'$(OfficeImoMarkdownRendererNuGetVersion)' == ''">2.0.2</OfficeImoMarkdownRendererNuGetVersion> | ||
| <OfficeImoMarkdownRendererIntelligenceXNuGetVersion Condition="'$(OfficeImoMarkdownRendererIntelligenceXNuGetVersion)' == ''">2.0.2</OfficeImoMarkdownRendererIntelligenceXNuGetVersion> | ||
| <OfficeImoExcelNuGetVersion Condition="'$(OfficeImoExcelNuGetVersion)' == ''">2.0.2</OfficeImoExcelNuGetVersion> | ||
| <OfficeImoWordMarkdownNuGetVersion Condition="'$(OfficeImoWordMarkdownNuGetVersion)' == ''">2.0.2</OfficeImoWordMarkdownNuGetVersion> |
There was a problem hiding this comment.
Use published OfficeIMO versions for package-mode builds
With the normal package-mode path (UseLocalNativeMarkdownEngines unset or no sibling OfficeIMO checkout), the app and export projects consume these defaults. The commit's own InternalDocs/chat-native-winui/native-chat-product-plan.md states that the public OfficeIMO packages remain on 2.0.1 while 2.0.2 is only validated from local source, so a clean package-mode restore requests unavailable 2.0.2 packages and cannot build or package the desktop app. Keep the NuGet defaults at published versions and reserve 2.0.2 for the explicit local-project path.
Useful? React with 👍 / 👎.
Summary
IXCHAT_LEGACY_WEBVIEW=1as a temporary compatibility escape hatch.InternalDocs/chat-native-winui/native-chat-product-plan.md.Current product boundary
This PR establishes and hardens the native foundation; it does not pretend the migration is finished.
Shared-owner and release state
IntelligenceX.Tools.OfficeIMO; this PR intentionally does not add a downstream compatibility shim.Validation
340324de25ec83f4917b57abd3aae2f081af7000.All tests passed.Next migration slices