Files
ClaudeDo/src/ClaudeDo.App/CLAUDE.md
mika kuns cfc45118e4
All checks were successful
Release / release (push) Successful in 35s
docs: sync CLAUDE.md files with current architecture
Drop the removed tag system, fix the retired Manual status and the atomic
queue-claim location, refresh the App DI registrations to the Islands VMs,
update the Data table list, correct a stale test reference, and document the
interface-folder and single-consumer-fold conventions plus the .NET 8 build path.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 15:59:43 +02:00

1.6 KiB

ClaudeDo.App

Desktop entry point for the ClaudeDo application. Configures DI, initializes the database, and launches the Avalonia window.

Responsibility

  • Program.cs — STA thread, DI container registration (repositories, services, viewmodels), schema init, Avalonia builder
  • App.axaml / App.axaml.cs — Avalonia application lifecycle, main window creation, static ServiceProvider accessor
  • ViewLocator.cs — reflection-based IDataTemplate that maps ViewModels to Views by naming convention

Dependencies

  • Avalonia 12.0.0 (Desktop, Fluent theme, Inter fonts)
  • CommunityToolkit.Mvvm 8.4.1
  • Microsoft.Extensions.DependencyInjection 8.0.1
  • Microsoft.AspNetCore.SignalR.Client 8.0.11
  • Microsoft.Data.Sqlite 8.0.11
  • Project references: ClaudeDo.Data, ClaudeDo.Ui

DI Registration Pattern

  • Singletons: IDbContextFactory, all Repositories, GitService, WorkerClient, IReleaseClient, InstallerLocator / WorkerLocator, the island VMs (ListsIslandViewModel, TasksIslandViewModel, DetailsIslandViewModel) and IslandsShellViewModel (the window's DataContext)
  • Transients: modal VMs (SettingsModalViewModel, MergeModalViewModel, ListSettingsModalViewModel, RepoImportModalViewModel, WorktreeModalViewModel, WorktreesOverviewModalViewModel, PrimeClaudeTabViewModel), several exposed as Func<T> factories for on-demand dialog creation

Notes

  • This project owns the composition root — all wiring happens here
  • ViewLocator resolves FooViewModel -> FooView by replacing "ViewModel" with "View" in the type name
  • AvaloniaUI diagnostics are conditionally included (DEBUG only)