* feat(#3028): responsive Markdown separators instead of fixed-width rules Stage banners, checkpoints, completion and error panels used fixed-width runs of box-drawing characters -- a 53-column heavy rule and a 62-column double-line box. Those runs are ordinary text to a Markdown-rendering host, so in a narrower pane they wrap and the border comes apart from the heading it framed. Shipped content now emits an ATX heading for a titled section and a blank-line-delimited --- for a break between sections, both of which adapt to the available width. The same convention is applied to the three code sites that built these strings at runtime: the UAT checkpoint renderer, the milestone-close audit report, and the TDD review checkpoint table. Removing the box also removes its only reason to exist -- the east-asian-width padding helpers that kept its right border aligned (checkpointBoxLine, displayWidth, isWideCodePoint, ZERO_WIDTH_MARK_RE, CHECKPOINT_BOX_WIDTH). RTL directional isolation is unchanged. The convention is specified in gsd-core/references/ui-brand.md and enforced across all shipped content by tests/responsive-separators.test.cjs. Refs #3028 * test(#3028): pin the heading form in checkpoint and audit-report assertions These suites asserted the exact box borders and the 62-column padded banner interior. With the box gone they assert the ### heading form, the --- break and the bolded instruction line, and each now carries a positive assertion that no box character remains -- which is what pins the fix rather than merely tolerating it. Language coverage is converted, not dropped: Japanese, Chinese, Korean, Hindi and Arabic all still assert their rendered banner, and the Arabic case still asserts the RTL directional isolates the box removal must not disturb. Adds a case for a banner longer than the old inner width, which previously produced a ragged border and now has none. Refs #3028 * chore(#3028): acknowledge execute-plan.md growth from the checkpoint display spec The checkpoint_protocol display spec described the drawn box; it now describes the heading, the --- break and the bolded action prompt, which costs 22 bytes (40111 -> 40133, 827 under the cap). Appended to the existing #3370 fragment rather than filed as a new one: a growth ack keys on the bare filename and #3370 already declares execute-plan.md, so a second source naming it would be a hard duplicate-key error. Same supersede-by-append route #3370 took for the spent #2652 fragment. Refs #3028 * docs(#3028): state the load-bearing half of the separator rule, and amend the zh-CN reference Review found three things. The rule as first written demanded a blank line above AND below every ---. Only the one above is load-bearing: it is what stops CommonMark reading the rule as a setext underline for the line above. The one below is cosmetic, because a thematic break is a leaf block. The rule now says that, with the reason, instead of asserting a stricter form the content does not keep. The zh-CN reference had received the mechanical box-to-heading swap but none of the prose behind it: it still claimed a 62-character checkpoint width and still listed --- among forbidden mixed banner styles, so it contradicted the convention it was translating. It now carries the separator section, the setext reasoning, the unconditional-vs-per-runtime rationale and a corrected anti-pattern list, in Chinese. The user guide asserted that a heading is not a degradation anywhere. That is an assertion, not a demonstration. It now says what was actually traded away in a plain terminal, points at the recorded rationale, and invites the report that would justify the capability flag instead. Refs #3028 * chore(#3028): backfill changeset PR number Refs #3028 --------- Co-authored-by: sim <sim@local>
5.4 KiB
Como atualizar o GSD Core
Atualize uma instalação existente do GSD Core para a versão mais recente, visualize o changelog antes de confirmar e recupere personalizações locais que a atualização sobrescreveria.
O que você precisa: O mesmo ambiente de execução para o qual o GSD está instalado. O comando de atualização re-executa o instalador internamente, portanto requer Node.js e npx disponíveis (mesmos requisitos da instalação original).
O caminho padrão de atualização
De dentro do seu ambiente de execução de IA, execute:
/gsd-update
O GSD irá:
- Detectar a versão instalada e o escopo da instalação (global ou local).
- Verificar no npm a versão mais recente do
@opengsd/gsd-core. - Buscar o changelog e exibir o que mudou entre sua versão instalada e a mais recente.
- Solicitar confirmação antes de alterar qualquer coisa.
- Fazer backup de quaisquer arquivos adicionados pelo usuário encontrados dentro de diretórios gerenciados pelo GSD para
gsd-user-files-backup/. - Executar o instalador (
npx @opengsd/gsd-core@latest --<runtime> --<scope>). - Limpar o cache de verificação de atualização para que o indicador na barra de status seja redefinido.
- Informar se arquivos GSD modificados localmente foram copiados para
gsd-local-patches/.
Reinicie seu ambiente de execução após a atualização para carregar os novos comandos e agentes.
Flags
| Flag | O que faz |
|---|---|
--sync |
Após atualizar, sincroniza habilidades do registro GSD |
--reapply |
Após atualizar, mescla arquivos GSD modificados localmente de volta a partir de gsd-local-patches/ |
/gsd-update --sync # Update and sync skills
/gsd-update --reapply # Update and reapply local patches
Revisando o changelog antes de atualizar
/gsd-update sempre exibe o diff do changelog entre sua versão instalada e a mais recente antes de solicitar confirmação. Não é necessário acessar o GitHub separadamente. A saída tem a seguinte aparência:
## GSD Update Available
Installed: 1.39.0
Latest: 1.41.0
### What's New
---
[changelog entries for 1.40.0 and 1.41.0]
---
Proceed with update? [Yes, update now / No, cancel]
Se o changelog não puder ser obtido (sem acesso à rede, falha no npm), a atualização ainda prossegue após a confirmação — ela não é bloqueada pela disponibilidade do changelog.
Recuperando personalizações locais
Arquivos que você adicionou dentro de diretórios gerenciados pelo GSD
Se você colocou arquivos personalizados dentro de diretórios que o GSD gerencia (por exemplo, agentes personalizados com o prefixo gsd- ou arquivos extras em commands/gsd/), o instalador os detectará e os copiará para gsd-user-files-backup/ antes de limpar esses diretórios. Após a atualização, restaure-os manualmente a partir desse local de backup.
Arquivos colocados fora de diretórios gerenciados pelo GSD — agentes personalizados sem o prefixo gsd-, comandos personalizados fora de commands/gsd/, seus arquivos CLAUDE.md e hooks personalizados — nunca são tocados pelo instalador.
Arquivos GSD que você modificou diretamente
Se você editou um arquivo instalado pelo GSD (por exemplo, ajustando o prompt de sistema de um agente), o instalador detecta a modificação por meio de uma comparação de hash com seu manifesto, faz backup do arquivo em gsd-local-patches/ e, em seguida, o substitui pela nova versão. Após a atualização:
/gsd-update --reapply
Esse comando mescla suas modificações de gsd-local-patches/ de volta aos arquivos recém-instalados.
Se você pulou o --reapply após uma atualização anterior e deseja aplicar os patches agora:
/gsd-update --reapply
É seguro executar --reapply de forma independente sem acionar um novo download — se você já estiver na versão mais recente, o GSD ignora a etapa de instalação e vai direto para a reaplicação dos patches.
Quando o npm está indisponível
Se npx @opengsd/gsd-core@latest falhar devido a uma falha no npm, restrições de rede ou porque você está trabalhando a partir do repositório de código-fonte, use o procedimento de atualização manual em docs/manual-update.md. Esse documento aborda como fazer pull do commit mais recente, compilar o dist dos hooks e executar node bin/install.js diretamente.
Se você já está na versão mais recente
/gsd-update encerra imediatamente com uma mensagem de confirmação — sem download, sem instalação, sem necessidade de reinicialização.
Migrações do instalador
Cada versão do GSD pode incluir migrações do instalador que renomeiam, movem ou removem arquivos gerenciados. A camada de migração é executada automaticamente antes que o novo payload do pacote seja gravado. Migrações que afetariam arquivos que você modificou solicitam confirmação em vez de agir silenciosamente. Para o design completo e o registro do contrato de configuração de tempo de execução, consulte docs/installer-migrations.md.