- 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>
1.9 KiB
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 builderApp.axaml/App.axaml.cs— Avalonia application lifecycle, main window creation, staticServiceProvideraccessorViewLocator.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) andIslandsShellViewModel(the window's DataContext) - Transients: modal VMs (
SettingsModalViewModel,MergeModalViewModel,ListSettingsModalViewModel,RepoImportModalViewModel,WeeklyReportModalViewModel,WorktreeModalViewModel,WorktreesOverviewModalViewModel,PrimeClaudeTabViewModel), several exposed asFunc<T>factories for on-demand dialog creation;ConflictResolverViewModelvia aFunc<string, ConflictResolverViewModel>factory keyed by taskId (singleton factory, handed toIslandsShellViewModel.ConflictResolverFactory)
Notes
- This project owns the composition root — all wiring happens here
- ViewLocator resolves
FooViewModel->FooViewby replacing "ViewModel" with "View" in the type name - AvaloniaUI diagnostics are conditionally included (DEBUG only)