From bee6bef08e9d63eb4b1aa42f43de9df9600ddca9 Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:10:05 -0300 Subject: [PATCH 1/6] =?UTF-8?q?refactor(cli):=20deriva=20vers=C3=A3o=20exi?= =?UTF-8?q?bida=20do=20package.json=20[NO-TICKET]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove o 0.1.0 hardcoded em src/cli.ts; a versão passa a vir do package.json (fonte única), encerrando o drift entre os dois. Cobre com unit test que casa program.version() com package.json. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/cli.ts | 6 +++++- test/cli.test.ts | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cli.ts b/src/cli.ts index 1428ca5..8e9859d 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,10 +1,14 @@ import { Command } from 'commander'; +import { createRequire } from 'module'; import { runFile } from './commands/run.js'; import { runDoctor } from './commands/doctor.js'; +// Versão vem do package.json (fonte única) — em dist/cli.js, '../package.json' é a raiz do pacote. +const { version } = createRequire(import.meta.url)('../package.json') as { version: string }; + export function buildProgram(): Command { const program = new Command(); - program.name('psjava').description('Run .psjava files').version('0.1.0'); + program.name('psjava').description('Run .psjava files').version(version); program .argument('[file]', '.psjava file') diff --git a/test/cli.test.ts b/test/cli.test.ts index e1c2971..a2426df 100644 --- a/test/cli.test.ts +++ b/test/cli.test.ts @@ -1,6 +1,9 @@ import { describe, it, expect } from 'vitest'; +import { createRequire } from 'module'; import { buildProgram } from '../src/cli.js'; +const pkg = createRequire(import.meta.url)('../package.json') as { version: string }; + describe('buildProgram', () => { it('chama-se psjava', () => { expect(buildProgram().name()).toBe('psjava'); @@ -10,4 +13,8 @@ describe('buildProgram', () => { const names = buildProgram().commands.map((c) => c.name()); expect(names).toContain('doctor'); }); + + it('expõe a versão do package.json', () => { + expect(buildProgram().version()).toBe(pkg.version); + }); }); From 76742f543f82dc50d71d43dcb7851a17ee9d5c1e Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:10:30 -0300 Subject: [PATCH 2/6] chore(pscode): registra artefatos do fluxo da release v0.1.0 [NO-TICKET] Co-Authored-By: Claude Opus 4.8 (1M context) --- .../chore-entregar-versao-v0-1-0/.issue | 1 + .../chore-entregar-versao-v0-1-0/brief.md | 15 ++++++ .../chore-entregar-versao-v0-1-0/questions.md | 11 +++++ .../chore-entregar-versao-v0-1-0/refine.md | 46 +++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 pscode/changes/chore-entregar-versao-v0-1-0/.issue create mode 100644 pscode/changes/chore-entregar-versao-v0-1-0/brief.md create mode 100644 pscode/changes/chore-entregar-versao-v0-1-0/questions.md create mode 100644 pscode/changes/chore-entregar-versao-v0-1-0/refine.md diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/.issue b/pscode/changes/chore-entregar-versao-v0-1-0/.issue new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/pscode/changes/chore-entregar-versao-v0-1-0/.issue @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/brief.md b/pscode/changes/chore-entregar-versao-v0-1-0/brief.md new file mode 100644 index 0000000..ae31498 --- /dev/null +++ b/pscode/changes/chore-entregar-versao-v0-1-0/brief.md @@ -0,0 +1,15 @@ +# [chore] entregar versão v0.1.0 + +## Objetivo +Promover o projeto de beta para a primeira release estável, **v0.1.0** (sem +sufixo `-beta`). + +## Comportamento esperado +- `package.json` em `0.1.0`. +- CI verde no PR (unit + e2e, em todos os runners). +- Repositório sem lixo (arquivos/código não utilizados). +- PR de release aberto. + +## Fora de escopo +- Novas funcionalidades do produto ou mudanças de comportamento do CLI. +- Merge do PR e push da tag `v0.1.0` (publish no npm) — passo manual posterior. diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/questions.md b/pscode/changes/chore-entregar-versao-v0-1-0/questions.md new file mode 100644 index 0000000..cd50998 --- /dev/null +++ b/pscode/changes/chore-entregar-versao-v0-1-0/questions.md @@ -0,0 +1,11 @@ +# Grill Me — [chore] entregar versão v0.1.0 + +- [x] **Fim do escopo?** PR verde + bump. Merge e push da tag `v0.1.0` + (publish no npm latest) ficam como passo manual posterior. +- [x] **Versão do CLI?** Derivar do `package.json` em runtime — fonte única de + verdade, acaba com o drift (`src/cli.ts:7` estava `0.1.0` hardcoded enquanto o + `package.json` estava em `0.0.1-beta.3`). +- [x] **README @beta?** Atualizar badge e instalação para o canal estável + (`latest` / sem `@beta`). +- [x] **Tooling SDD (`.claude/`, `pscode/`)?** Manter versionado — é + intencional, não é lixo. diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md new file mode 100644 index 0000000..cfcdd52 --- /dev/null +++ b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md @@ -0,0 +1,46 @@ +# entregar versão v0.1.0 + +## Summary +Promover o psjava de beta para a primeira release estável, **0.1.0**: limpar +referências a beta, alinhar a versão exibida pelo CLI com o `package.json`, e +abrir o PR de release com a CI verde (unit + e2e). + +## Technical detail +- **Drift de versão:** `src/cli.ts:7` está com `.version('0.1.0')` hardcoded, + enquanto `package.json` está em `0.0.1-beta.3`. Decisão: derivar a versão do + `package.json` em runtime (fonte única). Num bin ESM, o caminho mais simples é + `createRequire(import.meta.url)('../package.json').version` (resolve para a + raiz a partir de `dist/cli.js`). Cobrir com unit test que casa a versão do + programa com a do `package.json`. +- **Bump:** `package.json` `0.0.1-beta.3` → `0.1.0` (sem `-`). O workflow + `release.yml` já manda versão sem `-` para a dist-tag `latest` ao empurrar a + tag `v*` — nenhuma mudança de CI necessária. +- **README:** badge (linha 3, `/beta`) e instalação (linha 14, `@beta`) passam + para o canal estável (`/latest` ou sem sufixo; `npm install -g` sem `@beta`). +- **Lixo:** varredura feita — working tree limpo, sem untracked, `.gitignore` + cobre `dist/ node_modules/ demo/`. Fontes (`src`, `bin`) todos referenciados e + cobertos por testes. `docs/backlog.md` e o tooling SDD (`.claude/`, `pscode/`) + são intencionais. Nenhuma remoção prevista; subtask final só confirma. +- **Regra de entrega:** `npm run test:unit` e `npm run test:e2e` verdes antes do + PR sair de draft (CLAUDE.md). + +## Scope +### In +- Derivar a versão do CLI do `package.json` (+ unit test). +- Bump `package.json` → `0.1.0`. +- README: badge e instalação para o canal estável. +- Varredura final de lixo + suíte verde (unit + e2e). + +### Out +- Novas features / mudança de comportamento do CLI. +- Merge do PR e push da tag `v0.1.0` (publish no npm) — manual, depois. +- Remover `.claude/` ou `pscode/` do versionamento. + +## Subtasks +- [ ] Derivar a versão exibida pelo CLI do `package.json` (remover o `0.1.0` + hardcoded em `src/cli.ts`) e cobrir com unit test que casa as duas versões. +- [ ] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`. +- [ ] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem + sufixo) para o canal estável. +- [ ] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` + verdes localmente. From 9ce3f44c9f1d4d9d7f5bac34c1317c02f93e74ee Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:13:22 -0300 Subject: [PATCH 3/6] =?UTF-8?q?chore(release):=20bump=20vers=C3=A3o=20para?= =?UTF-8?q?=200.1.0=20[NO-TICKET]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Primeira release estável, sai do canal beta. Co-Authored-By: Claude Opus 4.8 (1M context) --- package-lock.json | 4 ++-- package.json | 2 +- pscode/changes/chore-entregar-versao-v0-1-0/refine.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ea2377..cc89f39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@thiagodiogo/psjava", - "version": "0.0.1-beta.3", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@thiagodiogo/psjava", - "version": "0.0.1-beta.3", + "version": "0.1.0", "license": "MIT", "dependencies": { "chalk": "5.6.2", diff --git a/package.json b/package.json index b7b0e53..7ddfed7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thiagodiogo/psjava", - "version": "0.0.1-beta.3", + "version": "0.1.0", "description": "Run .psjava files as scripts — plain Java, no ceremony, on top of JShell.", "keywords": [ "psjava", diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md index cfcdd52..5ddd3f8 100644 --- a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md +++ b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md @@ -37,9 +37,9 @@ abrir o PR de release com a CI verde (unit + e2e). - Remover `.claude/` ou `pscode/` do versionamento. ## Subtasks -- [ ] Derivar a versão exibida pelo CLI do `package.json` (remover o `0.1.0` +- [x] Derivar a versão exibida pelo CLI do `package.json` (remover o `0.1.0` hardcoded em `src/cli.ts`) e cobrir com unit test que casa as duas versões. -- [ ] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`. +- [x] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`. - [ ] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem sufixo) para o canal estável. - [ ] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` From 92a2432e30f43c3e525ffc068e2ba9bdfe849670 Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:14:32 -0300 Subject: [PATCH 4/6] =?UTF-8?q?docs(readme):=20aponta=20badge=20e=20instal?= =?UTF-8?q?a=C3=A7=C3=A3o=20para=20o=20canal=20est=C3=A1vel=20[NO-TICKET]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove o sufixo @beta da instalação e o /beta do badge npm, agora que a v0.1.0 sai como latest. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 4 ++-- pscode/changes/chore-entregar-versao-v0-1-0/refine.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6bfd408..199befd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # psjava -[![npm](https://img.shields.io/npm/v/@thiagodiogo/psjava/beta)](https://www.npmjs.com/package/@thiagodiogo/psjava) +[![npm](https://img.shields.io/npm/v/@thiagodiogo/psjava)](https://www.npmjs.com/package/@thiagodiogo/psjava) [![CI](https://github.com/eipastel/psjava/actions/workflows/ci.yml/badge.svg)](https://github.com/eipastel/psjava/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/@thiagodiogo/psjava)](./LICENSE) @@ -11,7 +11,7 @@ There's no custom syntax and no transpilation: whatever is in the file is exactl ## Install ```bash -npm install -g @thiagodiogo/psjava@beta +npm install -g @thiagodiogo/psjava ``` Requires a **JDK 11+** with `jshell` on your `PATH`. Verify your setup with `psjava doctor`. diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md index 5ddd3f8..96e163d 100644 --- a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md +++ b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md @@ -40,7 +40,7 @@ abrir o PR de release com a CI verde (unit + e2e). - [x] Derivar a versão exibida pelo CLI do `package.json` (remover o `0.1.0` hardcoded em `src/cli.ts`) e cobrir com unit test que casa as duas versões. - [x] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`. -- [ ] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem +- [x] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem sufixo) para o canal estável. - [ ] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` verdes localmente. From 78e3727b63ad2b4f99d0fed6189dc02b327e0fcf Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:16:12 -0300 Subject: [PATCH 5/6] chore(pscode): conclui subtasks da release v0.1.0 [NO-TICKET] Co-Authored-By: Claude Opus 4.8 (1M context) --- pscode/changes/chore-entregar-versao-v0-1-0/refine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md index 96e163d..c2f72d5 100644 --- a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md +++ b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md @@ -42,5 +42,5 @@ abrir o PR de release com a CI verde (unit + e2e). - [x] Bump `package.json`: `0.0.1-beta.3` → `0.1.0`. - [x] README: trocar badge (`/beta` → `/latest`) e instalação (`@beta` → sem sufixo) para o canal estável. -- [ ] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` +- [x] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` verdes localmente. From c4d47e298d6b172fb135c1da353d5d5d40a304d9 Mon Sep 17 00:00:00 2001 From: eipastel Date: Sun, 28 Jun 2026 13:23:16 -0300 Subject: [PATCH 6/6] ci: renomeia checks para unit-test e e2e-test [NO-TICKET] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mantém a matriz ubuntu/windows do e2e, só padroniza os nomes dos checks (Unit -> unit-test, E2E -> e2e-test). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 4 ++-- pscode/changes/chore-entregar-versao-v0-1-0/refine.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70962f9..a149723 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ concurrency: jobs: # Lógica pura (buildSession, resolução de arquivo, CLI). Rápido, não precisa de JDK. unit: - name: Unit + name: unit-test runs-on: ubuntu-latest timeout-minutes: 5 steps: @@ -37,7 +37,7 @@ jobs: # Comportamento ponta a ponta: roda o binário contra o jshell real. Precisa de JDK. e2e: - name: E2E (${{ matrix.os }}) + name: e2e-test (${{ matrix.os }}) runs-on: ${{ matrix.os }} timeout-minutes: 10 strategy: diff --git a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md index c2f72d5..aaba9d9 100644 --- a/pscode/changes/chore-entregar-versao-v0-1-0/refine.md +++ b/pscode/changes/chore-entregar-versao-v0-1-0/refine.md @@ -44,3 +44,5 @@ abrir o PR de release com a CI verde (unit + e2e). sufixo) para o canal estável. - [x] Varredura final de lixo e rodar `npm run test:unit` + `npm run test:e2e` verdes localmente. +- [x] CI: renomear os checks para `unit-test` e `e2e-test ()` (mantém a + matriz ubuntu/windows). *(surgiu na revisão)*