Todas as mudanças notáveis neste projeto serão documentadas aqui.
O formato é baseado em Keep a Changelog, e este projeto adere ao Semantic Versioning.
Podem existir falhas ou itens não declarados, causados por falha humana ou por IA, caso encontre por favor relate para ajudar a manter a consistência dos dados.
- Templates vazios com
platform: "auto"— o picker de novo script mostrava lista vazia em instalações padrão;autoagora é tratado como neutro e exibe todos os templates - Watcher LSP incompleto —
workspace/didChangeWatchedFilessó observava*.pwne*.inc; expandido para*.{pwn,inc,p,pawn}para cobrir todas as extensões registradas na linguagem
analysis.suppressDiagnosticsInInc— nova chave de configuração; suprime todos os diagnósticos dentro de arquivos.incquandotruelocale— nova chave de configuração; define o idioma das mensagens de diagnóstico do motor LSP (""= automático,"pt-BR","en")analysis.sdk.platform: "auto"— novo valor para detecção automática: buscaopen.mp.incemqawno/include/e nosincludePaths; assume SA-MP se não encontrar- Painel de configurações gráfico (
pawnpro.openSettings) — interface WebView substitui o blococontributes.configurationnativo; edição visual de todas as chaves sem tocar em JSON - Suporte a
.pe.pawn— extensões adicionadas ao contributes da linguagem Pawn; IntelliSense e diagnósticos passam a cobrir esses arquivos src/editor/— nova pasta da camada de adaptação (renomeada desrc/vscode/); isolamento completo entre lógica pura (core/) e APIs do editor
analysis.sdk.platform— default alterado de"omp"para"auto"maindo pacote — agora aponta para./out/editor/extension.js(reflete a renomeação da pasta)SdkPlatform— tipo expandido:'auto' | 'omp' | 'samp' | 'none'PawnProConfigManager— merge simplificado: camadaexternalDefaults(settings do VS Code) removida; merge direto de DEFAULTS → global → projetoAnalysisConfig— recebesuppressDiagnosticsInIncelocale- Tipos auxiliares removidos de
src/core/types.ts—HoverData,HoverSection,HoverParams,DiagnosticData(responsabilidade transferida integralmente ao motor Rust)
contributes.configuration— bloco inteiro removido dopackage.json; as chavespawnpro.*nativas do VS Code não existem mais; todas as configurações vivem em.pawnpro/config.json/~/.pawnpro/config.jsonPawnProConfigManager.setExternalDefaults— método removido (não há mais sync comvscode.workspace.getConfiguration)PawnProConfigManager.hasProjectConfig/hasGlobalConfig— métodos auxiliares removidossrc/vscode/— pasta inteiramente deletada; conteúdo migrado e refatorado emsrc/editor/src/core/utils.ts— removido; funções redistribuídas para os módulos que as usam
- Podem haver alguns dados que não foram mencionados ou que foram esquecidos de serem adicionados a este arquivo, não intencionalmente mas sim pelo fator humano.
- Configurações visíveis na UI do VS Code — todas as opções da extensão agora aparecem na página de configurações do VS Code com descrições em português e inglês; alterações feitas pela UI são salvas automaticamente em
~/.pawnpro/config.json
- Compilador não encontrava os includes — o compilador não recebia os caminhos de include corretamente, causando erros de
#includenão encontrado mesmo com os arquivos presentes no projeto
- Opção "Container separado" — o painel PawnPro agora é sempre exibido na Activity Bar
pawnpro-engine— servidor LSP nativo em Rust integrado via stdin/stdout; detectado automaticamente emengines/ou no repositório irmão../pawnpro-engine/target/; fallback transparente para TypeScript se ausente- Completions —
native,stock,public,forward,static,#definee variáveis globais de todos os includes transitivos; snippets de parâmetros; itens depreciados marcados visualmente - Hover — assinatura + comentário de documentação; em
#includeexibe o caminho resolvido e doc do topo do arquivo - Signature Help — parâmetro ativo destacado ao digitar
(e, - CodeLens — contagem de referências clicável para todas as funções
- References —
textDocument/references(Shift+F12) - Semantic Tokens — coloração semântica de funções e macros com suporte a chamadas multiline
editor.semanticTokenColorCustomizations— regras semânticas aplicadas automaticamente ao ativar um esquema de sintaxe, garantindo coloração correta independente do tema ativo- Diagnósticos PP0001–PP0013 — cobertura completa: includes não encontrados, erros estruturais (
native/forward/public/stockmalformados), código morto (variáveis, stocks, defines, includes), depreciação (@DEPRECATED), parâmetros não usados, funções não declaradas e#tryincludenão resolvido
server.type— nova chave de configuração:"auto"|"samp"|"omp"; determina arquivo de config (server.cfgvsconfig.json), arquivo de log e modo RCONloadOmpConfig— lêconfig.jsondo open.mp para extrairrcon.password,network.portenetwork.bindloadServerConfig— loader unificado que despacha paraloadSampConfigouloadOmpConfigconformeserver.type; no modoautodetecta pelo arquivo presenteresolveLogPath— detecta automaticamente o caminho do log: lêlogging.filedoconfig.jsonpara open.mp, usaserver_log.txtpara SA-MP- Detecção do executável —
omp-server/omp-server.exeadicionados à lista de candidatos; diretórioopen.mp/adicionado às pastas buscadas - Detecção do compilador em
qawno/— diretórioqawnoadicionado à busca automática dopawncc qawno/includeadicionado aosincludePathspadrão detectados automaticamente
analysis.warnUnusedInInceanalysis.sdk(platform,filePath) adicionados aos defaults e aopackage.json(contributes.configuration)pawnpro.server.typeexposto emcontributes.configurationcom enumauto/samp/omppawnpro.includePaths,pawnpro.compiler.path,pawnpro.compiler.args,pawnpro.analysis.warnUnusedInInc,pawnpro.analysis.sdk.platform,pawnpro.analysis.sdk.filePathadicionados acontributes.configurationsetExternalDefaultsemPawnProConfigManager— injeta defaults do VS Code com prioridade abaixo dos arquivos.pawnpro/; atualizado em tempo real viaonDidChangeConfiguration- Migração —
analysis.sdk.platformeanalysis.sdk.filePathincluídos na migração automática de settings legados do VS Code
- Status bar — novo item
PawnProna barra inferior com menu rápido: reiniciar motor, abrir.pawnpro/config.json, controles do servidor (Start/Stop/Restart/Editar configuração) e seção Novo script (Gamemode / Filterscript / Include) - "Editar configuração do servidor" — detecta automaticamente
server.cfg(SA-MP) ouconfig.json(open.mp) com base emserver.type
- Template único (
BLANK_TEMPLATEhardcoded) substituído por arquivos separados por plataforma:gamemode.omp.pwn,gamemode.samp.pwn,filterscript.omp.pwn,filterscript.samp.pwn,include.omp.inc pawnpro.newScriptfiltrado poranalysis.sdk.platform; aceita parâmetrokind(gamemode|filterscript|include) e abre diretamente se houver uma única variante para a plataforma
- Snippets —
snippets/pawn.jsoncom estruturas de controle, funções, variáveis, includes, callbacks SA-MP/open.mp e utilitários (CMD,SetTimer,fmsg, etc.); registrado emcontributes.snippets semanticTokenScopes— mapeamento defunction→support.function.pawnregistrado nopackage.json- Script
download-engine.js— baixa binários do motor do GitHub Releases; integrado aobuild.sh scripts/bundle.mjs— bundle via esbuild; dependências (iconv-lite,safer-buffer,vscode-nls) embutidas no bundlepawnpro.clearEngineCache— novo comando que reinicia o cliente LSP; substituiu o comando de cache statistics que não tinha handlerpawnpro.findReferences— comando interno registrado emextension.ts; delega paravscode.executeReferenceProvider+editor.action.showReferences; aceita URI + posição como argumentos (usado pelo CodeLens do motor)platformsnopackage.json— extensão declarada para plataformas específicas:linux-x64,linux-arm64,win32-x64,darwin-x64,darwin-arm64engineVersion,engineRepositoryeauthoradicionados aopackage.jsondocs/— documentação detalhada (features, commands, configuration, snippets) excluída do.vsixCONTRIBUTING.md,CODE_OF_CONDUCT.md,SUPPORT.md,CLAUDE.md,.github/copilot-instructions.mdadicionados
- Todos os títulos de comando no
package.json— migrados de strings hardcoded para chaves NLS (%command.*%) - Mensagens de tema em
themes.ts—schemeNotFound,schemePicker,schemeApplied,syntaxRestoredmigradas paranls.tsem vez de strings hardcoded - Todas as descrições de
contributes.configuration— migradas para chaves NLS - RCON —
server.tsusaloadServerConfig(unificado) em vez deloadSampConfigdiretamente, respeitandoserver.type cleanupThemeCustomizations— agora limpa tambémeditor.semanticTokenColorCustomizationsao desativar
- Módulos removidos de
src/core/—fileCache.ts,apiIndex.ts,semanticAnalyzer.ts,unusedAnalyzer.ts,hover.ts(lógica incorporada no motor Rust) - Módulos removidos de
src/vscode/—codelens.ts,completion.ts,diagnostics.ts,hover.ts,intellisense.ts,signatureHelp.ts(substituídos pelo motor Rust) src/core/includes.ts— funçõesanalyzeIncludes,gatherIncludedFiles,isOffsetInComment,IncludeMsgBuildere re-exports de helpers de string removidos (não mais necessários);qawno/includeadicionado aos defaults;INCLUDE_RX_GLOBALremovidasrc/core/compiler.ts— diretórioqawno/adicionado à busca automática dopawnccsrc/core/types.ts— novos tipos exportados:ServerType,SdkPlatform,AnalysisSdkConfig,AnalysisConfig;TokenColorSchemerecebe camposemanticRules;PawnProConfigrecebe campoanalysis;ServerConfigrecebe campotypenls.ts— gruposdiagnostics,hover,codelens,debugremovidos; adicionadosthemes,extension,statusBar;buildIncludeErrorMessageconvertida de chamadas NLS para strings inline (motor Rust assume a responsabilidade de emitir diagnósticos de include);general.cachePrewarmedegeneral.cacheStatsremovidasconfigBridge.ts— FileWatcher de.pwn/.ince listeners deonDidChangeTextDocument/onDidCloseTextDocumentpara cache removidos; adicionadoonDidChangeConfigurationpropagando settings ao motor viasendConfigurationToEngine;readVsCodeSettings()extrai settings relevantes do VS Code parasetExternalDefaults; parâmetro_projectRootremovido demigrateFromVsCodeSettingsserver.logPath— default alterado de${workspaceFolder}/server_log.txtpara""(detecção automática)LOG_POLL_INTERVAL_MS— constante nomeada substitui magic number100noLogTailerisSafeKeyemconfig.ts— verificação de prototype pollution adicionada tanto nodeepMergequanto nosetKey(seção do config)repack-vsix.js— reescrito para injetar binários do motor (engines/) no VSIX; injeção manual deiconv-lite/safer-buffer/vscode-nlsremovida (agora embutidos pelo esbuild)vscode:prepublish— executabundle(esbuild) em vez detsc; scriptscompile,watch,package:full,package:preatualizados; adicionadosbundleebundle:dev- Versão mínima do VS Code —
^1.106.0 - Gramática
pawn.tmLanguage.json— regrabuiltinscom funções SA-MP hardcoded removida; adicionada regranamespace_callpara chamadas com:: - Temas de sintaxe — quatro arquivos reformatados com escopos expandidos e estrutura JSON consistente
- Workflow
publish.yml— reescrito com matrix de 5 plataformas (linux-x64,linux-arm64,win32-x64,darwin-x64,darwin-arm64); cada job baixa o binário correto viadownload-engine.js --artifacte empacota comvsce package --target; publicação de plataformas específicas (platform-specific extensions) no Marketplace - Demais workflows CI — todos com
permissions: {}no topo e permissões mínimas por job;stalemigrado parav9;codeql.ymlsimplificado (matrix removida, job único TypeScript) scripts/build.sh—rm -rf out/substituído porrm -f *.vsix; adicionado passo dedownload-engine.js; type-check viatsc --noEmitantes do bundle; passos separados: download → type-check → bundle → VSIXtsconfig.json— adicionado"types": ["node"]para resolução de tipos Node sem imports implícitos.vscodeignore— adicionadossrc/**,docs/**,scripts/,.github/**,node_modules/**,.gitignore,.claude,out/**/*.map.gitignore— adicionadoengines/(binários do motor nunca comitados)
pawnpro.cacheStats— removido dopackage.jsone NLS; substituído porpawnpro.clearEngineCacheROADMAP.md— removido; itens documentados emdocs/packagedDependencies/bundledDependencies/bundleDependencies— blocos removidos dopackage.json(não mais necessários com esbuild)
- Adicionadas:
vscode-languageclient ^9.0.1,esbuild ^0.28.0(devDep),jszip ^3.10.1(devDep pararepack-vsix.js) - Atualizadas:
typescript ^5.9.3→^6.0.3,@types/node ^25.3.5→^25.6.0,@types/vscode ^1.106.1→1.106.0(pinada),@vscode/vsce ^3.7.1→^3.9.1 - Removidas do VSIX:
iconv-lite,safer-buffer,vscode-nlsdeixaram de ser injetadas manualmente (embutidas pelo esbuild)
- Podem haver alguns dados que não foram mencionados ou que foram esquecidos de serem adicionados a este arquivo, não intencionalmente mas sim pelo fator humano.