No description
Find a file
Eduardo Dantas 1789d5f97f
docs(agents): route build validation workflow (#4089)
Keep Canary's active repository instructions concise while moving the complete local build-validation workflow into dedicated documentation.

Main changes:
- Reduce detailed build procedures in AGENTS.md and route them through docs/building/local-validation.md.
- Keep repository-wide build invariants in the always-loaded instruction layer.
- Require maintained build entry points to stay synchronized when C++ source or header files are added, removed, or renamed.
- Keep the relevant CMakeLists.txt, vcproj/canary.vcxproj, and test CMakeLists.txt registration requirements explicit.
- Clarify that local builds remain opt-in unless explicitly requested or authorized at the completion point of a larger task.

Local validation documentation:
- Add docs/building/local-validation.md.
- Document the supported Windows CMake and Visual Studio validation workflow.
- Document Visual Studio Developer Command Prompt and Developer PowerShell environment requirements.
- Document project-managed VCPKG_ROOT verification before configuring or building.
- Document the preferred windows-release preset workflow.
- Document how to inspect and reuse existing CMake preset caches.
- Document targeted recovery from incompatible or corrupted CMake/Ninja cache state.
- Avoid broad cache deletion or creating ad-hoc build directories as a recovery path.
- Document maintained Visual Studio solution and generated build entry-point checks.

MSVC Ninja dependency tracking:
- Document that Ninja requires matching raw cl.exe /showIncludes output to populate .ninja_deps correctly.
- Require configure and build steps to use a consistent environment and code page.
- Keep compiler launchers disabled for MSVC Ninja validation.
- Document diagnosis using rules.ninja, msvc_deps_prefix, raw /showIncludes output, and ninja -t deps.
- Clarify that ninja -t recompact cannot recreate missing dependency records.
- Document recovery for malformed or empty .ninja_deps without broad-cleaning build state.

Instruction budget:
- Keep detailed workflows out of the always-loaded AGENTS.md when they can be routed to versioned documentation.
- Preserve headroom for global and narrower scoped instructions.
- Prefer removing duplicated guidance before increasing instruction byte limits.

Validation:
- Audited the effective global and repository instruction chain at 18,449 bytes.
- Verified it remains below the 24 KiB maintenance target and default Codex instruction cap.
- Verified the routed local-validation documentation path exists.
- Reviewed the complete committed diff.
- Ran Git whitespace validation successfully.
- No build was run because this is a documentation-only change and no build was requested.

This keeps the active instruction layer smaller while preserving the full Canary build-validation, cache-recovery, and MSVC Ninja dependency-tracking workflow in a dedicated maintained document.
2026-08-15 00:56:10 -03:00
.github ci(vcpkg): keep baseline updates synchronized and auto-mergeable (#4085) 2026-08-14 12:56:43 -03:00
cmake build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
data feat(pvp): add Expert PvP world type and combat rules (#4033) 2026-08-10 18:42:55 -03:00
data-canary feat: protocol 15.11 (weapon proficiency and new imbuement scroll) (#3845) 2026-05-21 14:34:39 -03:00
data-otservbr-global fix: Henricus stays silent in four Inquisition states and misleads in two more (#4084) 2026-08-14 20:19:46 -03:00
docker build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
docs docs(agents): route build validation workflow (#4089) 2026-08-15 00:56:10 -03:00
metrics feat: 13.32 protocol and features (#2110) 2024-01-21 23:11:37 +00:00
src fix: guard scheduled callbacks against stale spawn lifetime (#4080) 2026-08-14 07:53:12 -03:00
tests fix: guard scheduled callbacks against stale spawn lifetime (#4080) 2026-08-14 07:53:12 -03:00
tools build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
vcpkg-registry build: pin vcpkg registry and developer tools (#4052) 2026-08-05 09:07:02 -03:00
vcproj build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
.clang-format fix: clang format (#2710) 2024-06-24 14:23:51 -03:00
.cmake-format chore: add cmake-format and cmake-lint (#3672) 2025-09-04 08:37:29 -03:00
.cmake-lint chore: add cmake-format and cmake-lint (#3672) 2025-09-04 08:37:29 -03:00
.dockerignore build(docker): add Canary quickstart with MyAAC and login-server (#3973) 2026-05-25 01:18:52 -03:00
.editorconfig feat: new beds behavior (#1291) 2023-07-28 02:55:07 -03:00
.gitattributes build(docker): add Canary quickstart with MyAAC and login-server (#3973) 2026-05-25 01:18:52 -03:00
.gitignore build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
.luarc.json feat: add Lua API documentation and doc generator (#3771) 2026-05-25 14:39:39 -03:00
.mise.toml build: pin vcpkg registry and developer tools (#4052) 2026-08-05 09:07:02 -03:00
.reviewdog.yml ci/cd: filter reviewdog to added lines; update ignores (#3846) 2026-02-13 00:52:30 -03:00
.sonarcloud.properties feat: add Lua API documentation and doc generator (#3771) 2026-05-25 14:39:39 -03:00
.yamllint.yaml Improve GHA (#31) 2021-05-21 13:04:57 -03:00
AGENTS.md docs(agents): route build validation workflow (#4089) 2026-08-15 00:56:10 -03:00
apply.patch Add apply.patch with git apply instructions 2025-08-28 14:38:53 -03:00
canary.rc Fix GHA builds (#2) 2021-04-28 18:18:18 -03:00
CMakeLists.txt fix(build): preserve msvc ninja dependency tracking (#4088) 2026-08-14 18:19:56 -03:00
CMakePresets.json build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
CODE_OF_CONDUCT.md Initial commit 2021-04-26 21:04:01 -03:00
config.lua.dist feat(pvp): add Expert PvP world type and combat rules (#4033) 2026-08-10 18:42:55 -03:00
CONTRIBUTING.md docs: add CONTRIBUTING.md Guidelines for Canary Project (#3041) 2024-10-31 18:20:01 -03:00
gdb_debug [Enhancement] added scripts to run server with gdb (linux) (#458) 2022-12-08 02:25:02 -03:00
GitVersion.yml Add project automatic version (#29) 2021-06-11 09:50:38 -03:00
Jenkinsfile Initial commit 2021-04-26 21:04:01 -03:00
key.pem Initial commit 2021-04-26 21:04:01 -03:00
LICENSE Initial commit 2021-04-26 21:04:01 -03:00
package.json Updated to version v1.4.1 2022-07-20 22:55:59 +00:00
README.md build: share content-addressed vcpkg dependencies across CMake and MSBuild (#4079) 2026-08-13 18:50:05 -03:00
recompile.sh fix(recompile): back up the active runtime executable (#4026) 2026-07-06 20:31:54 -03:00
schema.sql feat(pvp): add Expert PvP world type and combat rules (#4033) 2026-08-10 18:42:55 -03:00
start.sh fix: docker ubuntu package and start.sh permission (#2681) 2024-06-11 10:05:04 -03:00
start_gdb.sh [Enhancement] added scripts to run server with gdb (linux) (#458) 2022-12-08 02:25:02 -03:00
vcpkg-configuration.json chore: Update vcpkg baseline to 2026.07.29 (#4055) 2026-08-14 14:31:22 -03:00
vcpkg.json chore: Update vcpkg baseline to 2026.07.29 (#4055) 2026-08-14 14:31:22 -03:00

Canary

Discord CI Quality Gate Status Repository size License

Canary is a free and open-source MMORPG server emulator for the OpenTibia community, written in C++20 and Lua. It is a fork of the OTServBR-Global project. The repository includes the server core, datapacks, Lua scripts, database schema, build presets, automated tests and development tooling used by the project.


Getting Started


Docker Quickstart

Canary includes a lightweight Docker quickstart for running a local test server without compiling Canary locally. The stack starts MariaDB, the published Canary runtime image, MyAAC as the website/admin AAC, and opentibiabr/login-server as the client login webservice.

This quickstart is for local development, testing, and LAN demos. Do not expose it directly to the public Internet with the default test accounts and passwords.

Run from the docker directory:

cp .env.dist .env
docker compose up -d --build

The docker directory also provides guarded start scripts that start the stack and clean safe Docker leftovers without removing database volumes:

.\up.ps1
sh ./up.sh

Default local endpoints:

  • Website/admin: http://localhost:8080
  • Client login webservice: http://localhost:8088/login
  • Game port: 7172

MyAAC's login.php is intentionally removed from the quickstart image. Clients should use login-server only. See docs/docker/quickstart-for-beginners.md for a beginner guide and docker/DOCKER.md for the full setup, environment variables, test account, and troubleshooting guide.


Documentation



Nightly Packages

Development builds can be downloaded from GitHub Actions artifacts. They are useful for testing recent changes from the main branch, but may include behavior that is not present in stable releases yet.


Running Tests

Tests can be run from the repository root using the tool versions and tasks pinned in .mise.toml:

mise install
mise run configure linux-debug
mise run build linux-debug
mise run test linux-debug

# Replace linux-debug with macos-debug or windows-debug as needed.

For detailed testing information including adding tests and framework usage, see tests/README.md.


Support & Community

For real-time support, join the OpenTibiaBR Discord.

The GitHub issue tracker should be used for bugs, improvements and technical project tasks. It is not a support forum.


Contributing

Contributions are welcome. You can help in several ways:

  • Report bugs through the Issue Tracker.
  • Submit improvements through Pull Requests.
  • Improve tests, documentation, scripts, datapacks, or C++ code.
  • Validate releases, nightly builds and recent changes.

Before contributing, read the Code of Conduct and the project Contributing guide.


Sponsorship

Canary is maintained by community contributors. To support development, visit the OpenTibiaBR sponsors page.


Acknowledgements

Thanks to all contributors of Canary, OTServBR-Global and the OpenTibia community.


License

This project is distributed under the GPL-2.0 license.