Files
tolaria/.github/workflows
Luca Rossi c48f337c4d fix: bundle mcp-server into release app so AI Chat works (#178)
* feat: bundle mcp-server into release app so AI Chat works

- Add esbuild bundle script (scripts/bundle-mcp-server.mjs) that compiles
  mcp-server/index.js and ws-bridge.js into self-contained CJS bundles
- Output goes to src-tauri/resources/mcp-server/ (gitignored)
- Add Tauri resources config to copy bundles into Contents/Resources/mcp-server/
- Update mcp_server_dir() to look in Contents/Resources/ (not Contents/) in release
- Add bundle-mcp npm script; hook it into tauri beforeBuildCommand
- Exclude generated resources from ESLint

Previously AI Chat showed 'mcp-server not found at .../Contents/mcp-server'
because the release path lacked the 'Resources' segment and no files were bundled.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ci: bundle mcp-server resources before Rust tests

* fix: add mcp-server as pnpm workspace package so esbuild can resolve its deps in CI

* fix: exclude src-tauri/target from eslint to fix CI lint failure

---------

Co-authored-by: Test <test@test.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-02 23:31:04 +01:00
..

CI/CD Setup

GitHub Actions Workflow

Il workflow ci.yml esegue i seguenti check automatici:

1. Tests

  • Frontend: pnpm test
  • Rust backend: cargo test

2. Test Coverage

  • Frontend: vitest con coverage reporting
  • Threshold configurabile in vitest.config.ts

3. Code Health (CodeScene)

  • Delta analysis su ogni PR/push
  • Fail se il code health diminuisce
  • Richiede secrets configurati (vedi sotto)

4. Documentation Check

  • Verifica che se cambia codice in src/ o src-tauri/, anche docs/ viene aggiornato
  • Warning only — non blocca il merge, solo un reminder
  • Skip con [skip docs] nel commit message
  • Aggiorna docs solo se la modifica invalida architettura/astrazioni/design già documentati

5. Lint & Format

  • ESLint per frontend
  • Clippy + rustfmt per Rust

Setup Required

CodeScene Secrets

Aggiungi questi secrets nel repository GitHub (Settings → Secrets → Actions):

CODESCENE_TOKEN=<your-codescene-pat>
CODESCENE_PROJECT_ID=<your-project-id>

Il PAT di CodeScene è lo stesso che usi localmente (~/.codescene/token). Il project ID lo trovi nella dashboard CodeScene.

Coverage Thresholds

Configura in vitest.config.ts:

export default defineConfig({
  test: {
    coverage: {
      lines: 80,
      functions: 80,
      branches: 80,
      statements: 80,
      // Fail CI se sotto threshold
      thresholds: {
        lines: 80,
        functions: 80,
        branches: 80,
        statements: 80
      }
    }
  }
})

Local Testing

Prima di pushare, puoi testare localmente:

# Run all tests
pnpm test && cargo test

# Check coverage
pnpm test:coverage

# Lint
pnpm lint
cargo clippy
cargo fmt --check

# CodeScene (local)
codescene delta-analysis --base-revision origin/main

Workflow Triggers

  • Push: su main e branch experiment/*
  • Pull Request: verso main

Status Checks

Tutti i check devono passare prima di poter fare merge. Se un check fallisce, vedrai il dettaglio nei logs di GitHub Actions.