Skip to content

feat: Add the ability to navigate up and down between previous prompt… #208

feat: Add the ability to navigate up and down between previous prompt…

feat: Add the ability to navigate up and down between previous prompt… #208

Workflow file for this run

name: Publish Release
on:
push:
branches:
- main
paths:
- "apps/array/**"
- "packages/agent/**"
- "packages/electron-trpc/**"
- "pnpm-lock.yaml"
- "package.json"
- "turbo.json"
- ".github/workflows/release.yml"
concurrency:
group: release
cancel-in-progress: true
jobs:
publish:
runs-on: macos-latest
env:
NODE_ENV: production
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_CODESIGN_CERT_BASE64: ${{ secrets.APPLE_CODESIGN_CERT_BASE64 }}
APPLE_CODESIGN_CERT_PASSWORD: ${{ secrets.APPLE_CODESIGN_CERT_PASSWORD }}
APPLE_CODESIGN_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_CODESIGN_KEYCHAIN_PASSWORD }}
steps:
- name: Get app token
id: app-token
uses: getsentry/action-github-app-token@d4b5da6c5e37703f8c3b3e43abb5705b46e159cc # v3
with:
app_id: ${{ secrets.GH_APP_ARRAY_RELEASER_APP_ID }}
private_key: ${{ secrets.GH_APP_ARRAY_RELEASER_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
token: ${{ steps.app-token.outputs.token }}
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"
- name: Compute version from git tags
id: version
run: |
# Find the latest minor version tag (vX.Y format - exactly 2 parts)
# These are manually created to mark new minor releases
# Release tags (vX.Y.Z) are ignored for base version calculation
LATEST_TAG=$(git tag --list 'v[0-9]*.[0-9]*' --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+$' | head -1)
# Fall back to vX.Y.0 format if no vX.Y tags exist (backward compat)
if [ -z "$LATEST_TAG" ]; then
LATEST_TAG=$(git tag --list 'v[0-9]*.[0-9]*.0' --sort=-v:refname | head -1)
fi
if [ -z "$LATEST_TAG" ]; then
echo "No version tag found. Create one with: git tag v0.15 && git push origin v0.15"
exit 1
fi
# Extract major.minor from tag
VERSION_PART=${LATEST_TAG#v}
MAJOR=$(echo "$VERSION_PART" | cut -d. -f1)
MINOR=$(echo "$VERSION_PART" | cut -d. -f2)
# Count commits since the base tag
PATCH=$(git rev-list "$LATEST_TAG"..HEAD --count)
if [ "$PATCH" -eq 0 ]; then
echo "No commits since $LATEST_TAG. Nothing to release."
exit 1
fi
NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
echo "Version: $NEW_VERSION (from base tag $LATEST_TAG + $PATCH commits)"
echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
echo "base_tag=$LATEST_TAG" >> "$GITHUB_OUTPUT"
- name: Set version in package.json
env:
APP_VERSION: ${{ steps.version.outputs.version }}
run: |
# Update package.json for the build (not committed)
jq --arg v "$APP_VERSION" '.version = $v' apps/array/package.json > tmp.json && mv tmp.json apps/array/package.json
echo "Set apps/array/package.json version to $APP_VERSION"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build electron-trpc package
run: pnpm --filter @posthog/electron-trpc run build
- name: Build agent package
run: pnpm --filter @posthog/agent run build
- name: Import code signing certificate
if: env.APPLE_CODESIGN_IDENTITY != ''
env:
CERT_BASE64: ${{ env.APPLE_CODESIGN_CERT_BASE64 }}
CERT_PASSWORD: ${{ env.APPLE_CODESIGN_CERT_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ env.APPLE_CODESIGN_KEYCHAIN_PASSWORD }}
run: |
if [ -z "$CERT_BASE64" ] || [ -z "$CERT_PASSWORD" ] || [ -z "$KEYCHAIN_PASSWORD" ]; then
echo "Missing code signing certificate secrets"
exit 1
fi
KEYCHAIN="$RUNNER_TEMP/codesign.keychain-db"
echo "$CERT_BASE64" | base64 --decode > "$RUNNER_TEMP/certificate.p12"
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
security set-keychain-settings -lut 21600 "$KEYCHAIN"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
security import "$RUNNER_TEMP/certificate.p12" -k "$KEYCHAIN" -P "$CERT_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
security list-keychains -d user -s "$KEYCHAIN" $(security list-keychains -d user | tr -d '"')
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
rm "$RUNNER_TEMP/certificate.p12"
- name: Create tag
env:
APP_VERSION: ${{ steps.version.outputs.version }}
GH_TOKEN: ${{ steps.app-token.outputs.token }}
REPOSITORY: ${{ github.repository }}
run: |
TAG="v$APP_VERSION"
git tag -a "$TAG" -m "Release $TAG"
git push "https://x-access-token:${GH_TOKEN}@github.com/$REPOSITORY" "$TAG"
- name: Build native modules
run: pnpm --filter array run build-native
- name: Publish with Electron Forge
env:
APP_VERSION: ${{ steps.version.outputs.version }}
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
run: pnpm --filter array run publish