fix: refactor AgentChatPanel into modular components #102
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: Release | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| # ───────────────────────────────────────────────────────────── | |
| # 1. Version bump + GitHub Release creation | |
| # ───────────────────────────────────────────────────────────── | |
| release: | |
| name: Semantic Release | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| issues: write | |
| pull-requests: write | |
| outputs: | |
| published: ${{ steps.semantic.outputs.new_release_published }} | |
| version: ${{ steps.semantic.outputs.new_release_version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: clif-pad-ide/package-lock.json | |
| - run: cd clif-pad-ide && npm ci | |
| - name: Run semantic-release | |
| id: semantic | |
| uses: cycjimmy/semantic-release-action@v4 | |
| with: | |
| working_directory: clif-pad-ide | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Summary | |
| run: | | |
| echo "Published: ${{ steps.semantic.outputs.new_release_published }}" | |
| echo "Version: ${{ steps.semantic.outputs.new_release_version }}" | |
| # ───────────────────────────────────────────────────────────── | |
| # 2. ClifPad — macOS (Apple Silicon + Intel) | |
| # ───────────────────────────────────────────────────────────── | |
| clifpad-macos: | |
| name: ClifPad macOS (${{ matrix.label }}) | |
| needs: release | |
| if: needs.release.outputs.published == 'true' | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 60 | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - label: Apple Silicon | |
| target: aarch64-apple-darwin | |
| runner: macos-14 | |
| - label: Intel | |
| target: x86_64-apple-darwin | |
| runner: macos-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Sync version | |
| run: | | |
| VERSION="${{ needs.release.outputs.version }}" | |
| git pull origin main || true | |
| sed -i '' "s/\"version\": \".*\"/\"version\": \"$VERSION\"/" clif-pad-ide/src-tauri/tauri.conf.json | |
| cd clif-pad-ide && node scripts/bump-version.js "$VERSION" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: clif-pad-ide/package-lock.json | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: clif-pad-ide/src-tauri -> target | |
| cache-on-failure: true | |
| - name: Install create-dmg | |
| run: brew install create-dmg || npm install -g create-dmg | |
| - name: Install npm dependencies | |
| run: cd clif-pad-ide && npm ci | |
| - name: Build frontend | |
| run: cd clif-pad-ide && npm run build | |
| - name: Build & bundle ClifPad | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | |
| with: | |
| tagName: v${{ needs.release.outputs.version }} | |
| releaseName: ClifPad v${{ needs.release.outputs.version }} | |
| releaseBody: "See the assets to download and install ClifPad." | |
| releaseDraft: false | |
| prerelease: false | |
| projectPath: clif-pad-ide | |
| args: --target ${{ matrix.target }} | |
| includeUpdaterJson: true | |
| updaterJsonKeepUniversal: true | |
| - name: Upload checksums | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: v${{ needs.release.outputs.version }} | |
| files: clif-pad-ide/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.sha256 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # ───────────────────────────────────────────────────────────── | |
| # 3. ClifPad — Windows | |
| # ───────────────────────────────────────────────────────────── | |
| clifpad-windows: | |
| name: ClifPad Windows | |
| needs: release | |
| if: needs.release.outputs.published == 'true' | |
| runs-on: windows-latest | |
| timeout-minutes: 60 | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Sync version | |
| shell: pwsh | |
| run: | | |
| $VERSION = "${{ needs.release.outputs.version }}" | |
| git pull origin main | |
| cd clif-pad-ide && node scripts/bump-version.js "$VERSION" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: clif-pad-ide/package-lock.json | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: clif-pad-ide/src-tauri -> target | |
| cache-on-failure: true | |
| - name: Install npm dependencies | |
| run: cd clif-pad-ide && npm ci | |
| - name: Build frontend | |
| run: cd clif-pad-ide && npm run build | |
| - name: Build & bundle ClifPad | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | |
| with: | |
| tagName: v${{ needs.release.outputs.version }} | |
| releaseName: ClifPad v${{ needs.release.outputs.version }} | |
| releaseBody: "See the assets to download and install ClifPad." | |
| releaseDraft: false | |
| prerelease: false | |
| projectPath: clif-pad-ide | |
| includeUpdaterJson: true | |
| updaterJsonKeepUniversal: true | |
| # ───────────────────────────────────────────────────────────── | |
| # 4. ClifPad — Linux | |
| # ───────────────────────────────────────────────────────────── | |
| clifpad-linux: | |
| name: ClifPad Linux | |
| needs: release | |
| if: needs.release.outputs.published == 'true' | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install Linux system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| libappindicator3-dev \ | |
| librsvg2-dev \ | |
| patchelf \ | |
| libgtk-3-dev \ | |
| libsoup-3.0-dev \ | |
| libjavascriptcoregtk-4.1-dev | |
| - name: Sync version | |
| run: | | |
| VERSION="${{ needs.release.outputs.version }}" | |
| git pull origin main || true | |
| cd clif-pad-ide && node scripts/bump-version.js "$VERSION" | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: clif-pad-ide/package-lock.json | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: clif-pad-ide/src-tauri -> target | |
| cache-on-failure: true | |
| - name: Install npm dependencies | |
| run: cd clif-pad-ide && npm ci | |
| - name: Build frontend | |
| run: cd clif-pad-ide && npm run build | |
| - name: Build & bundle ClifPad | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | |
| with: | |
| tagName: v${{ needs.release.outputs.version }} | |
| releaseName: ClifPad v${{ needs.release.outputs.version }} | |
| releaseBody: "See the assets to download and install ClifPad." | |
| releaseDraft: false | |
| prerelease: false | |
| projectPath: clif-pad-ide | |
| includeUpdaterJson: true | |
| updaterJsonKeepUniversal: true | |
| # ───────────────────────────────────────────────────────────── | |
| # 5. ClifCode TUI — all platforms | |
| # ───────────────────────────────────────────────────────────── | |
| clifcode-tui: | |
| name: ClifCode TUI (${{ matrix.label }}) | |
| needs: release | |
| if: needs.release.outputs.published == 'true' | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 30 | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - label: macOS Apple Silicon | |
| target: aarch64-apple-darwin | |
| runner: macos-14 | |
| binary: clifcode-aarch64-apple-darwin | |
| - label: macOS Intel | |
| target: x86_64-apple-darwin | |
| runner: macos-14 | |
| binary: clifcode-x86_64-apple-darwin | |
| - label: Linux x86_64 | |
| target: x86_64-unknown-linux-gnu | |
| runner: ubuntu-latest | |
| binary: clifcode-x86_64-unknown-linux-gnu | |
| - label: Linux ARM64 | |
| target: aarch64-unknown-linux-gnu | |
| runner: ubuntu-latest | |
| binary: clifcode-aarch64-unknown-linux-gnu | |
| cross: true | |
| - label: Windows x86_64 | |
| target: x86_64-pc-windows-msvc | |
| runner: windows-latest | |
| binary: clifcode-x86_64-pc-windows-msvc.exe | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: clif-code-tui -> target | |
| cache-on-failure: true | |
| - name: Sync version | |
| shell: bash | |
| working-directory: clif-code-tui | |
| run: | | |
| VERSION="${{ needs.release.outputs.version }}" | |
| sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" Cargo.toml | |
| rm -f Cargo.toml.bak | |
| - name: Install ARM64 cross-linker (Linux ARM64 only) | |
| if: matrix.cross == true | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-aarch64-linux-gnu | |
| - name: Build | |
| working-directory: clif-code-tui | |
| shell: bash | |
| env: | |
| CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc | |
| run: cargo build --release --target ${{ matrix.target }} | |
| - name: Strip binary (Unix) | |
| if: runner.os != 'Windows' | |
| shell: bash | |
| run: strip clif-code-tui/target/${{ matrix.target }}/release/clifcode || true | |
| - name: Prepare artifact | |
| shell: bash | |
| run: | | |
| mkdir -p dist | |
| if [[ "${{ runner.os }}" == "Windows" ]]; then | |
| cp clif-code-tui/target/${{ matrix.target }}/release/clifcode.exe dist/${{ matrix.binary }} | |
| else | |
| cp clif-code-tui/target/${{ matrix.target }}/release/clifcode dist/${{ matrix.binary }} | |
| fi | |
| - name: Upload to GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: v${{ needs.release.outputs.version }} | |
| files: dist/${{ matrix.binary }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # ───────────────────────────────────────────────────────────── | |
| # 6. Publish ClifCode TUI to crates.io | |
| # ───────────────────────────────────────────────────────────── | |
| publish-crates: | |
| name: Publish to crates.io | |
| needs: [release, clifcode-tui] | |
| if: needs.release.outputs.published == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Sync version | |
| working-directory: clif-code-tui | |
| run: | | |
| VERSION="${{ needs.release.outputs.version }}" | |
| sed -i "s/^version = \".*\"/version = \"$VERSION\"/" Cargo.toml | |
| - name: Publish | |
| working-directory: clif-code-tui | |
| run: cargo publish --allow-dirty | |
| env: | |
| CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} |