Releases: ils15/pantheon-opencode
Release list
v1.5.0
🆕 What's New
-
Delegação nativa via
task()— o motor legadopantheon_delegate(~3.900 linhas) foi removido por completo. A delegação agora usa otask()nativo do host, com child sessions reais. Camada fina:task-result-guard(completion verification),native-task-status(status classification), read-only enforcement. -
TUI Delegations — painel visual em tempo real no terminal. Status por estado (running/completed/failed), cores, spinner fluido (80ms/frame independente do poll), filtro por sessão ativa, recência 24h, ceiling dinâmico, retenção visual (done 2min, failed 10min).
-
Read-only enforcement — sessões de agentes read-only (apollo, gaia) bloqueiam todas as tools mutantes:
edit,write,bash,task,hashline_edit. Enforcement duplo: registro + parity test comrouting.yml. -
CI/CD modernizada — 22 GitHub Actions SHA-pinned, gitleaks v3, Dependabot, CodeQL +python, permissões reduzidas, cache npm/pip.
-
Lean codebase — ~38% dos arquivos de teste consolidados, ~17 módulos mortos removidos, instructions deduplicadas (−660 tokens).
🐞 Fixed
-
Painel Delegations vazio (crítico, beta.18) — canal
session.childrenchamava API com shape v1 num cliente v2 → ~181k erros/s → painel vazio. CorrigidosafeSessionPath/buildChildrenPath. -
Stale busy (beta.20) — children com status
busystale (>30min) agora sãocompleted. O opencode mantém entradasbusypara sessões concluídas; TUI detecta e marca como done. -
Board corruption (beta.18) — testes sem isolamento escreviam no board real. Fix:
chdirpara projeto temporário antes do import. -
Spinner travado (beta.19) — animação acoplada ao poll cycle. Fix: timer independente 80ms/frame.
-
Read-only bypass no retry (beta.7) — child retried re-aplicava read-only enforcement, fechando bypass.
-
State corruption (beta.8) — board sem fsync/rename. Fix: temp file + fsync + rename atômico.
-
Signal leak (beta.7) —
.signal.jsonórfãas. Fix: delete no finalize path.
⚠️ Known Issues
- Tarball CDN pode levar até 15 minutos para propagar após publish (provenance-signed).
pantheon_delegatepode aparecer em configs legadas — o host ignora silenciosamente.
✅ Closed Issues
- 20 betas publicadas e validadas em produção (beta.1→beta.20)
- Motor legado completamente removido (zero referências em
src/) - 6 módulos críticos revisados por Themis — APPROVED (OWASP, read-only, secrets, input validation, error handling, dead code)
- ~881 testes relevantes consolidados (engine 72, App 10, TUI 61, delegation 315, task-result 163, native-status 260)
- Node 22+ exigido
Pantheon v1.5.0-beta.20
<!-- Add new changes here. Running node scripts/versioning.mjs apply will
move this section to a versioned entry and reset the template below. -->
🐞 Fixed
- Fixed — painel Delegations: children com status
busystale (>30min sem
atualização) agora são classificadas comocompleted(nãorunning). O
opencode mantém entradasbusyno mapa de status para sessões já concluídas;
o TUI agora detecta e marca como done.
v1.5.0-beta.19
Painel Delegations: status ausente→done, recência 24h, spinner fluido (80ms/frame).
v1.5.0-beta.18
Fix do painel Delegations (shape v2 de session.children); isolamento de testes do board; 1.5.0-beta.18
v1.5.0-beta.17
Beta 17 — consolidação da camada fina sobre o motor nativo do OpenCode.
- Remoção do motor próprio
pantheon_delegateem favor dotask()nativo do OpenCode. - TUI: exposição de
session.childrenesession.status. - Enforcement read-only via
chat.params. - Camada fina (thin layer) mantida sobre o runtime nativo.
v1.5.0-beta.16
<!-- Add new changes here. Running node scripts/versioning.mjs apply will
move this section to a versioned entry and reset the template below. -->
🆕 What's New
- Modernização CI/supply-chain: 22 actions SHA-pinadas;
gitleaks-actionv3
(fix crítico — a v2 morria com Node 20 em 2026-09-16) com CLI 8.30.1; cache
npm/pip; Dependabot; CodeQL+pythonecodeql-config; permissões reduzidas
nodocs.yml; jobversion-checkfundido novalidate;upload-artifactv7
edownload-artifactv8. - Lean: ~17 módulos mortos removidos de
src/pantheon/, docs/scripts
obsoletos,teste//testes/,Dockerfile/docker-compose(de outro projeto)
e caches; ~38% dos arquivos de teste removidos/consolidados; testes mínimos
readicionados para os módulos vivos (tool-ceiling, native-probe). - Instructions: deduplicação das instruções compartilhadas — contexto menor
sem perder nenhuma regra.
🐞 Fixed
- 2 flakes determinísticos eliminados: TTL do MCP persistence
(test_ttl_expiry_real_time) elogger.test.mjsdeixaram de depender de
timing/carga do host. - Refs stale corrigidas: referências de versão/ambiente atualizadas para
Node 22+.
v1.5.0-beta.15
v1.5.0-beta.15
🆕 What's New
- Delegation
readdevolve o relatório completo: o retorno dereadpassa a ler o relatório integral do disco (com cap configurável e marker explícito de truncamento) em vez do recibo resumido — paridade garantida entre o caminho nativo e o legado. sanitizeReceiptTextUTF-8-safe: a sanitização de recibos deixou de corromper caracteres multibyte; acentuação e demais codepoints UTF-8 são preservados no caminho nativo e no legado.- TUI — cor de status na row inteira: cada linha do painel Delegations passa a ser pintada pelo estado — vermelho = falha, verde = concluído, amarelo = em andamento — com o glyph mantido como canal redundante para acessibilidade.
🐞 Fixed
- TUI — painel Delegations só da sessão ativa: o painel deixa de renderizar rows cross-session/órfãs que causavam "Session not found" ao clicar; a lista agora cobre apenas a sessão ativa, mantendo a retenção de concluídas (2 min) e falhas (10 min).
- Guards de estado e navegação órfã: transições prematuras para
donesão bloqueadas e a navegação defensiva ignora alvos órfãos, evitando seleção inválida no painel. - Isolamento do board nos testes: testes que importam o plugin real agora isolam o BackgroundJobBoard, eliminando o fantasma "preserve this running delegation"; o board real foi limpo.
- Lean no core: 17 módulos mortos de
src/pantheon/removidos, ~38% dos arquivos de teste removidos/consolidados e docs/scripts órfãos limpos, com testes mínimos readicionados para os módulos vivos (tool-ceiling, native-probe). - Flake de TTL determinístico:
test_ttl_expiry_real_timedeixou de competir com a truncagem de microssegundos do SQLite — o teste agora espera o início de um segundo limpo antes do store e usa margem sobre o TTL, eliminando o flake dependente de carga (test-only).
Install: npm i -g pantheon-opencode@beta
Dist-tag: beta
v1.5.0-beta.9
[v1.5.0-beta.9] - 2026-09-14
Novidades
- TUI delegations nativas (gated): painel Delegations renderiza N delegacoes native + M pantheon com tag [native], live task em tempo real, click navega para sessao. Implementado em src/plugins/tui/src/index.tsx com dist rebuildado.
- 93 testes TUI delegations: suite tests/pantheon/tui-delegations.test.ts com 93/93 passando (tsc + biome OK).
- E2E beta.8 PASS (referencia): baseline E2E da beta.8 mantido como referencia de estabilidade para beta.9.
Fixed
- Removido diretorio testyes/ (artefato de teste).
- Truncado hooks.log para baseline limpo de beta.9.
v1.5.0-beta.14
[v1.5.0-beta.14] - 2026-09-14
<!-- Add new changes here. Running node scripts/versioning.mjs apply will
move this section to a versioned entry and reset the template below. -->
🆕 What's New
- Ordenação active-first: delegações ativas aparecem antes das concluídas,
falhas e canceladas no painel TUI. - Overflow active: quando há mais delegações ativas que o teto visível, o
excedente ativo permanece representado na linha de overflow.
🐞 Fixed
- Retenção visual: concluídas permanecem visíveis por 2 min e falhas por
10 min antes de saírem do painel; canceladas seguem a retenção configurada.
⚠️ Known Issues
- Stale running warning: jobs em estado
runningalém do limite esperado
recebem um aviso visual de stale no painel.
v1.5.0-beta.13
[v1.5.0-beta.13] - 2026-09-14
🆕 What's New
- TUI status-only — rows simplificadas: cada linha do painel Delegations passa
a ser{glyph} {alias} {elapsed}+descmuted — um glyph de status, uma única
identidade e o tempo decorrido, com a descrição em tom muted. São 4 glyphs
(running animado, completed, error, cancelled/retry), sem toggle
[Sessão]/[Tudo], sem prefixosnat:/pan:e sem losango ◇/◆. - Header
active/done/failed: o cabeçalho do painel resume apenas esses
três contadores sobre a lista completa (todas as sessões), semnat:/pan:. - Ceiling 8: no máximo 8 linhas visíveis (live-first); o excedente colapsa em
uma única linha… +N more. - Board read (jobs de todas as sessões): o painel lê o BackgroundJobBoard
(.pantheon/board/state.json), então jobspantheon_delegatede qualquer
sessão aparecem — não só os filhos nativos da sessão focada. - 118 testes TUI delegations:
tests/pantheon/tui-delegations.test.tscom
118/118 passando, cobrindo rows status-only, header active/done/failed, ceiling
e board read cross-session.
🐞 Fixed
- Sanitização de dead code: removidos helpers, tipos e estado órfãos do
painel Delegations (toggle de escopo[Sessão]/[Tudo], prefixos curtos
nat:/pan:, glyphs por estado e paginação de arquivo morto) que sobraram do
refactor status-only. - Board merge preserva sessão conhecida: um record do board com
parentSessionIDvazio não sobrescreve mais a sessão já atribuída à linha.
Full diff: v1.5.0-beta.12...v1.5.0-beta.13