From 775956c16060d0d77dfb1a9d87732bc599aa0f46 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Tue, 4 Nov 2025 23:21:41 -0300 Subject: [PATCH] Switch workflows to Bun install/test and update pnpm --- .github/workflows/ci-cd-web-desktop.yml | 28 +- .github/workflows/desktop-release.yml | 2 +- .github/workflows/quality-checks.yml | 20 +- README.md | 45 +- agents.md | 2 +- bun.lock | 2386 ++++++++++++++++++ bunfig.toml | 3 + docs/DEV.md | 43 +- docs/OPERACAO-PRODUCAO.md | 4 +- docs/archive/convex-self-hosted-env.md | 6 +- docs/archive/deploy-runbook.md | 10 +- docs/desktop/build.md | 2 +- package.json | 14 +- scripts/deploy-from-git.sh | 2 +- scripts/start-web.sh | 4 +- tests/browser/example.browser.test.ts | 22 +- tests/change-assignee-comment.test.ts | 2 +- tests/csv.test.ts | 2 +- tests/devices/remote-access.test.ts | 2 +- tests/email-smtp.test.ts | 4 +- tests/invite-policies.test.ts | 2 +- tests/machines.getById.test.ts | 2 +- tests/machines.listTicketsHistory.test.ts | 2 +- tests/machines.updatePersona.test.ts | 2 +- tests/reports.productivity-dashboard.test.ts | 2 +- tests/reports.sla-backlog.test.ts | 2 +- tests/reports.ticketsByChannel.test.ts | 2 +- tests/reports.timeline-hours.test.ts | 2 +- tests/setup/bun-test-env.ts | 96 + tests/ticket-comments.test.ts | 2 +- tests/ticket-form-helpers.test.ts | 2 +- tests/ticket-mention-html.test.ts | 2 +- tests/ticket-timer.test.ts | 2 +- tests/tickets.lifecycle.test.ts | 2 +- tests/tickets.submitCsat.test.ts | 2 +- tests/time.test.ts | 2 +- tests/utils/report-test-helpers.ts | 2 +- 37 files changed, 2618 insertions(+), 113 deletions(-) create mode 100644 bun.lock create mode 100644 bunfig.toml create mode 100644 tests/setup/bun-test-env.ts diff --git a/.github/workflows/ci-cd-web-desktop.yml b/.github/workflows/ci-cd-web-desktop.yml index 77c3e98..7e5b3b9 100644 --- a/.github/workflows/ci-cd-web-desktop.yml +++ b/.github/workflows/ci-cd-web-desktop.yml @@ -72,13 +72,17 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9 + version: 10.20.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - cache: 'pnpm' + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.3.1 - name: Verify Bun runtime run: bun --version @@ -182,17 +186,16 @@ jobs: uses: actions/cache@v4 with: path: ${{ env.EFFECTIVE_APP_DIR }}/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('src/**/*.ts', 'src/**/*.tsx', 'src/**/*.js', 'src/**/*.jsx', 'next.config.ts') }} + key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml', 'bun.lock') }}-${{ hashFiles('src/**/*.ts', 'src/**/*.tsx', 'src/**/*.js', 'src/**/*.jsx', 'next.config.ts') }} restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}- + ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml', 'bun.lock') }}- - name: Install and build (Next.js) run: | cd "$EFFECTIVE_APP_DIR" - corepack enable || true - pnpm --filter web install --no-frozen-lockfile - pnpm prisma:generate - pnpm build:bun + bun install --frozen-lockfile + bun run prisma:generate + bun run build:bun - name: Publish build to stable APP_DIR directory run: | @@ -385,7 +388,7 @@ jobs: -e MACHINE_PROVISIONING_SECRET \ -e MACHINE_TOKEN_TTL_MS \ -e FLEET_SYNC_SECRET \ - node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@9 --activate; mkdir -p \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm config set store-dir \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm install --frozen-lockfile --prod=false; \ + node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@10.20.0 --activate; mkdir -p \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm config set store-dir \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm install --frozen-lockfile --prod=false; \ if [ -n \"$MACHINE_PROVISIONING_SECRET\" ]; then pnpm exec convex env set MACHINE_PROVISIONING_SECRET \"$MACHINE_PROVISIONING_SECRET\" -y; fi; \ if [ -n \"$MACHINE_TOKEN_TTL_MS\" ]; then pnpm exec convex env set MACHINE_TOKEN_TTL_MS \"$MACHINE_TOKEN_TTL_MS\" -y; fi; \ if [ -n \"$FLEET_SYNC_SECRET\" ]; then pnpm exec convex env set FLEET_SYNC_SECRET \"$FLEET_SYNC_SECRET\" -y; fi; \ @@ -410,7 +413,7 @@ jobs: -e CI=true \ -e CONVEX_SELF_HOSTED_URL \ -e CONVEX_SELF_HOSTED_ADMIN_KEY \ - node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@9 --activate; mkdir -p \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm config set store-dir \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm install --frozen-lockfile --prod=false; pnpm exec convex deploy" + node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@10.20.0 --activate; mkdir -p \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm config set store-dir \"${PNPM_STORE_DIR:-/tmp/pnpm-store}\"; pnpm install --frozen-lockfile --prod=false; pnpm exec convex deploy" - name: Cleanup old convex build workdirs (keep last 2) run: | @@ -445,13 +448,12 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9 + version: 10.20.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - cache: 'pnpm' - name: Install deps (desktop) run: pnpm install --frozen-lockfile @@ -513,7 +515,7 @@ jobs: -v /srv/apps/sistema:/app -w /app \ -e CONVEX_SELF_HOSTED_URL -e CONVEX_SELF_HOSTED_ADMIN_KEY="$ADMIN_KEY" \ -e MACHINE_PROVISIONING_SECRET -e MACHINE_TOKEN_TTL_MS -e FLEET_SYNC_SECRET \ - node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@9 --activate; pnpm i --frozen-lockfile --prod=false; \ + node:20-bullseye bash -lc "set -euo pipefail; corepack enable; corepack prepare pnpm@10.20.0 --activate; pnpm i --frozen-lockfile --prod=false; \ unset CONVEX_DEPLOYMENT; pnpm exec convex env list; \ if [ -n \"$MACHINE_PROVISIONING_SECRET\" ]; then pnpm exec convex env set MACHINE_PROVISIONING_SECRET \"$MACHINE_PROVISIONING_SECRET\" -y; fi; \ if [ -n \"$MACHINE_TOKEN_TTL_MS\" ]; then pnpm exec convex env set MACHINE_TOKEN_TTL_MS \"$MACHINE_TOKEN_TTL_MS\" -y; fi; \ diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index c72241b..d0b3c21 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -36,7 +36,7 @@ jobs: node-version: 20 - name: Enable Corepack - run: corepack enable && corepack prepare pnpm@9 --activate + run: corepack enable && corepack prepare pnpm@10.20.0 --activate - name: Install Rust (stable) uses: dtolnay/rust-toolchain@stable diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index 1cead9e..73446cb 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -22,16 +22,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9 - - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - cache: pnpm - name: Setup Bun uses: oven-sh/setup-bun@v2 @@ -42,25 +36,25 @@ jobs: run: bun --version - name: Install dependencies - run: pnpm install --frozen-lockfile + run: bun install --frozen-lockfile - name: Cache Next.js build cache uses: actions/cache@v4 with: path: | ${{ github.workspace }}/.next/cache - key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.{js,jsx,ts,tsx}') }} + key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml', 'bun.lock') }}-${{ hashFiles('**/*.{js,jsx,ts,tsx}') }} restore-keys: | - ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}- + ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml', 'bun.lock') }}- - name: Generate Prisma client - run: pnpm prisma:generate + run: bun run prisma:generate - name: Lint - run: pnpm lint + run: bun run lint - name: Test - run: pnpm test + run: bun test - name: Build - run: pnpm build:bun + run: bun run build:bun diff --git a/README.md b/README.md index 434f9ea..0ffc479 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,16 @@ Aplicação **Next.js 16 (App Router)** com **React 19**, **Convex** e **Better ## Requisitos -- Node.js >= 20 -- pnpm >= 9 (habilite via `corepack prepare pnpm@9 --activate`) -- (Opcional) Bun >= 1.3 para usar o runtime/test runner do Bun (`bun run --bun ...`). Após instalar via script oficial, adicione `export PATH="$HOME/.bun/bin:$PATH"` ao seu shell (ex.: `.bashrc`) para ter `bun` disponível globalmente. -- CLI do Convex (`pnpm dlx convex dev` instalará automaticamente no primeiro uso) +- Bun >= 1.3 (recomendado 1.3.1). Após instalar via script oficial, adicione `export PATH="$HOME/.bun/bin:$PATH"` ao seu shell (ex.: `.bashrc`) para ter `bun` disponível globalmente. +- Node.js >= 20 (necessário para ferramentas auxiliares como Prisma CLI e Next.js em modo fallback). +- pnpm >= 10 (opcional, usado apenas para fluxos do app desktop/Tauri ou como plano B). +- CLI do Convex (`bunx convex dev` instalará automaticamente no primeiro uso, se ainda não estiver presente). ## Configuração rápida 1. Instale as dependências: ```bash - pnpm install + bun install ``` 2. Ajuste o arquivo `.env` (ou crie a partir de `.env.example`) e confirme os valores de: - `NEXT_PUBLIC_CONVEX_URL` (gerado pelo Convex Dev) @@ -33,14 +33,14 @@ Aplicação **Next.js 16 (App Router)** com **React 19**, **Convex** e **Better ``` 6. Em um terminal, execute o backend em tempo real do Convex: ```bash - pnpm convex:dev:bun + bun run convex:dev:bun ``` - > Alternativa: `pnpm convex:dev` (runtime Node) caso queira manter o comportamento anterior. + > Alternativa: `bun run convex:dev` (runtime Node) caso queira manter o comportamento anterior. 7. Em outro terminal, suba o frontend Next.js (Turbopack): ```bash - pnpm dev:bun + bun run dev:bun ``` - > Fallback: `pnpm dev` (Node) ou `pnpm dev:webpack` caso o Turbopack acione alguma incompatibilidade. + > Fallback: `pnpm dev` (Node) ou `bun run dev:webpack` caso o Turbopack acione alguma incompatibilidade. 8. Com o Convex ativo, acesse `http://localhost:3000/dev/seed` uma vez para popular dados de demonstração (tickets, usuários, comentários) diretamente no banco do Convex. > Se o CLI perguntar sobre configuração do projeto Convex, escolha criar um novo deployment local (opção padrão) e confirme. As credenciais são armazenadas em `.convex/` automaticamente. @@ -64,16 +64,16 @@ Para fluxos detalhados de desenvolvimento — banco de dados local (SQLite/Prism ## Scripts úteis -- `pnpm dev:bun` — padrão atual para o Next.js com runtime Bun (`pnpm dev` usa Node como fallback). -- `pnpm convex:dev:bun` — runtime Bun para o Convex (`pnpm convex:dev` mantém o fluxo antigo). -- `pnpm build:bun` / `pnpm start:bun` — build e serve com Bun; use `pnpm build`/`pnpm start` se quiser ficar no Node. -- `pnpm dev:webpack` / `pnpm build:webpack` — fallback oficial caso Turbopack apresente problemas. -- `pnpm lint` — ESLint com as regras do projeto. -- `pnpm test` — suíte de testes unitários (Vitest) em modo não interativo. -- `pnpm build` — `next build --turbopack` com otimizações para produção. -- `pnpm auth:seed` — atualiza/cria contas padrão do Better Auth (credenciais em `agents.md`). -- `pnpm prisma migrate deploy` — aplica migrações ao banco SQLite local. -- `pnpm convex:dev` — roda o Convex em modo desenvolvimento, gerando tipos em `convex/_generated`. +- `bun run dev:bun` — padrão atual para o Next.js com runtime Bun (`pnpm dev` usa Node como fallback). +- `bun run convex:dev:bun` — runtime Bun para o Convex (`pnpm convex:dev` mantém o fluxo antigo). +- `bun run build:bun` / `bun run start:bun` — build e serve com Bun; use `pnpm build`/`pnpm start` se quiser ficar no Node. +- `bun run dev:webpack` / `bun run build:webpack` — fallback oficial caso Turbopack apresente problemas. +- `bun run lint` — ESLint com as regras do projeto. +- `bun test` — suíte de testes unitários usando o runner do Bun (o teste de screenshot fica automaticamente ignorado se o matcher não existir). +- `bun run build` — executa `next build --turbopack` usando Node como fallback. +- `bun run auth:seed` — atualiza/cria contas padrão do Better Auth (credenciais em `agents.md`). +- `bunx prisma migrate deploy` — aplica migrações ao banco SQLite local. +- `bun run convex:dev` — roda o Convex em modo desenvolvimento com Node, gerando tipos em `convex/_generated`. ## Transferir dispositivo entre colaboradores @@ -105,9 +105,10 @@ Consulte `PROXIMOS_PASSOS.md` para acompanhar o backlog funcional e o progresso ### Executar com Bun -- `pnpm dev:bun`, `pnpm convex:dev:bun`, `pnpm build:bun` e `pnpm start:bun` já estão configurados; internamente executam `bun run --bun