switchx 0.1.0

Universal, ultra-fast subscription account switcher and rolling quota router for Antigravity, Claude Code, and Copilot/Codex
Documentation
name: CI and Ecosystem Release

on:
  push:
    branches: [ main ]
    tags: [ 'v*' ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Run Tests
        run: cargo test --verbose

  deploy-pages:
    name: Deploy Cloudflare Pages
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to Cloudflare Pages
        uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: pages deploy site/public --project-name=switchx

  publish-crates:
    name: Publish to Crates.io
    needs: test
    if: startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Cargo Publish
        run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}

  publish-openvsx:
    name: Publish to Open VSX
    needs: test
    if: startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - name: Install ovsx and package
        run: |
          npm install -g ovsx @vscode/vsce
          cd extension
          ovsx publish --pat ${{ secrets.OPEN_VSX_TOKEN }}