Files
ClaudeDo/src/ClaudeDo.App/CLAUDE.md
mika kuns 49046310ef docs: refresh CLAUDE.md files and open.md to current code state
- Ui CLAUDE.md rewritten around the islands architecture (old
  MainWindow/TaskList/StatusBar VMs no longer exist)
- Worker: folder layout (Refine/, Lifecycle/Planning extras), full hub
  method/event surface, external MCP tool inventory
- Data: complete GitService operation list incl. commit-range diffs
- App: missing DI registrations; Tests: current test-area overview
- root: project list (Localization, Installer, six test projects) and
  honest docs index; plan.md/improvement-plan.md marked historical
- open.md: date bump + visual check for new diff viewer / attention band

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-09 22:00:55 +02:00

1.9 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, UpdateCheckService, IPrimeScheduleApi/WorkerPrimeScheduleApi, INotesApi/WorkerNotesApi, InstallerLocator / WorkerLocator, the island VMs (ListsIslandViewModel, TasksIslandViewModel, DetailsIslandViewModel) and IslandsShellViewModel (the window's DataContext)
  • Transients: modal VMs (SettingsModalViewModel, MergeModalViewModel, ListSettingsModalViewModel, RepoImportModalViewModel, WeeklyReportModalViewModel, WorktreeModalViewModel, WorktreesOverviewModalViewModel, PrimeClaudeTabViewModel), several exposed as Func<T> factories for on-demand dialog creation; ConflictResolverViewModel via a Func<string, ConflictResolverViewModel> factory keyed by taskId (singleton factory, handed to IslandsShellViewModel.ConflictResolverFactory)

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)