diasurgical/DevilutionX
Diablo build for modern operating systems
Healthy across the board
worst of 4 axesnon-standard license (Other)
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
No critical CVEs, sane security posture — runnable as-is.
- ✓Last commit today
- ✓18 active contributors
- ✓Distributed ownership (top contributor 22% of recent commits)
Show 4 more →Show less
- ✓Other licensed
- ✓CI configured
- ✓Tests present
- ⚠Non-standard license (Other) — review terms
What would change the summary?
- →Use as dependency Concerns → Mixed if: clarify license terms
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Healthy" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/diasurgical/devilutionx)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/diasurgical/devilutionx on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: diasurgical/DevilutionX
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/diasurgical/DevilutionX shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
GO — Healthy across the board
- Last commit today
- 18 active contributors
- Distributed ownership (top contributor 22% of recent commits)
- Other licensed
- CI configured
- Tests present
- ⚠ Non-standard license (Other) — review terms
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live diasurgical/DevilutionX
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/diasurgical/DevilutionX.
What it runs against: a local clone of diasurgical/DevilutionX — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in diasurgical/DevilutionX | Confirms the artifact applies here, not a fork |
| 2 | License is still Other | Catches relicense before you depend on it |
| 3 | Default branch master exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 30 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of diasurgical/DevilutionX. If you don't
# have one yet, run these first:
#
# git clone https://github.com/diasurgical/DevilutionX.git
# cd DevilutionX
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of diasurgical/DevilutionX and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "diasurgical/DevilutionX(\\.git)?\\b" \\
&& ok "origin remote is diasurgical/DevilutionX" \\
|| miss "origin remote is not diasurgical/DevilutionX (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(Other)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"Other\"" package.json 2>/dev/null) \\
&& ok "license is Other" \\
|| miss "license drift — was Other at generation time"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f ".github/workflows/Linux_x86_64.yml" \\
&& ok ".github/workflows/Linux_x86_64.yml" \\
|| miss "missing critical file: .github/workflows/Linux_x86_64.yml"
test -f "CMakeLists.txt" \\
&& ok "CMakeLists.txt" \\
|| miss "missing critical file: CMakeLists.txt"
test -f ".gitmodules" \\
&& ok ".gitmodules" \\
|| miss "missing critical file: .gitmodules"
test -f "3rdParty/SDL2/CMakeLists.txt" \\
&& ok "3rdParty/SDL2/CMakeLists.txt" \\
|| miss "missing critical file: 3rdParty/SDL2/CMakeLists.txt"
test -f "3rdParty/libfmt/CMakeLists.txt" \\
&& ok "3rdParty/libfmt/CMakeLists.txt" \\
|| miss "missing critical file: 3rdParty/libfmt/CMakeLists.txt"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 30 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~0d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/diasurgical/DevilutionX"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
DevilutionX is a cross-platform port of Blizzard's Diablo and Hellfire that modernizes the 1996 engine to run on contemporary operating systems (Windows, macOS, Linux, Nintendo Switch, PS4/PS5, Android, iOS, Xbox, Amiga, etc.). It decouples the original game logic from legacy DOS/Windows dependencies, wraps it around SDL2/SDL3 for rendering and input, and adds modern quality-of-life features (widescreen support, UI scaling, controller support, balance tweaks) while preserving the original gameplay. Monorepo structure: source code lives in Source/ (inferred from .gitignore patterns common to Diablo ports), 3rdParty dependencies pinned in 3rdParty/SDL2, 3rdParty/SDL3, 3rdParty/Lua as git submodules. Build system is CMake-based (CMakeLists.txt at root and in 3rdParty/). Platform-specific entry points and builds managed via .github/workflows/ (e.g., Android.yml drives Java/Gradle, 3ds.yml handles devkitARM cross-compilation, Windows_MSVC_x64.yml uses native MSVC). Dev environment is containerized in .devcontainer/ with Fluxbox for headless X11 testing.
👥Who it's for
Retro game enthusiasts and speedrunners who own Diablo/Hellfire and want to play on modern hardware without DOS emulation; mod developers building on the fully-decompiled source; C++ developers interested in reverse-engineering and engine porting techniques; players on niche platforms (Amiga, Vita, OpenDingux handhelds) who lack native ports.
🌱Maturity & risk
Actively developed and production-ready. The project has extensive cross-platform CI coverage (40+ GitHub Actions workflows for macOS, Linux, Windows, 3DS, PS4/PS5, Xbox, Amiga, etc.), a Discord community of 10k+, and releases available on multiple distribution channels. Last development activity is recent, evidenced by the breadth of platform-specific build pipelines and the detailed devcontainer setup. Stable enough for casual and speedrun play.
Low risk for the core gameplay loop, but platform-specific builds introduce maintenance complexity—40+ platform targets mean breakage in any CI workflow can block releases for niche platforms. The project depends on original MPQ files (DIABDAT.MPQ, hellfire.mpq) which users must source legally, creating a potential legal gray area if not properly documented. Community reliance on a small core team (evidenced by Discord-driven coordination) means contributor churn could slow platform-specific maintenance. No obvious dormant dependencies in the file list, but the sheer breadth (Lua scripting, Java for Android build tools, shell, CMake) increases the surface area for subtle incompatibilities.
Active areas of work
Active multi-platform build maintenance: the repo shows 40+ distinct GitHub Actions workflows, suggesting ongoing work to support emerging platforms (PS5, Xbox Series X via xbox_one.yml, Amiga m68k, s390x big-endian QEMU tests). Recent additions include SDL3 testing (Linux_x86_64_SDL3_test.yml), Lua modding infrastructure (3rdParty/Lua/, suggesting scripting support being added), and clang-tidy static analysis integration. The miyoo_mini_release.yml, opendingux_release.yml, retrofw_release.yml workflows indicate active handheld gaming device support.
🚀Get running
# Clone with submodules (3rdParty dependencies)
git clone --recurse-submodules https://github.com/diasurgical/DevilutionX.git
cd DevilutionX
# Configure (CMake, detect SDL2/SDL3 and platform toolchain)
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
# Build (standard C++ build)
make -j$(nproc)
# Copy DIABDAT.MPQ from original Diablo CD or GoG install
cp /path/to/DIABDAT.MPQ ./build/
# Run
./build/devilutionx
On Windows: use CMake GUI or cmake -G "Visual Studio 16" .. for MSVC. On macOS: CMake auto-detects Xcode. See devcontainer setup for Docker-based build if local toolchain issues arise.
Daily commands:
# After cloning and cmake configure:
make # Linux/macOS
msbuild /p:Configuration=Release # Windows MSVC
# Run with default config (looks for DIABDAT.MPQ in working directory)
./devilutionx
# Or with custom game data path
./devilutionx --data-dir /path/to/diablo_data
Config tweaking: edit ~/.config/devilutionx/devilutionx.ini (Linux/macOS) or %APPDATA%\devilutionx\devilutionx.ini (Windows) for graphics settings, controller bindings, widescreen toggle. See docs/CHANGELOG.md for feature flags.
🗺️Map of the codebase
.github/workflows/Linux_x86_64.yml— Primary build pipeline for the most common target platform; defines compilation flags, dependencies, and artifact generation that all contributors must understandCMakeLists.txt— Root build configuration driving cross-platform compilation to 20+ platforms; essential for understanding how the codebase assembles and what dependencies are conditional.gitmodules— Declares 3rdParty submodules (SDL2, Lua, libsodium, etc.); contributors must understand external dependency management and version pinning strategy3rdParty/SDL2/CMakeLists.txt— SDL2 integration layer for cross-platform graphics/input; core to why DevilutionX runs on 20+ platforms without major rewrites3rdParty/libfmt/CMakeLists.txt— Logging and formatting infrastructure used throughout the codebase; affects all error reporting and debug output conventions.editorconfig— Code style rules (indentation, line endings, charset) enforced across 600 files; violations block CI/CD via clang-format-check.github/workflows/clang-tidy-check.yml— Static analysis gate that catches memory safety, performance, and style violations; blocks merge without passing
🛠️How to make changes
Add Support for a New Platform (e.g., new game console or OS)
- Create a new GitHub Actions workflow file in .github/workflows/ (e.g., MyPlatform.yml) that defines the cross-compiler, build flags, and artifact packaging for the target platform (
.github/workflows/Linux_x86_64.yml) - Update CMakeLists.txt to detect the new platform via CMAKE_SYSTEM_NAME or custom flags, conditionally selecting SDL backend, threading model, and console-specific APIs (
CMakeLists.txt) - If the platform requires a custom graphics/input layer, add platform-specific glue code in a new 3rdParty subdirectory (e.g., 3rdParty/MyPlatform_SDK/) with its own CMakeLists.txt (
3rdParty/SDL2/CMakeLists.txt) - Verify the .editorconfig, clang-format, and clang-tidy configurations are compatible; adjust CI workflows if the platform has custom linting requirements (
.editorconfig)
Add a New Game Feature or Engine Fix
- Write the feature logic in the appropriate source module (typically under src/, though not shown in file list provided) (
CMakeLists.txt) - If the feature requires new Lua bindings or scripting, update the sol2 integration in 3rdParty/sol2/CMakeLists.txt to expose new C++ functions to Lua (
3rdParty/sol2/CMakeLists.txt) - Add unit tests using Google Test framework (3rdParty/googletest) and ensure all tests pass in the CI/CD pipeline before merging (
3rdParty/googletest/CMakeLists.txt) - Run clang-format and clang-tidy locally to ensure code style and safety violations are caught before push (
.editorconfig)
Add a Third-Party Dependency or Update an Existing One
- If adding a new external library, create a git submodule reference in .gitmodules and add a CMakeLists.txt wrapper in 3rdParty/ (
.gitmodules) - Update the root CMakeLists.txt to conditionally enable the new dependency (e.g., via an option like -DENABLE_NEWLIB=ON) and link it to the main executable (
CMakeLists.txt) - If the dependency is platform-specific (e.g., console SDK), add conditional logic in the appropriate .github/workflows/*.yml file to download and configure the toolchain (
.github/workflows/Linux_x86_64.yml) - Test the new dependency on multiple platforms by triggering the full CI/CD matrix (Linux, Windows, macOS, consoles) in the pull request (
CMakeLists.txt)
🔧Why these technologies
- CMake (cross-platform build system) — Enables single codebase to compile for 20+ platforms (Windows, Linux, macOS, iOS, Android, PS4, PS5, Switch, Xbox, embedded) without forking source code; conditional logic abstracts platform differences
- SDL2/SDL3 (graphics, audio, input abstraction) — Unified layer for graphics rendering, audio mixing, and input handling across disparate platforms; avoids platform-specific rendering code bloat
- Lua + sol2 (scripting VM and bindings) — Allows game logic, modding, and scripting without recompilation; enables community mods and post-release content without touching C++ core
- Google Test (unit test framework) — Integrated into CI/CD pipeline; ensures engine fixes and features don't regress across the 20+ platform matrix
- GitHub Actions (CI/CD) — Matrix-driven workflows allow single .yml definition to test all 20+ platform permutations in parallel; tight integration with repository and release automation
- libsodium (cryptography) + asio (async I/O) — Multiplayer networking requires secure authentication and non-blocking I/O; libsodium provides drop-in crypto, asio handles async socket operations
⚖️Trade-offs already made
-
Single codebase compiled for 20+ platforms instead of platform-specific branches
- Why: Maximizes code reuse and minimizes maintenance burden; one bug fix applies everywhere
- Consequence: CMakeLists.txt and platform detection logic become complex; conditional compilation makes some code paths platform-specific and harder to test
-
SDL2/SDL3 for graphics instead of native platform APIs (DirectX, Vulkan, Metal)
- Why: Ensures portability to retro consoles and embedded systems that may not support modern APIs
- Consequence: Graphics performance may lag behind native implementations
🪤Traps & gotchas
Git submodules required: git clone --recurse-submodules is mandatory; naive clone will leave 3rdParty/ empty and CMake will fail. MPQ licensing: the project cannot redistribute original game data (DIABDAT.MPQ); users must source it from legal channels (original CD, GoG, Battle.net). Builds will succeed without it, but the game won't run—no clear error message. Platform-specific toolchains: cross-compilation workflows assume pre-installed SDKs (devkitARM for 3DS, Apple Clang for macOS arm64, etc.). On a generic Linux box without these, CI workflows will silently skip or require manual toolchain install. CMake cache issues: if you switch platforms (e.g., Windows → macOS), do a clean rm -rf build before reconfiguring; stale CMakeCache.txt can cause cryptic linker errors. Lua integration: 3rdParty/Lua suggests modding via Lua scripts, but the C++ bindings and Lua module search paths are not yet documented in the repo—expect trial-and-error. CTRL+S save state: original Diablo saves to DOS-based formats; DevilutionX may have subtle compatibility quirks with save files from the original or vice versa—document before releasing save-breaking changes.
🏗️Architecture
💡Concepts to learn
- MPQ (Blizzard Archive Format) — Diablo and Hellfire distribute game assets (sprites, sounds, palettes, AI scripts) in proprietary .mpq container files; understanding MPQ extraction and re-packaging is essential for modding and legal asset sourcing
- Cross-platform abstraction via SDL (Simple DirectMedia Layer) — DevilutionX wraps Diablo's rendering and input behind SDL2/SDL3 to avoid platform-specific code; knowledge of SDL event loops, texture blitting, and controller input is critical for adding new platforms or fixing platform-specific bugs
- Reverse-engineering and binary compatibility — The project decompiles and re-implements Diablo's engine while maintaining byte-for-byte compatibility with original save files and .mpq assets; understanding data structure alignment, endianness, and serialization formats is crucial when modifying game logic
🔗Related repos
diasurgical/devilutionx-assets— Companion repo hosting shareware spawn.mpq and extracted game assets; directly referenced in README for legal play without original mediadiasurgical/devilutionX-DebugTools— Official modding and debugging tools for DevilutionX; used by contributors to inspect game state and craft modslibsdl-org/SDL— Upstream SDL2/SDL3 dependency; critical when updating 3rdParty/SDL2 or troubleshooting rendering or input issueskcat/openal-soft— Likely audio backend (inferred from typical Diablo ports); check if pinned in 3rdParty or if audio issues arise
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add unit tests for SDL3 migration validation
The repo has experimental SDL3 support (.github/workflows/Linux_x86_64_SDL3_test.yml) but no dedicated unit tests for SDL3-specific rendering, input handling, and audio subsystem differences. This is critical for ensuring compatibility across SDL versions, especially given the extensive platform support (Windows, macOS, Linux, consoles). New contributors can add focused tests for SDL3 API differences in the src/platform/sdl/ directory.
- [ ] Create tests/sdl3_compatibility_test.cpp covering SDL3 event handling differences
- [ ] Add tests for SDL3 audio mixer initialization in tests/audio_sdl3_test.cpp
- [ ] Document SDL2 vs SDL3 API divergence in docs/SDL3_Migration.md
- [ ] Verify tests pass in both Linux_x86_64_SDL3_test.yml and Linux_x86_64_test.yml workflows
Add CI workflow for WebAssembly (Emscripten) build
The repo targets 15+ platforms (3DS, Android, PS4, PS5, Xbox, Switch, Amiga, etc.) but lacks a WebAssembly build workflow. Given the game's architecture and SDL support, Emscripten could enable browser-based play. This would follow the existing pattern in .github/workflows/ and help reach web-based players.
- [ ] Create .github/workflows/Emscripten_WASM.yml following the pattern of existing platform workflows
- [ ] Add Emscripten toolchain configuration to CMakeLists.txt for WASM target detection
- [ ] Configure SDL2/SDL3 to build with Emscripten's SDL support flags
- [ ] Document WASM build instructions in docs/BUILDING_WASM.md with performance considerations
Add comprehensive test coverage for platform-specific code paths
With 15+ platform workflows and platform-specific code in src/platform/, there's likely insufficient test coverage for Windows XP (Windows_XP_32bit.yml), big-endian systems (s390x_qemu_big_endian_tests.yml), and ARM variants. New contributors can add unit tests that validate platform-specific byte order handling, input subsystems, and rendering paths.
- [ ] Create tests/endianness_test.cpp for big-endian handling validation (used by s390x workflow)
- [ ] Add tests/platform_input_test.cpp covering gamepad/keyboard differences across platforms
- [ ] Add tests/legacy_windows_compat_test.cpp for Windows XP-specific code paths in src/platform/windows/
- [ ] Update CMakeLists.txt to conditionally compile platform-specific tests based on target platform
🌿Good first issues
- Add Lua bindings documentation for mod authors: 3rdParty/Lua is present but docs/CONTRIBUTING.md does not explain how to write Lua mods or what C++ functions are exposed. Create a docs/MODDING_LUA.md with examples (e.g., 'how to hook player attack events', 'how to add a custom NPC dialog') so mod developers can use the scripting layer without source diving.
- Add missing unit tests for platform abstraction layer: The repo has clang-tidy and clang-format checks in CI but no visible test/ directory structure. Unit tests for SDL input handling, save-file serialization, and config parsing would catch regressions early and document expected behavior. Start with tests/platform_input_test.cpp covering gamepad, keyboard, and mouse events.
- Document MPQ extraction and setup for new contributors: Installation docs mention 'copy DIABDAT.MPQ' but do not explain how to legally acquire it if you don't own Diablo. Add a docs/MPQ_SETUP.md guide covering GoG installer extraction, CD data mounting, shareware spawn.mpq option, and EFQDN legal status so contributors can set up a local build without confusion.
⭐Top contributors
Click to expand
Top contributors
- @kphoenix137 — 22 commits
- @StephenCWills — 16 commits
- @AJenbo — 12 commits
- @Trihedraf — 12 commits
- @yuripourre — 10 commits
📝Recent commits
Click to expand
Recent commits
b1299d5— Translate new strings into Ukrainian (tsunamistate)3eb2b44— Ensure that buffered player info gets processed (StephenCWills)29a2fdb— Use top-left grid cell when syncing staff charges (StephenCWills)a3e5fd5— Bump lukka/run-vcpkg from 11.5 to 11.6 (dependabot[bot])7ebd4ed— Fix leave shack with visual store (yuripourre)54cb216— Add CPACK to build instructions for MinGW (StephenCWills)7b65d70— Implement audio via SDL3_mixer (AJenbo)cf2fa34— Update mpqfs for better DOS support (AJenbo)3afccc2— Add Lua towner API and dynamic dialog options (prework for multi-town PR) (#8539) (yuripourre)78f7728— Fix crash when remote player changes items in combat (jwkeating)
🔒Security observations
DevilutionX demonstrates reasonable security practices with CI/CD pipelines and Dependabot integration, but has moderate concerns around third-party dependency management and version pinning. The codebase lacks visible hardcoded secrets, SQL injection, or XSS vulnerabilities based on file structure analysis. Main risks stem from the complexity of managing multiple platform builds and ensuring all bundled dependencies are kept current. The project would benefit from enhanced dependency tracking, clearer version documentation, and more comprehensive Dependabot configuration. Legacy platform support (Windows XP/9x) adds maintenance burden but appears intentional for the project's preservation goals.
- Medium · Submodule Dependencies Not Verified —
.gitmodules, 3rdParty/* directories. The repository uses Git submodules (indicated by .gitmodules) for external dependencies including SDL, Lua, libsodium, and others. Submodules can be vulnerable if the referenced commits are not pinned to verified releases or if upstream repositories are compromised. Fix: Regularly audit and update submodule references. Use signed releases when available. Implement CI checks to verify submodule integrity and scan for known vulnerabilities in pinned versions. - Medium · Third-Party Dependencies Included Without Lock File —
3rdParty/* directory structure. Multiple third-party libraries are included as local copies (3rdParty directory) without clear version pinning or lock file mechanism. This makes it difficult to track which versions are in use and whether security patches have been applied. Fix: Document exact versions of all bundled dependencies. Consider using a package manager with lock files or maintain a security audit log. Implement automated dependency scanning tools (e.g., Dependabot is partially configured but may not cover all dependencies). - Low · Incomplete Dependabot Configuration —
.github/dependabot.yml. While .github/dependabot.yml exists, the provided snippet doesn't show its full configuration. Dependabot may not be configured to monitor all dependency sources (npm, pip, Maven, etc.) or may have security updates disabled. Fix: Ensure Dependabot is configured to monitor: npm dependencies, pip packages, GitHub Actions, Docker base images, and all other dependency sources. Enable security updates and set appropriate review/merge policies. - Low · Debug Configuration Files Present —
.gdbinit, .lldbinit. Debug configuration files (.gdbinit, .lldbinit) are committed to the repository. While these are typically harmless, they could potentially be exploited if they contain sensitive debugging directives or if they're automatically loaded in development environments. Fix: Review debug files for sensitive content. Consider moving to .gitignore or documenting their safe contents. Ensure developers are aware these load automatically. - Low · Multiple Build Workflows with Wide Platform Support —
.github/workflows/*.yml. The repository supports building for numerous platforms (Windows XP, PS4, PS5, Xbox, Android, iOS, etc.). Each platform may have different security requirements and patching cycles. Legacy platform support (Windows 9x, Windows XP) may introduce maintenance burden. Fix: Maintain a security matrix for supported platforms. Regularly audit legacy platform builds for security implications. Consider deprecating end-of-life platform support or clearly marking it as unmaintained. - Low · Discord Integration Present —
3rdParty/discord/. Discord SDK is included as a dependency (3rdParty/discord with fixes.patch). Third-party communication integrations may introduce supply chain risks if the Discord SDK is compromised. Fix: Keep Discord SDK updated to the latest patched version. Monitor Discord security advisories. Consider making Discord integration optional to reduce attack surface for users who don't need it.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.