Atualização 2.233
17/08/2026
v2.233.0.0BETAMINOR
Lulu16 de ago. de 2026
Assistente BYOK AI: painel AiAssistant conectando o contrato LLM (P2B) ao UI + migração i18n completa + wiring de nav
- Novo módulo
FFXProjectEditor/Modules/AiAssistant/(5 arquivos): painel BYOK consumindo a camadaCore/LLM/existente (contrato P2B:LlmHttpAdapter+LlmGuard+LlmCredential+ProposalToPlanMapper).AiAssistantSession.cs(chave só em memória, Dispose zera, recusa host remoto sem confirmação humana);AiAssistant_DataModel.cs(ObservableObject, Connect/Send/Clear, auditoriaLlmHistoryEntrysem payload, ApiKeyText zerado via TakeApiKey);AiAssistant_Control.axaml(TextBox com PasswordChar, binding two-way, IRestorableModule);AiAssistantLabels.cs(forward para Strings, helper RejectReason). Segurança: BYOK in-memory + opt-in + endpoint de loopback livre, remoto exige checkbox; sem escritas de arquivo. - Migração i18n completa: 23 labels migrados de AiAssistantLabels (EN cru) →
Strings.resx(EN) +Strings.pt.resx(PT-BR) +Strings.cs(propsAiAssistant_*). Gate:StringsIntegrityTests3/3 PASS. - Catálogo/nav: entrada
ai-assistantnoModuleRegistry(oficial, cluster Live, RequiresProject: false) + strings do módulo. O handlerMenuItem_AiAssistant+ casoDispatchnoMain_Windowestão prontos na worktree mas fora deste commit:Main_Window.axaml.csestá intercalado com ~33 mudanças i18n não commitadas de outra lane no mesmo arquivo — commit coordenado quando o baseline i18n chegar. - Doc de teoria absorvido:
docs/ai/BOT_MAECHEN_EDITOR_ABSORBED_2026-08-16.md(verificado contra código real do Core/LLM). - Gates: build 0 erros;
StringsIntegrityTests3/3 PASS. Suíte: 424/432 (8 falhas preexistentes: 7 mojibake PtStrings + 1 MagicDll — nenhuma desta lane). Honestidade: o adapter espera endpoint PatchProposal JSON (chat cru API → MalformedPayload); ponta a ponta precisa de gateway/template da expansão de receita (próximo MINOR).
v2.232.1.0
v2.233.1.0BETAPATCH
Seymour17 de ago. de 2026
Aurora EditViewer restaurada: bug actor-overlay corrigido (mis-nested installKeyboard quebrava o boot → loadAnchors nunca rodava) + marcadores visíveis
- Causa raiz (via console DevTools do Chrome):
installKeyboardestava aninhado dentro detogglePicknoRuntimeTools/FFXMapViewerWeb/aurora-overlay.js— nunca exposto no escopo global, entãobuildPanel()lançavaReferenceError: installKeyboard is not defined→ interrompiaboot()→loadAnchorsnunca rodava → o EditViewer abria o mapa sem marcadores de âncora nenhum (sem esferas de monstro/party/câmera nem pins; edição UI inerte). Corrigido movendoinstallKeyboardpara o escopo global (comentário datado no código). - Visibilidade de actor: marcadores de âncora eram efetivamente invisíveis (esfera de raio-
0.7num mapa de ~80 unidades com câmera a distância ~88 ≈ 1px). Elevado para4.0+ adicionado um pin de cone vertical por âncora (cor de papel) para os actors ficarem inconfundíveis no canvas; o pin segue a esfera no drag (3 pontos). - Validação dupla (Chrome via DevTools + WebView2 interno): o painel agora mostra "8 âncora(s) · 5 monstro(s) · battle bika02_00"; Luna confirmou marcadores dourados/laranja (monstros) + azul/ciano (party) no canvas nos dois alvos.
- Limite honesto (frente lane-HD separada): os modelos HD de monstro (
/work/phyre_chr_anim/models/mNNN/mNNN_animated.gltf) não existem no disco →loadMonstercai no degradado esfera laranja com motivo (404). O pipelinephyre_chr_animcontinua vazio (documentado como quebrado noModuleCatalogPolicy). Os marcadores servem como placeholder editável até a lane HD reexportar os glTFs. - Gates:
node --checkOK; editor build ok. Sem teste RT2 (o bug era puramente na interface de overlay web). ### MINOR
v2.233.0.0