Files
ClaudeDo/src/ClaudeDo.App/CLAUDE.md

2.0 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, DiffViewerViewModel, WorktreesOverviewModalViewModel, PrimeClaudeTabViewModel), several exposed as Func<T> factories for on-demand dialog creation (Func<DiffViewerViewModel> for the diff viewer); 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)