Files
bg3-dnd55e-russian-localiza…/AGENTS.md

4.5 KiB

AGENTS.md

Project Overview

This repository contains a standalone Russian localization mod for Baldur's Gate 3:

  • Mod name: DnD 5.5e All-in-One BEYOND Russian Localization
  • Mod folder: Mods/DnD 5.5e AIO Russian
  • Base/original mod dependency: DnD 5.5e All-in-One BEYOND
  • Original mod repository: https://github.com/Yoonmoonsik/dnd55e
  • Original dependency UUID: 897914ef-5c96-053c-44af-0be823f895fe

This repository is for the localization mod only. It must not gain gameplay logic, Script Extender files, or unrelated assets.

Repository Rules

  • Keep the repository source-only.
  • Do not commit .pak artifacts.
  • Do not commit temporary build outputs.
  • Do not add gameplay or script content unrelated to localization/release packaging.
  • Keep the localization folder and metadata consistent with the packaged mod.

Current Important Paths

  • Mod sources: Mods/DnD 5.5e AIO Russian
  • Localization XML: Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml
  • Glossary: glossary/glossary.normalized.json
  • Mod metadata: Mods/DnD 5.5e AIO Russian/meta.lsx
  • CI workflow: .gitea/workflows/build.yml
  • Main build script: scripts/build.ps1

Build And Release Model

The authoritative build logic lives in:

  • scripts/build.ps1

The Gitea workflow should stay thin and only:

  1. prepare the workspace
  2. download Divine
  3. call scripts/build.ps1
  4. publish the release zip for tag builds

Current Build Outputs

The build script produces:

  • build/DnD 5.5e AIO Russian.pak
  • build/info.json
  • build/DnD 5.5e AIO Russian <tag>.zip for tagged builds

The release zip is expected to contain:

  • the built .pak
  • info.json

Packaging Notes

The package must contain only the BG3 mod structure under Mods/....

Verified expected extracted .pak structure:

  • Mods/DnD 5.5e AIO Russian/meta.lsx
  • Mods/DnD 5.5e AIO Russian/Localization/Russian/russian.xml

Do not allow .git, .gitea, scripts, tools, .tools, build, or staging directories into the .pak.

Important Packaging Behavior

There is a runner-specific packaging quirk:

  • Divine can produce a broken 48-byte .pak on the CI runner depending on the source path.
  • Current mitigation is implemented in scripts/build.ps1.
  • The script uses staged sources and fallback packaging attempts.
  • Staging is performed in %TEMP%, not in a dot-prefixed directory inside the repo.

If packaging breaks again, debug the source path and unpack the resulting .pak locally to verify actual contents.

Versioning

Version displayed by BG3ModManager should be derived from the release tag.

Current behavior:

  • scripts/build.ps1 derives Version64 from tags like v0.1.0
  • the computed version is written into:
    • generated info.json
    • staged meta.lsx before packaging

Do not manually hardcode release versions in the committed meta.lsx for each release if CI can derive them from tags.

info.json Expectations

info.json is generated during build and should remain aligned with BG3/BG3ModManager expectations.

Current expected shape:

  • top-level Mods
  • top-level MD5
  • per-mod fields:
    • Author
    • Name
    • Folder
    • Version
    • Description
    • UUID
    • Created
    • Dependencies
    • Group

Current dependency model:

  • Dependencies is an array of dependency UUIDs
  • current dependency UUID:
    • 897914ef-5c96-053c-44af-0be823f895fe

CI Trigger Policy

Current workflow policy:

  • run on tags v*
  • run on manual dispatch
  • do not run on every push to main

Git / Collaboration Preferences

User preference:

  • after making changes, commit and push by default without asking for separate permission
  • for significant changes, propose moving work into a separate branch
  • feature/fix branches must use the prefix feat/ or fix/
  • after finishing work in a feat/ or fix/ branch, propose merging it back into main
  • comments and commit messages should be written in Russian
  • commit messages should describe what was done, not what should be done
  • if changes affect files that go into the final .pak, or change the build/release process, propose releasing the next version
  • if push fails, retry up to two more times with a 3-second pause between attempts

Cleanup Expectations

Temporary directories and debug artifacts should not remain in the repository.

Ignored paths currently include:

  • build/
  • build-stage*
  • .tools/
  • *.pak

If local debugging creates additional temporary folders, remove them when done unless the user explicitly wants to keep them.