name: Build UI
description: Restore cached UI HTML artifacts, or set up Node and run script/build-ui on cache miss.

runs:
  using: composite
  steps:
    - name: Cache UI artifacts
      id: cache-ui
      uses: actions/cache@v5
      with:
        path: |
          pkg/github/ui_dist/get-me.html
          pkg/github/ui_dist/issue-write.html
          pkg/github/ui_dist/pr-write.html
          pkg/github/ui_dist/pr-edit.html
        key: ui-dist-v2-${{ hashFiles('ui/package-lock.json', 'ui/package.json', 'ui/index.html', 'ui/tsconfig*.json', 'ui/vite.config.ts', 'ui/src/**', 'ui/scripts/**') }}
        enableCrossOsArchive: true

    - name: Set up Node.js
      if: steps.cache-ui.outputs.cache-hit != 'true'
      uses: actions/setup-node@v6
      with:
        node-version: "20"
        cache: npm
        cache-dependency-path: ui/package-lock.json

    - name: Build UI
      if: steps.cache-ui.outputs.cache-hit != 'true'
      shell: bash
      run: script/build-ui

    - name: Report UI cache status
      shell: bash
      run: |
        if [ "${{ steps.cache-ui.outputs.cache-hit }}" = "true" ]; then
          echo "UI artifacts restored from cache (skipped build)."
        else
          echo "UI artifacts rebuilt from source."
        fi
