Skip to content

Development

BenKoncsik edited this page May 4, 2026 · 1 revision

Development

Repository Structure

GitRunnerManager/
├── blueprint.md                       # Architecture documentation
├── README.md                          # Project overview
├── docs/wiki/                         # Wiki documentation
├── swfit/                             # Native SwiftUI macOS implementation
│   ├── Package.swift
│   ├── Assets/                        # App icons
│   ├── Sources/GitRunnerManager/
│   │   ├── App/
│   │   │   └── GitRunnerManagerApp.swift
│   │   ├── Models/
│   │   │   └── RunnerModels.swift
│   │   ├── Services/
│   │   │   ├── AppUpdateService.swift
│   │   │   ├── BatteryMonitor.swift
│   │   │   ├── NetworkConditionMonitor.swift
│   │   │   ├── RunnerController.swift
│   │   │   ├── RunnerLogParser.swift
│   │   │   └── RunnerResourceMonitor.swift
│   │   ├── Settings/
│   │   │   ├── AppPreferencesStore.swift
│   │   │   └── SettingsView.swift
│   │   ├── Stores/
│   │   │   └── RunnerMenuStore.swift
│   │   ├── Support/
│   │   │   ├── AppStrings.swift
│   │   │   ├── SettingsWindowController.swift
│   │   │   └── Shell.swift
│   │   ├── Resources/
│   │   │   ├── en.lproj/Localizable.strings
│   │   │   └── hu.lproj/Localizable.strings
│   │   └── Views/
│   │       └── MenuPanelView.swift
│   └── tests/
│       └── GitRunnerManagerTests/
│           └── AppPreferencesStoreTests.swift
├── Avalonia/                          # Cross-platform Avalonia implementation
│   ├── GitRunnerManager.sln
│   ├── README.md
│   ├── scripts/
│   │   ├── build.sh
│   │   ├── publish-linux-x64.sh
│   │   ├── publish-macos-arm64.sh
│   │   └── publish-windows-x64.sh
│   ├── publish/                       # Build outputs
│   └── src/
│       ├── GitRunnerManager.Core/     # Domain layer
│       ├── GitRunnerManager.Platform/ # Platform implementations
│       ├── GitRunnerManager.App/      # UI application
│       └── GitRunnerManager.Tests/    # Unit tests
└── scripts/                           # Shared build scripts
    ├── build_and_run_avalonia.sh
    ├── build_and_run_swift.sh
    └── build_dmg_swfit.sh

Swift Build Commands

# Build and run
./scripts/build_and_run_swift.sh

# Build an .app bundle
./scripts/build_and_run_swift.sh --bundle

# Create a DMG
APP_VERSION=1.0.0 ./scripts/build_dmg_swfit.sh

Swift Test Commands

swift test --package-path swfit

Tests are located in swfit/tests/GitRunnerManagerTests/.

Avalonia Build Commands

# Build all projects
cd Avalonia && ./scripts/build.sh

# Publish for macOS (ARM64)
./scripts/publish-macos-arm64.sh

# Publish for Windows (x64)
./scripts/publish-windows-x64.sh

# Publish for Linux (x64)
./scripts/publish-linux-x64.sh

Build outputs are written to Avalonia/publish/.

Avalonia Test Commands

cd Avalonia
dotnet test src/GitRunnerManager.Tests/GitRunnerManager.Tests.csproj

Tests use xUnit 2.9.2 with coverlet for code coverage.

Test Coverage

Test File Coverage
PreferencesStoreTests.cs Preference persistence, defaults, round-trip
DiagnosticLogTests.cs Diagnostic log write behavior
GitHubActionsDiagnosticTests.cs Diagnostic JSON/Markdown export
GitHubJobMatcherTests.cs Local runner to GitHub job correlation
GitHubServiceTests.cs Auth and API behavior
RunnerControllerTests.cs Process control behavior
RunnerFolderAndLogServiceTests.cs Folder validation and log reading
RunnerManagerTests.cs Multi-runner profile and bulk behavior
RunnerSetupWizardTests.cs Setup validation and wizard logic
ResourceMonitorTests.cs Process parsing, tree aggregation
RunnerLogParserTests.cs Log pattern matching, activity detection

Technology Stack

SwiftUI

Aspect Detail
Language Swift 6.0
Platform macOS 14.0+
Package Manager Swift Package Manager
UI Framework SwiftUI (MenuBarExtra)
State Management @Observable, @MainActor
External Dependencies None (pure Apple frameworks)
Test Framework XCTest

Avalonia

Aspect Detail
Language C# (.NET 10.0)
UI Framework Avalonia 12.0.1
MVVM CommunityToolkit.Mvvm 8.3.2
DI Microsoft.Extensions.DependencyInjection 9.0.0
Runtime Identifiers win-x64, osx-arm64, linux-x64
Test Framework xUnit 2.9.2

Development Conventions

  • No comments in source code unless explicitly requested
  • Follow Swift best practices for the SwiftUI implementation
  • Follow C# conventions for the Avalonia implementation
  • Use existing patterns and conventions from the codebase
  • Keep code organized according to the layered architecture
  • Both implementations share the same product direction but differ in architecture and feature completeness

Next Steps

Clone this wiki locally