Skip to content

App shell: Avalonia project, local-control client, live daemon attach - #446

Open
alexeyzimarev wants to merge 20 commits into
mainfrom
alexeyzimarev/ai-1650-app-shell-scaffold-avalonia-project-ipc-client-attach
Open

App shell: Avalonia project, local-control client, live daemon attach#446
alexeyzimarev wants to merge 20 commits into
mainfrom
alexeyzimarev/ai-1650-app-shell-scaffold-avalonia-project-ipc-client-attach

Conversation

@alexeyzimarev

Copy link
Copy Markdown
Member

First desktop-app PR (umbrella slice 2): a new src/Capacitor.App Avalonia/ReactiveUI app whose bare window attaches to a running daemon over the local control socket and renders live state (daemon identity, server URL, connection health, agent count), a self-healing LocalControlClient in Core (hello gate → StatusSubscribe → validated snapshot stream, reconnect with backoff, pinned state machine), a DaemonClientService Rx adapter (atomic attach status, DynamicData keyed cache, single-flight restart, start-daemon-via-CLI), and a TUnit + Avalonia.Headless test setup running in CI on both legs. Spec (reviewer-signed, 7 rounds) and plan ride this PR: docs/superpowers/specs/2026-08-04-ai1650-app-shell-design.md, docs/superpowers/plans/2026-08-04-ai1650-app-shell.md, plus the umbrella §6 amendment (CommunityToolkit.Mvvm → ReactiveUI + DynamicData).

Stack notes: Avalonia 12.1.1 family + ReactiveUI.Avalonia 12.0.3 — deliberately the System.Reactive-flavored integration (≥ 12.1 switches to ReactiveUI 24's Primitives distribution, incompatible with the IObservable/DynamicData design); DynamicData 9.4.33. Core stays BCL-only (the client adds no packages and no AOT warnings).

No README change: nothing is distributed yet (run-from-source only) and no CLI surface moves.

Pre-existing on main, not from this branch: two IL2026/IL3050 warnings at src/Capacitor.Cli/Commands/McpWorkItemsServer.cs:357 (the JsonArray.Add<T> gotcha, from #441).

AI-1650

🤖 Generated with Claude Code

alexeyzimarev and others added 19 commits August 4, 2026 12:07
…tiveUI

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e app-shell spec

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…reconnect in the app-shell spec

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eams and status mapping

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eactiveUI.Avalonia 11.4.13)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…scope the Primitives cutoff to 12.1

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…llection race

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same-line opening braces (K&R), not Allman — consistent with the rest of the
codebase.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ight restart

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nt to the UI thread

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@linear-code

linear-code Bot commented Aug 4, 2026

Copy link
Copy Markdown

AI-1650

@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 456a4737de

ℹ️ 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".

_service = service;
desktop.MainWindow = BuildAndShowMainWindow(service, _shutdown.Token);
} catch (Exception ex) {
Console.Error.WriteLine($"kcap app failed to start: {ex}");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Surface startup failures through a visible channel

When profile loading or window construction throws—for example because config.json is unreadable—this is the only diagnostic before the application shuts down. Because the project uses OutputType=WinExe, a normal GUI launch has no visible console (as the preceding comment itself notes), so the user merely sees the app disappear with no actionable error. Show an error dialog/window or write to a durable platform log before shutting down.

Useful? React with 👍 / 👎.

…ately

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant