Atualização 2.77
10/06/2026
SIN Chain Builder Gate 3: ponte de validação AiScriptLab para o `SinApplyPlan` (read-only) — valida planos, não NOT aplica; SIN fica BLOCKED para escrita.
Ler notas
Maechen conectado à Spira
Beta Update
Notas atuaisNotas antigas da fase beta, preservadas como foram publicadas.
Este é o arquivo das notas beta anteriores. As notas novas estão na página principal de atualizações.
10/06/2026
SIN Chain Builder Gate 3: ponte de validação AiScriptLab para o `SinApplyPlan` (read-only) — valida planos, não NOT aplica; SIN fica BLOCKED para escrita.
Ler notas
10/06/2026
SIN Chain Builder Gate 2: planner dry-run / de preview (`SinApplyPlan`) — preview-only, SIN fica BLOCKED para escrita.
Ler notas
10/06/2026
Blitzball Prize Table vira um TREE: League/Tournament → 1º/2º/3º/Top Scorer → draw → prêmios (+ detecção de draw RE-proven).
Ler notas
10/06/2026
Navegação consolidada: 4 hubs agregadores novos (Battle Commands, Items, Sphere Grid, Text/Reference) + um componente reutilizável `SubTabHub` + sidebar mais enxuta. Segundo pass IA da lane Jarvis-RIN (a pilha de notas do Halyson). Novo componente genérico `SubTabHub_Control` (`Modules/SubTabHub`): uma faixa FFX-styled sub-tab (reutiliza o `tabPill`/mode-pill do Blitzball), construída em código via `AddTab(label, factory, mode, pill, requiresProject)`, lazy-loaded (cada sub-tab constrói seu control na primeira seleção e o cacheia) com um `requiresProject` guard (uma aba project-gated mostra um placeholder em vez de crashar). Em cima dele, 4 hubs (cada um HOSTS os controls existentes, intocados): (1) Battle Commands → `Comandos/Magias de Personagem` (command.bin) · `Monster Commands 1` (monmagic1) · `Monster Commands 2` (monmagic2); (2) Items → `Items` (item.bin) · `Key Items` (important.bin, guardado) · `Shop` (payload de slot guardado) — Shop e Key Items movidos para cá das telas soltas; (3) Sphere Grid → `Explorer (DB)` · `Builder` · `Canvas` (3→1; Explorer precisa de projeto, Builder/Canvas abrem sem um); (4) Text / Reference → `String Explorer` · `Macro Explorer` · `Weapon Names` · `Battle Text` · `Event Explorer` (5→1). Cada sub-tab carrega uma pílula de modo honesta (writer âmbar / read-only teal) com o arquivo/escopo real. Sidebar: Core Authoring caiu de 23 → 15 botões; Auto-Abilities agora fica ao lado de Customizations / Aeons; Monster AI Explorer removido do menu (handler/código preservados — só a opção de nav sumiu). Escopo (RIN): navegação/hosting apenas — os 4 novos handlers `Main_Window` constroem um `SubTabHub` via factories (`CreateKernelCommandsControl(...)` para as tabelas de kernel; `new XxxControl()` para o resto) e os handlers antigos ficam no código (`ShowKernelCommands`/`CreateKernelCommandsControl` intactos = voltar/avançar e nav-restore continuam funcionando). Não toca writer/parser/runtime/save/SIN/provider nem o INTERNALS de módulo de outra lane (MAGIC/Sphere); só edita as linhas de nav `Main_Window` (arquivo compartilhado) + adiciona `Modules/SubTabHub`. Os extras do Battle Commands (busca universal, busca per-tab, multi-edit) são adiados para um follow-up (tocam a lógica command-editor = lane MAGIC). MINOR (4 módulos/abas de navegação NEW + um componente reutilizável novo). Build compila 0 erros / 361 avisos; editor relançado em v2.74.0.0.
Ler notas
10/06/2026
Blitzball Hub: as 5 telas espalhadas viram 1 aba "Blitzball" com sub-tabs + uma pílula de modo honesta + um polimento visual das 5 janelas. Consolidação de navegação + UX (lane Jarvis-RIN). A sidebar tinha 5 botões soltos (`Blitzball Prizes`/`Roster`/`Recruits`/`Prizes (Edit)`/`Prize Table`) com nomes conflitantes (3 diziam "prize"); agora é 1 botão `Blitzball 🏐` abrindo o novo módulo `BlitzballHub_Control` (`Modules/BlitzballHub`) com 5 sub-tabs numa faixa FFX-styled (pílulas `tabPill`, aba ativa com underline teal): Roster · Recruits · Prize Pool · Prize Table · Atlas. Cada sub-tab mostra uma pílula de modo honesta logo abaixo da faixa — `WRITER LAB · <file> · RT0 proven · RT2 pending` (âmbar) para os 4 writers, `READ-ONLY · Spira Data Atlas` (teal) para o Atlas — porque o badge "Mode" externo do hub agora é neutro (`Atlas + Writer Lab`) e não pode mais afirmar um único modo. Abas são lazy-loaded (cada UserControl é construída só na primeira seleção e cacheada) → o hub nunca segura 4 `ByteSnapshotEditorSession`s ao mesmo tempo. Polimento visual das 5 janelas (só apresentação — nenhum writer/parser/binding/DataModel tocado): hero menor via a nova classe `heroGradient` (dedup os 3 gradientes literais copy-pasted), `Save` agora usa `primaryAction` (teal) nos 4 writers (era o botão LEAST-styled de cada tela antes), Roster: as 8 caixas `cardSoft` colapsam em uma tabela (header alinhado, right-aligned a/b/c/tipo), a Prize Table é agrupada num accordion de categoria (5 grupos recolhíveis — League/Tournament Standings, League/Tournament Top Scorer, Roll Threshold/odds — fechados por default, cada um com ponto family-color + contagem de sites; o filtro de texto auto-expands casa grupos) para domar as ~849 opções, mais uma faixa de cor per-row per-family (teal=prize-index, âmbar=odds) + texto condensado + padding normalizado, o Prize Pool agrupa Quantity/Raw Type em `cardSoft` com coluna de Quantity mais justa, o Recruits rebaixa o offset `@0x` para subtítulo e torna o combo de player o elemento primário, o Atlas ganha uma pílula de evidência colorida no grid (proved-candidate=teal / parcial=âmbar / metadata-only=azul / bloqueado=danger) e cores literais (`#9AD7E2`/`#9EB0C2`) trocadas por tokens. Novas classes aditivas em `StudioTheme.axaml` (`tabPill`/`tabPillActive`, `heroGradient`, `pillWriter`/`pillReadonly`, `numField`) — seletores que não existiam → zero regressão em outras telas (I fez NOT tocar o tema global `TabControl`, justamente para não afetar as 8 telas que usam abas cruas). 2 novos conversores presentation-only (`PrizeFamilyBrushConverter`, `EvidenceStatusBrushConverter`). MINOR (módulo de navegação NEW/IA + a primeira faixa sub-tab reutilizável; só o polimento seria PATCH mas ele vem junto com o módulo novo). Não toca writer/parser/runtime/save/SIN/provider do Atlas/outras lanes; os 5 `_Control.axaml.cs` e DataModels ficaram intactos. Build compila 0 erros / 361 avisos (o `.exe` final falhou ao copiar só porque o editor estava aberto — não relacionado ao código).
Ler notas
10/06/2026
Blitzball Prize Table: agora também edita os ODDS (390 thresholds de roll) — "edite tudo". Estende a aba `Blitzball Prize Table 🏐` (`v2.71.0`): além dos 459 sites prize-index, agora edita os 390 immediates de threshold que setam o PROBABILITIES — os bounds `case >= N` / `case <= M` sobre `GetRandomInRange(100)` (bytecode `29 AE <thr> 0E/0F D7/D6` = `DUP·PUSHII·GE/LE·jump`). O bucket A pego por `roll >= lo` e `roll <= hi` tem ~`(hi-lo+1)%` de odds; alargar o bucket = melhores odds para aquele prêmio. Novos `BlitzballPrizeStructure_File.FindRollThresholds`/`SetThresholdAt` (scan escopado a ≤768B de um site prize-index para nunca tocar um switch não relacionado) — usando o writer de 2 bytes SAME (`Event_File.PatchScriptUInt16`). UI unificado: o filtro ganha "Roll Threshold (odds)", cada linha inline-editable (linhas de prêmio mostram a recompensa resolvida ao vivo; linhas de threshold mostram o bound do bucket). O gate `--blitzball-prizestruct-rt0` é estendido e PASSES no `bltz0200.ebp` real: 459 prêmios + 390 thresholds (195 `<=` / 195 `>=` = pareamento perfeito), no-edit byte-identical, uma edição de threshold prize-index AND isolada aos seus 2 bytes (`<=10 → <=50` @0xC108), re-read confirma ambos. MINOR (capacidade NEW: edição de odds). Não toca save/runtime/SIN/outras lanes. Build 0 erros / 361 avisos; `--blitzball-prizestruct-rt0` PASS. Doc: `docs/reverse/FFX_BLITZBALL_PRIZE_STRUCTURE_RE_2026-06-10.md`.
Ler notas
10/06/2026
Blitzball Prize Table: EDIT qual prêmio cada bucket de colocação/aleatório dá (459 immediates em `bltz0200.ebp`) — refuta o label "bloqueado". O explorer read-only (`v2.62.0`) marcou `BlitzballLeague/TournamentPrizeIndex`/`TopScorer` como `blocked` (runtime/save) — conservador demais: ele só via o lado read/display em `bltz0201` (`PrizeIndex + 220 → Treasure Label`). A atribuição vive em `bltz0200.ebp` como 459 immediates constantes no script ATEL: `Set BlitzballPrizeIndex[slot] = <prize-index>` dentro de um switch sobre `GetRandomInRange(100)` (a distribuição aleatória de recompensa). Game-file editável, igual ao recrutamento (só o immediate é 2 bytes, pois passa de 255). Novo módulo/aba `Blitzball Prize Table 🏐` (`Modules/BlitzballPrizeStructEditor`): uma lista filtrável (por variável/recompensa/índice) dos 459 sites com edição inline prize-index + a recompensa resolvida ao vivo (takara `prize+220`, ou MacroDict#8 para >100). Novas primitivas `Event_File.PatchScriptUInt16`/`ReadScriptUInt16` (patch de immediate de 2 bytes length-preserving via `ScriptChunkOverride`) + `FfxLib/Blitzball/BlitzballPrizeStructure_File.cs` (scan/`SetPrizeIndexAt`) + gate `Tools/BlitzballPrizeStructRt0.cs` (`--blitzball-prizestruct-rt0`). PROVEN no `bltz0200.ebp` real (222.464 B): 459 sites (141 League + 188 Tournament + 65 League-TS + 65 Tournament-TS = bate com a contagem do corpus), no-edit byte-identical, uma única edição prize-index isolada aos seus 2 bytes (League 1º `0x0001→0x0099` @0xC0A2), re-read confirma. Achado RE: os ids de var ATEL são per-file (`0x28` em bltz0201 vs `0x30` em bltz0200); os ids de bltz0200 (`0x30`/`0x31`/`0x32`/`0x33`) são provados dos próprios sites switch/Set do arquivo. Honestidade: edições WHICH o índice de prêmio que cada colocação dá (game-file, isolamento RT0 provado, RT2 pendente); a recompensa que cada índice GIVES = takara (a aba `Blitzball Prizes (Edit)`); as odds (roll thresholds) são um conjunto separado de immediates, ainda não exposto. MINOR (módulo NEW + novo writer de 2 bytes). Não toca save/runtime/SIN/outras lanes. Build 0 erros / 361 avisos; `--blitzball-prizestruct-rt0` PASS. Doc: `docs/reverse/FFX_BLITZBALL_PRIZE_STRUCTURE_RE_2026-06-10.md`.
Ler notas
10/06/2026
Blitzball Prizes Editor: UI para editar os 101 prêmios de blitzball no GAME FILE (takara.bin 220..320). Novo módulo/aba `Blitzball Prizes (Edit) 🏐` (`Modules/BlitzballPrizesEditor`) que edita o POOL de prêmio de blitzball (prêmio 0..100 → linha takara 220+k → recompensa; a regra proved-candidate fechada em `v2.62.0`): uma master-detail sobre os 101 prêmios, cada um com dropdown de item (filtro por nome/id) + quantidade + Raw Type/Kind/recompensa resolvida. Ele REUSES o `TreasureEditor_DataModel` provado internamente (dicionário de itens, resolução de nome, `ByteSnapshotEditorSession`, writer full-table) filtrado para as linhas 220..320 → o save é o writer SAME da aba Treasures, escrevendo `takara.bin` e preservando as 498 entradas byte-for-byte exceto o prêmio editado. Registrado em `Main_Window` (nav + `SetModule`). Honestidade: badge "Writable (Lab)" — edita o POOL (qual recompensa cada índice de prêmio dá), não WHICH o prêmio que você ganha por league/tournament/evento (= runtime/save); para prêmios de gear/key-item ou controle mais fino de Kind, use a aba Treasures. Complementa o explorer read-only `Blitzball Prizes 🏐` (`v2.62.0`) com edição real. MINOR (módulo/aba NEW). Reutiliza `TreasureEditor_DataModel`/`Treasure_File`/`Item_Dictionary`; não adiciona um writer novo nem toca o save do jogador/runtime/SIN/outras lanes. Build 0 erros / 361 avisos.
Ler notas