Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
* text=auto eol=lf
*.png binary
*.cs text eol=lf
*.csproj text eol=lf
*.json text eol=lf
*.md text eol=lf
*.py text eol=lf
*.xaml text eol=lf
*.xml text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.ps1 text eol=crlf
*.cmd text eol=crlf
*.7z binary
*.dll binary
*.exe binary
*.ico binary
*.jpg binary
*.png binary
*.pdb binary
*.webp binary
*.zip binary
36 changes: 36 additions & 0 deletions .github/workflows/public-source.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Validação pública

on:
push:
branches:
- main
pull_request:
branches:
- main

permissions:
contents: read

jobs:
validate:
name: Código e repositório
runs-on: windows-latest
timeout-minutes: 15

steps:
- name: Obter o repositório
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Configurar Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.10'

- name: Configurar .NET
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: '8.0.x'

- name: Validar conteúdo, testes e interface
shell: pwsh
run: .\tools\Test-PublicSource.ps1
19 changes: 16 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
# Pacotes e binários de distribuição permanecem fora do repositório.
# Compilação, caches e ambientes locais.
**/bin/
**/obj/
**/__pycache__/
*.pyc
.tools/
.vs/
.idea/

# Pacotes, binários e artefatos de distribuição.
*.7z
*.dll
*.exe
*.pdb
*.zip
dist/
installer/NIKKEPTBR.Installer/Payload/

# Artefatos locais e privados.
# Evidências e dados privados do workspace.
private/
work/

# Arquivos gerados pelo sistema operacional.
# Temporários e arquivos do sistema operacional.
*.log
*.tmp
.DS_Store
Thumbs.db
28 changes: 21 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@

<h1 align="center">GODDESS OF VICTORY: NIKKE PT-BR / PC</h1>

<p align="center">
<a href="https://github.com/kacksdev/nikke-ptbr/actions/workflows/public-source.yml"><img src="https://github.com/kacksdev/nikke-ptbr/actions/workflows/public-source.yml/badge.svg" alt="Validação pública" /></a>
</p>

<p align="center">
<strong>TRADUÇÃO COMUNITÁRIA / BETA / WINDOWS X64</strong>
</p>
Expand Down Expand Up @@ -53,7 +57,8 @@ O projeto é criado, dirigido, mantido e validado por **Kacks**. Não possui afi
| Apontamentos editoriais preservados | **1.689** |
| Pacote transacional | **18/18 verificações** |
| Executável final | **11/11 verificações** |
| Suíte atual do projeto | **116/116 testes** |
| Suíte da versão publicada | **116/116 testes** |
| Testes públicos do instalador | **23/23 aprovados** |

Esses números descrevem cobertura e integridade técnica. Eles não significam que 429.498 frases receberam revisão humana individual. Os apontamentos editoriais permanecem registrados para uma etapa futura, sem invalidar o funcionamento da primeira versão.

Expand Down Expand Up @@ -113,22 +118,31 @@ Nenhum mod pode prometer compatibilidade absoluta com versões futuras ainda des

## 07 / TRADUÇÃO EM JOGO

As imagens abaixo são capturas reais do cliente com a integração PT-BR ativa.
As imagens abaixo são capturas reais do cliente com a integração PT-BR ativa. Elas demonstram lobby, personagem, narrativa, escolhas, campanha, progressão e inventário.

| Lobby e personagem | Diálogo e cena de história |
| --- | --- |
| ![Lobby, navegação e objetivos em português brasileiro](./assets/screenshots/01-lobby-ptbr.webp) | ![Diálogo narrativo em português brasileiro](./assets/screenshots/03-dialogo-narrativo-ptbr.webp) |
| ![Perfil de personagem, atributos e ações em português brasileiro](./assets/screenshots/02-perfil-personagem-ptbr.webp) | ![Cena de história traduzida para português brasileiro](./assets/screenshots/04-cena-historia-ptbr.webp) |

| Identificação de personagem | Diálogo narrativo |
| Escolhas e campanha | Progressão e inventário |
| --- | --- |
| ![Andersen identificado como Vice-Chefe do Comando do Governo Central](./assets/screenshots/01-dialogo-ptbr.png) | ![Diálogo em português brasileiro com Andersen](./assets/screenshots/02-dialogo-ptbr.png) |
| ![Escolhas de diálogo em português brasileiro](./assets/screenshots/05-escolhas-dialogo-ptbr.webp) | ![Progressão e recompensas em português brasileiro](./assets/screenshots/07-progressao-recompensas-ptbr.webp) |
| ![Campanha, formação e preparação de batalha](./assets/screenshots/06-campanha-formacao-ptbr.webp) | ![Inventário e descrição de item em português brasileiro](./assets/screenshots/08-inventario-item-ptbr.webp) |

## 08 / CONTEÚDO PÚBLICO E VERIFICAÇÃO
## 08 / CÓDIGO PÚBLICO E VERIFICAÇÃO

| Área | Conteúdo |
| Área | Conteúdo público |
| --- | --- |
| [`installer`](./installer) | Interface WPF e núcleo transacional usados pelo instalador gráfico. |
| [`tools`](./tools) | Contrato do pacote, bootstrap determinístico e auditoria do repositório. |
| [`tests`](./tests) | Testes automatizados do pacote, das transações e da interface com o núcleo. |
| [`docs`](./docs) | Arquitetura, compatibilidade, instalação, status, autoria e roadmap. |
| [`assets`](./assets) | Identidade visual e capturas aprovadas para a página do projeto. |
| [`release`](./release) | Manifesto público sem textos nem arquivos proprietários do jogo. |
| [`CHANGELOG.md`](./CHANGELOG.md) | Histórico das versões distribuídas. |

Cada Release inclui o instalador, manifesto JSON e arquivo SHA-256. O repositório não publica bancos extraídos, textos integrais, chaves, executáveis ou outros arquivos proprietários do cliente.
Cada Release inclui o instalador, manifesto JSON e arquivo SHA-256. O repositório publica o código autoral necessário para auditar a interface e a segurança transacional, mas não distribui o catálogo, a carga útil, bancos extraídos, textos integrais, chaves, executáveis ou arquivos proprietários do cliente. Consulte [Compilação e limites do código público](./docs/COMPILACAO.md).

## 09 / AUTORIA E TRANSPARÊNCIA

Expand Down
Binary file removed assets/screenshots/01-dialogo-ptbr.png
Binary file not shown.
Binary file added assets/screenshots/01-lobby-ptbr.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/screenshots/02-dialogo-ptbr.png
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/screenshots/04-cena-historia-ptbr.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/AUTORIA-E-PROCESSO.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ A versão `0.1.0 beta` é uma primeira versão funcional de ampla cobertura. A v

## Política de transparência

O repositório publica métricas agregadas, documentação, manifesto e limitações. Bancos extraídos, textos integrais, chaves, dumps e arquivos proprietários do jogo não são distribuídos.
O repositório publica métricas agregadas, documentação, manifesto, limitações e o código autoral necessário para auditar a interface e a segurança transacional do instalador. Bancos extraídos, catálogo, carga útil, textos integrais, chaves, dumps, binários e arquivos proprietários do jogo não são distribuídos.

Cada versão declara o cliente validado e não promete compatibilidade com atualizações futuras desconhecidas.
32 changes: 32 additions & 0 deletions docs/COMPILACAO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Compilação e limites do código público

O repositório disponibiliza o código autoral da interface WPF, do núcleo transacional e das ferramentas que validam o pacote do NIKKE PT-BR. Esse material permite auditar as regras de instalação, verificação, reparo, remoção, recuperação e integridade.

## Conteúdo intencionalmente ausente

O catálogo de tradução, o índice compilado, os binários do runtime, o bootstrap incorporado e qualquer dado obtido do cliente não fazem parte do repositório. Por esse motivo, compilar apenas o código público produz a interface verificável do instalador, mas não uma distribuição funcional do mod.

O instalador pronto e aprovado deve ser obtido exclusivamente na [Release oficial](https://github.com/kacksdev/nikke-ptbr/releases/latest). Não aceite compilações de terceiros como equivalentes à versão publicada.

## Requisitos para validação

- Windows x64;
- Python 3.10 ou posterior;
- .NET SDK 8 ou posterior;
- acesso à internet apenas para restaurar o pacote de referências do .NET na primeira compilação.

## Validação local

Na raiz do repositório, execute:

```powershell
.\tools\Test-PublicSource.ps1
```

O script executa a auditoria do conteúdo público, os testes do núcleo transacional e a compilação determinística da interface WPF sem carga útil. A mesma sequência é executada pelo GitHub Actions.

## Construção oficial

A construção de uma distribuição funcional exige uma carga útil privada previamente aprovada, composta somente pelos três componentes pertencentes ao projeto. O bootstrap é criado com ordem e timestamps fixos, tem cada arquivo registrado por SHA-256 e é incorporado ao instalador somente depois da verificação do contrato.

Esse processo deliberadamente não é transformado em um download alternativo pelo repositório. A separação protege os direitos dos titulares, impede a publicação acidental de dados do jogo e mantém uma única origem oficial para o binário testado.
6 changes: 6 additions & 0 deletions docs/FERRAMENTAS.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,9 @@ O instalador não baixa componentes nem envia telemetria durante a operação.
| OpenAI Codex | Tradução em escala, engenharia, auditoria, testes e documentação sob direção do mantenedor. |
| Git e GitHub | Versionamento, Issues, segurança, manifesto e Releases. |
| GameBanana | Distribuição alternativa e feedback da comunidade. |

## Código público

O repositório público contém a interface WPF do instalador, o núcleo transacional em Python, o empacotador determinístico, testes automatizados e a validação contínua. O catálogo PT-BR, a carga útil compilada, binários e dados obtidos do cliente não são publicados.

Consulte [Compilação e limites do código público](./COMPILACAO.md) para reproduzir a validação disponível sem material privado.
12 changes: 6 additions & 6 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@ O roadmap separa cobertura técnica, revisão editorial, integração, instalaç

## Fase 5: primeira publicação

**Estado: em preparação**
**Estado: concluída em 11 de setembro de 2026**

- documentação pública atualizada;
- manifesto e checksums preparados;
- Release do GitHub preparada em rascunho;
- página do GameBanana mantida privada até revisão final;
- publicação simultânea somente após autorização explícita.
- documentação pública revisada;
- Release `v0.1.0` publicada no GitHub com instalador, manifesto e checksum;
- distribuição alternativa publicada no GameBanana;
- hashes dos downloads públicos conferidos contra os artefatos aprovados;
- código autoral do instalador e do núcleo transacional disponibilizado para auditoria.

## Fase 6: manutenção e maturidade editorial

Expand Down
11 changes: 7 additions & 4 deletions docs/STATUS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Status técnico

Atualizado em 10 de setembro de 2026.
Atualizado em 11 de setembro de 2026.

## Versão preparada
## Versão publicada

| Item | Estado |
| --- | --- |
Expand Down Expand Up @@ -37,7 +37,8 @@ Nenhum arquivo oficial é substituído. O runtime valida o cliente e falha de fo
| --- | --- |
| Pacote transacional | 18/18 |
| Executável final em réplica | 11/11 |
| Suíte atual | 116/116 |
| Suíte da versão publicada | 116/116 |
| Testes públicos do instalador | 23/23 |
| Construções finais consecutivas | Idênticas byte a byte |
| Instalação real | Aprovada |
| Inicialização pelo launcher | Aprovada |
Expand All @@ -62,4 +63,6 @@ A carga útil exata da versão final foi aceita no cliente real. Depois dessa pr

## Publicação

Os artefatos preparados para a versão incluem instalador, SHA-256, manifesto e documentação. A página pública deve sempre indicar o cliente validado e separar cobertura técnica de revisão editorial.
A versão `0.1.0` está disponível na [Release oficial do GitHub](https://github.com/kacksdev/nikke-ptbr/releases/tag/v0.1.0) e na [página oficial do GameBanana](https://gamebanana.com/mods/715729). Os dois downloads públicos foram conferidos por SHA-256 contra os artefatos aprovados.

O código autoral da interface do instalador, do núcleo transacional e dos respectivos testes está publicado para auditoria. Catálogo, carga útil, binários compilados e materiais proprietários do cliente permanecem fora do repositório.
56 changes: 56 additions & 0 deletions installer/NIKKEPTBR.Installer/App.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<Application x:Class="NIKKEPTBR.Installer.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ShutdownMode="OnExplicitShutdown">
<Application.Resources>
<SolidColorBrush x:Key="Ink" Color="#F3F3F3" />
<SolidColorBrush x:Key="MutedInk" Color="#B8BDC4" />
<SolidColorBrush x:Key="Panel" Color="#E90C0E11" />

<Style TargetType="Button">
<Setter Property="Foreground" Value="{StaticResource Ink}" />
<Setter Property="Background" Value="#DB20242A" />
<Setter Property="BorderBrush" Value="#82FFFFFF" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="18,10" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Border"
CornerRadius="3"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="{TemplateBinding Padding}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="#F13A3F46" />
<Setter TargetName="Border" Property="BorderBrush" Value="#FFFFFFFF" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Border" Property="Background" Value="#FF090B0D" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.40" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Style TargetType="TextBox">
<Setter Property="Foreground" Value="{StaticResource Ink}" />
<Setter Property="Background" Value="#DB0B0D10" />
<Setter Property="BorderBrush" Value="#65FFFFFF" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="11,8" />
<Setter Property="CaretBrush" Value="White" />
</Style>
</Application.Resources>
</Application>
Loading