name: Alpha Release

on:
  push:
    branches: [dev]
  workflow_dispatch:

permissions:
  contents: write
  id-token: write
  attestations: write

env:
  # Next version - update when releasing
  NEXT_VERSION: "0.0.4"

jobs:
  build:
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            goos: linux
            goarch: amd64
          - os: ubuntu-latest
            goos: linux
            goarch: arm64
          - os: macos-latest
            goos: darwin
            goarch: arm64
          - os: windows-latest
            goos: windows
            goarch: amd64
    runs-on: ${{ matrix.os }}
    env:
      GOOS: ${{ matrix.goos }}
      GOARCH: ${{ matrix.goarch }}
    steps:
      - uses: actions/checkout@v6

      # GUI build disabled until build action supports Wails v3
      # - name: Wails Build Action
      #   uses: host-uk/build@v4.0.0
      #   with:
      #     build-name: core
      #     build-platform: ${{ matrix.goos }}/${{ matrix.goarch }}
      #     build: true
      #     package: true
      #     sign: false

      - name: Setup Go
        uses: host-uk/build/actions/setup/go@v4.0.0
        with:
          go-version: "1.25"

      - name: Build CLI
        shell: bash
        run: |
          EXT=""
          if [ "$GOOS" = "windows" ]; then EXT=".exe"; fi
          go build -o "./bin/core${EXT}" .

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: core-${{ matrix.goos }}-${{ matrix.goarch }}
          path: ./bin/core*

  release:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Download artifacts
        uses: actions/download-artifact@v7
        with:
          path: dist
          merge-multiple: true

      - name: Prepare release files
        run: |
          mkdir -p release
          cp dist/* release/ 2>/dev/null || true
          ls -la release/

      - name: Create alpha release
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          VERSION="v${{ env.NEXT_VERSION }}-alpha.${{ github.run_number }}"

          gh release create "$VERSION" \
            --title "Alpha: $VERSION" \
            --notes "Canary build from dev branch.

          **Version:** $VERSION
          **Commit:** ${{ github.sha }}
          **Built:** $(date -u +'%Y-%m-%d %H:%M:%S UTC')
          **Run:** ${{ github.run_id }}

          ## Channel: Alpha (Canary)

          This is an automated pre-release for early testing.

          - Systems and early adopters can test breaking changes
          - Quality scoring determines promotion to beta
          - Use stable releases for production

          ## Installation

          \`\`\`bash
          # macOS/Linux
          curl -fsSL https://github.com/host-uk/core/releases/download/$VERSION/core-linux-amd64 -o core
          chmod +x core && sudo mv core /usr/local/bin/
          \`\`\`
          " \
            --prerelease \
            --target dev \
            release/*
