Compatibilidade de Plugins OxideTerm
Leia a implementação relevante antes de atribuir um limite de compatibilidade:
crates/oxideterm-plugin-manifest/src/registry.rs: dados de lançamento e correção do catálogo.crates/oxideterm-plugin-registry/src/registry.rsecompatibility.rs: seleção de versão, requisitos em cache e descoberta na inicialização.crates/oxideterm-plugin-registry/src/install.rs: verificações de instalação de pacotes.crates/oxideterm-gpui-app/src/workspace/plugin_entity.rs: atualização, controle de ativação e propriedade de tarefas.- A API específica do host, runtime ou carregador de gramática afetado pela alteração.
crates/oxideterm-editor-syntax/src/plugin.rsecrates/oxideterm-gpui-editor/src/languages.rspara carregamento preguiçoso de gramática e atualização de documentos abertos.
Contrato do lado do host
Selecione a versão mais alta suportada tanto pelo host quanto pela plataforma. Ofereça uma atualização apenas quando essa versão compatível for mais nova que o plugin instalado; explique separadamente uma versão incompatível mais alta. Nunca faça downgrade silencioso.
Verifique novamente os plugins instalados na inicialização após atualizações e downgrades do aplicativo. Aplique a correção em cache mais recente para o ID e versão exatos do plugin, sem reescrever arquivos do pacote. Mantenha arquivos, configurações e preferências de ativação enquanto bloqueia a ativação incompatível. Mantenha a atualização de inicialização limitada e de propriedade da entidade do plugin; inicialização offline usa o último cache válido.
O cliente oficial usa o catálogo de resumo v2 e carrega históricos vinculados a checksums para plugins instalados e a página atual do marketplace. Um histórico deve corresponder à sua identidade de resumo, versão mais recente, faixa de host efetiva, tamanho e SHA-256. Preserve o endpoint v1 congelado, o snapshot histórico exato, os ativos referenciados e o leitor de cache v1. Todos os plugins, lançamentos e correções subsequentes pertencem apenas ao v2; clientes existentes devem atualizar o host para recebê-los. Novos clientes buscam apenas v2; em caso de falha, mantenha o último cache válido em vez de substituí-lo pelo v1 congelado. Publique v2 antes de enviar um host que o exija. Salve históricos brutos verificados antes de substituir o cache raiz compacto; a inicialização e a instalação manual devem resolver correções para a versão exata instalada. Cancele solicitações de página obsoletas e descarte resultados de outra página ou snapshot do catálogo. A manutenção e geração do catálogo pertencem aos registros de origem por plugin do marketplace e à automação de lançamento.
Para extração de linguagem, verifique o carregador de gramática, a ABI Tree-sitter e o comportamento real de clientes antigos. Uma faixa de host não pode substituir essas verificações. Não atribua um limite superior a plugins antigos apenas porque uma nova versão de plugin ou aplicativo foi lançada.
A partir de 2.2.2, manifestos de linguagem podem declarar displayName, grammarName, extensions
e fileNames literais. Novos IDs são dinâmicos; não estenda o enum legado ou
tabelas de associação de arquivos para eles. Pacotes de linguagem publicados mantêm suas associações
de fallback. Declarações de catálogo são retiradas de arquivos verificados e vinculadas a
históricos v2, com manifestos instalados precedendo dicas de catálogo compatíveis. Novas
declarações exigem >=2.2.2; correções de consulta comuns para pacotes legados mantêm sua
faixa de host existente. Mantenha a redetecção de documentos abertos, o roteamento de plugins ausentes e as
dicas de catálogo offline consistentes em IDE, visualizações locais e SFTP.
A partir de 2.2.2, um pacote de linguagem pode agrupar gramáticas incorporadas em injections.
Verifique cada parser, consulta de destaque e seletor pai por seu checksum declarado;
seletores capturam injection.content. O documento é dono de cada parser incorporado,
sua cancelamento e descarte. Mantenha as coordenadas de bytes originais entre edições e
restrinja os destaques filhos às regiões incluídas, substituindo as capturas pai lá
para que capturas de template não possam ocultar tokens de script. Gramáticas agrupadas são privadas ao
seu pacote pai e não registram associações de arquivos separadas.
Para extração de agente ACP, mantenha o cliente ACP, decisões de permissão e propriedade
de processo no host. Manifestos acp publicados permanecem suportados e são normalizados
no plano auxiliar comum. Novos manifestos auxiliares declaram recurso acp, protocolo
acp e versão 1. Agentes falam ACP stdio diretamente; não roteie seu tráfego
através do supervisor de plugin comum. Verifique registry.acp_agents, workspace/acp_plugins.rs e
workspace/acp_workspace.rs para ativação na inicialização, resolução de lançamento e limpeza.
Hosts até 2.2.1 não podem carregar este runtime. Preserve identidades de agente existentes
e opções do usuário ao migrar adaptadores agrupados para bindings de plugin.
Manifestos Mosh publicados usam terminal-transport; novos manifestos auxiliares declaram
recurso terminal-transport, protocolo oxideterm-mosh e versão 1. Mantenha o bootstrap SSH,
renderização de terminal e previsão local no host; UDP, SSP e
criptografia pertencem ao plugin do motor. Hosts até 2.2.1 não podem carregá-lo.
Verifique oxideterm-mosh e seu MoshPluginSessions de propriedade do workspace para
ativação de lançamento e retirada de processo antes da substituição do pacote. Ambas as direções
de pipe devem permanecer independentes sob contrapressão de saída. RDP, VNC e Mosh compartilham
a categoria de catálogo remote-connections.
Publicação coordenada
Manifestos de desktop remoto publicados usam remote-desktop; novos manifestos auxiliares
declaram recurso remote-desktop, protocolo oxideterm-remote-desktop e versão 1.
Ambos são normalizados no plano auxiliar comum, fora do supervisor de plugin comum.
Mantenha o visualizador nativo, entrada, credenciais e propriedade do túnel SSH no host.
Exija um contributes.remoteDesktop.protocolVersion suportado e resolva apenas
executáveis instalados confiáveis, habilitados e compatíveis. Pare e finalize processos auxiliares
antes de atualizar ou remover seus arquivos; desative a reconexão automática até que um
provedor compatível esteja disponível. Mantenha o formato stdio binário existente inalterado
ao extrair auxiliares. Hosts até 2.2.1 não podem carregar este runtime.
Manifestos helper genéricos exigem hosts a partir de 2.2.2. Preserve os tipos
de manifesto publicados, limites de aprovação de capacidade e payloads de protocolo ao normalizá-los.
A unificação do plano de runtime não transfere a propriedade do filho para o supervisor de plugin.
FIDO declara recurso ssh-authentication, protocolo oxideterm-security-key e
versão 1; sua tarefa de autenticação é dona do cancelamento e finalização.
Criação de plugin, registros de lançamento e correções de compatibilidade pertencem ao
repositório AnalyseDeCircuit/oxideterm-plugins. Localize seu checkout real pela
identidade do repositório, em vez de assumir um nome de diretório local. Leia seu
.agents/skills/oxideterm-plugin-release/SKILL.md e use seus scripts de lançamento.
A skill canônica também está disponível em:
Use um checkout local quando essa skill ou seus scripts ainda não estiverem publicados. Não invente um processo de publicação alternativo quando a ferramenta necessária estiver ausente. Alterações na implementação do host por si só não autorizam a publicação de plugins.
Para comportamento alterado, use os testes existentes de registro e entidade de plugin no limite que o possui. Cubra os riscos afetados: seleção de versão compatível, rejeição de upgrade/downgrade, recuperação de correção ou inicialização offline. Não execute novamente suítes não relacionadas apenas porque um arquivo de compatibilidade de plugin foi alterado.