mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
70 lines
4 KiB
Markdown
70 lines
4 KiB
Markdown
# Repository Atlas: Flow.Launcher
|
|
|
|
## Project Responsibility
|
|
Flow.Launcher is a Windows productivity launcher (similar to Alfred/Raycast) built with WPF and Avalonia. It provides fast, extensible search capabilities through a plugin-based architecture, allowing users to launch applications, search files, perform calculations, and execute custom commands via a global hotkey-activated search window.
|
|
|
|
## System Entry Points
|
|
- **`Flow.Launcher/`**: WPF main application entry point (legacy, stable)
|
|
- **`Flow.Launcher.Avalonia/`**: Avalonia UI migration entry point (active development ~35-40%)
|
|
- **`Flow.Launcher.sln`**: Solution file for building all projects
|
|
- **`Scripts/post_build.ps1`**: Packaging script for releases
|
|
|
|
## Technology Stack
|
|
- **.NET 9.0** targeting `net9.0-windows10.0.19041.0`
|
|
- **WPF** (original UI) - `Flow.Launcher/`
|
|
- **Avalonia** (migration in progress) - `Flow.Launcher.Avalonia/`
|
|
- **CommunityToolkit.Mvvm** for MVVM patterns and DI
|
|
- **FluentAvalonia** for modern UI in Avalonia version
|
|
- **Squirrel.Windows** for application updates
|
|
- **NLog** for logging
|
|
|
|
## Repository Directory Map
|
|
|
|
| Directory | Responsibility Summary | Detailed Map |
|
|
|-----------|------------------------|--------------|
|
|
| `Flow.Launcher/` | **WPF Main Application**: Host process orchestrating UI layer, plugin lifecycle, and system integrations (tray, hotkeys). Uses MVVM, DI, and Bridge patterns. | [View Map](Flow.Launcher/codemap.md) |
|
|
| `Flow.Launcher.Avalonia/` | **Avalonia UI Migration**: Modern cross-platform UI implementation with WPF compatibility shim for plugin support. Active development target. | [View Map](Flow.Launcher.Avalonia/codemap.md) |
|
|
| `Flow.Launcher.Core/` | **Business Logic Engine**: Plugin lifecycle management, internationalization, application updates via Squirrel, and community plugin store integration. | [View Map](Flow.Launcher.Core/codemap.md) |
|
|
| `Flow.Launcher.Infrastructure/` | **Shared Services Layer**: Fuzzy search (StringMatcher), persistence (JSON storage), global hotkeys, logging, Win32 API wrappers, and Settings model. | [View Map](Flow.Launcher.Infrastructure/codemap.md) |
|
|
| `Flow.Launcher.Plugin/` | **Plugin SDK**: Interfaces and models for plugin development (`IPlugin`, `IAsyncPlugin`, `Result`, `Query`, `IPublicAPI`). The formal contract between core and extensions. | [View Map](Flow.Launcher.Plugin/codemap.md) |
|
|
| `Plugins/` | **Built-in Plugins**: 12 official plugins (Calculator, Explorer, Program, WebSearch, Shell, etc.) providing core functionality. | [View Map](Plugins/codemap.md) |
|
|
| `Flow.Launcher.Test/` | **Unit Tests**: NUnit-based test suite for the application. |
|
|
|
|
## Architecture Overview
|
|
|
|
### Data Flow
|
|
```
|
|
User Input → MainWindow → MainViewModel → PluginManager → Plugins → Results → UI
|
|
```
|
|
|
|
### Key Architectural Patterns
|
|
1. **MVVM**: Strict separation of UI and logic across both WPF and Avalonia implementations
|
|
2. **Dependency Injection**: `CommunityToolkit.Mvvm.Ioc` for service management
|
|
3. **Plugin Architecture**: Interface-based extensibility via `IPlugin`/`IAsyncPlugin`
|
|
4. **Bridge Pattern**: `PublicAPIInstance`/`AvaloniaPublicAPI` decouples plugins from internal implementation
|
|
5. **Static Coordinator**: `PluginManager` acts as central hub for plugin operations
|
|
|
|
### Migration Status (WPF → Avalonia)
|
|
- **WPF**: Stable, feature-complete, maintenance mode
|
|
- **Avalonia**: ~35-40% migrated, active development, includes WPF compatibility shim for plugins
|
|
- **Shared**: Core, Infrastructure, and Plugin SDK are framework-agnostic
|
|
|
|
## Build & Run
|
|
|
|
```bash
|
|
# Build entire solution
|
|
dotnet build
|
|
|
|
# Run WPF version
|
|
./Output/Debug/Flow.Launcher.exe
|
|
|
|
# Run Avalonia version
|
|
./Output/Debug/Avalonia/Flow.Launcher.Avalonia.exe
|
|
```
|
|
|
|
## Key Documentation
|
|
- `AGENTS.md`: Essential information for AI agents working on this codebase
|
|
- `AVALONIA_MIGRATION_CHECKLIST.md`: Detailed migration progress tracking
|
|
- `Flow.Launcher.Plugin/README.md`: Plugin SDK documentation
|
|
- `.editorconfig`: Code style rules
|
|
- `Settings.XamlStyler`: XAML formatting rules
|