⚡ Bolt: [performance improvement] Remove LINQ and iterator allocations in collection mapping #965
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [master, main] | |
| # Runs on all pull requests once this workflow exists on master (default branch). | |
| # Stacked PRs whose base branch predates this file may need master merged in | |
| # before checks appear on downstream PRs (#5–#9). | |
| pull_request: | |
| # Manual escape hatch: lets a run be dispatched via the Actions tab or API | |
| # when a synchronize webhook doesn't fire (e.g. non-standard push paths). | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-test: | |
| name: .NET build and test | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: 10.0.x | |
| - name: Build | |
| run: dotnet build QuickShell.sln -c Release -p:Platform=x64 --verbosity minimal | |
| shell: pwsh | |
| - name: Test | |
| run: dotnet test QuickShell.Core.Tests/QuickShell.Core.Tests.csproj -c Release -p:Platform=x64 --no-build --verbosity minimal | |
| shell: pwsh | |
| - name: Test PowerShell scripts | |
| shell: pwsh | |
| run: | | |
| Install-Module Pester -MinimumVersion 5.0.0 -Scope CurrentUser -Force -SkipPublisherCheck | |
| Import-Module Pester -MinimumVersion 5.0.0 | |
| $config = New-PesterConfiguration | |
| $config.Run.Path = 'scripts/tests' | |
| $config.Run.Exit = $true | |
| $config.Output.Verbosity = 'Detailed' | |
| Invoke-Pester -Configuration $config | |
| raycast-check: | |
| name: Raycast lint, test, and build | |
| # Full gate on Windows (ray CLI + dual-platform extension). | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| working-directory: QuickShell.Raycast | |
| shell: pwsh | |
| steps: | |
| - name: Prefer LF checkouts for Prettier | |
| working-directory: . | |
| run: git config --global core.autocrlf false | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: QuickShell.Raycast/.nvmrc | |
| cache: npm | |
| cache-dependency-path: QuickShell.Raycast/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify Raycast CLI | |
| run: node scripts/verify-raycast-cli.js | |
| - name: Test | |
| run: npm test | |
| - name: Lint | |
| run: npm run lint | |
| - name: Build | |
| run: npm run build | |
| raycast-check-macos: | |
| name: Raycast lint, test, and build (macOS) | |
| runs-on: macos-latest | |
| defaults: | |
| run: | |
| working-directory: QuickShell.Raycast | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: QuickShell.Raycast/.nvmrc | |
| cache: npm | |
| cache-dependency-path: QuickShell.Raycast/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify Raycast CLI | |
| run: node scripts/verify-raycast-cli.js | |
| - name: Test | |
| run: npm test | |
| - name: Lint | |
| run: npm run lint | |
| - name: Build | |
| run: npm run build | |
| # Informational only: wall-clock medians vary by runner hardware. Never gate PRs on ms budgets. | |
| # Critical-path contracts remain in build-test. Artifacts support manual regression diffs. | |
| perf-harness: | |
| name: Performance harness (artifacts) | |
| runs-on: windows-latest | |
| continue-on-error: true | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: 10.0.x | |
| - name: Build | |
| run: dotnet build QuickShell.sln -c Release -p:Platform=x64 --verbosity minimal | |
| shell: pwsh | |
| - name: Run performance measurements | |
| env: | |
| QUICKSHELL_PERF_OUTPUT_DIR: ${{ github.workspace }}/artifacts/perf | |
| run: > | |
| dotnet test QuickShell.Core.Tests/QuickShell.Core.Tests.csproj | |
| -c Release -p:Platform=x64 --no-build | |
| --filter Category=PerformanceMeasurement | |
| --verbosity minimal | |
| shell: pwsh | |
| - name: Upload perf artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: quickshell-perf-results | |
| path: artifacts/perf/ | |
| if-no-files-found: warn |