Skip to content

fix: refactor AgentChatPanel into modular components #102

fix: refactor AgentChatPanel into modular components

fix: refactor AgentChatPanel into modular components #102

Workflow file for this run

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 }}