Repository navigation
Build and test
The full documents are docs/12_BUILD.md and docs/14_TESTING.md.
- Windows 10 (22H2) or 11, 64-bit.
- Visual Studio with the C++ workload (MSVC v143 or later, a Windows SDK of 22621 or later) and CMake 3.28 or later.
- The .NET SDK that
global.jsonpins. - PowerShell 7.
./build.ps1 checkIt is the whole gate, and CI runs the same script. In order:
| Step | What fails it |
|---|---|
| Native build and ctest | A C++ warning (/W4 /WX) or a native test. |
clang-format, dotnet format
|
Code not formatted as committed. |
| Managed build and tests | A C# warning (warnings are errors), or a test — the integration tests included. |
| coverage-gate | Too little coverage of Domain and Application. |
| rules-validate | A detection-rules file that breaks its schema or weakens the anti-cheat blocklist. |
| versioninfo, chokepoint, hookinventory, package-closure | A binary without its version resources; an injection anywhere but the guard's own code, or an evasion primitive anywhere; a hook not in the inventory; a developer tool in the package. |
| license-check, accuracy-check, notice-check | A package without its licence, a copy of the accuracy statement that drifted, a source file without its licence header. |
| changelog-check, release-notes, resx-audit | The changelog or the release-notes extractor broken, or a string missing in English, Vietnamese or Japanese. |
| struct-mirror, test-artifacts, wiki-check, placeholder guard | The shared-memory mirror test not run, test leftovers, a wiki link that leads nowhere, a stray {{…}} in a shipped document. |
Other tasks: ./build.ps1 native, ./build.ps1 managed, ./build.ps1 format (writes the formatting). A skipped gate is
reported, never hidden.
-
Managed: one project per layer under
tests/(xUnit v3, FluentAssertions). The App's tests render every page, window and dialog under the real theme dictionaries. - Native: ctest suites for the guard, the ring, the layout, the Vulkan layer, the telemetry DLLs.
- Integration: the hook-harness is hooked for real, on WARP, so it runs on CI without a GPU.
- A new test is shown red first on the unfixed code: a check that has never failed has not been seen to work.
FrameLedger.exe --data-dir <a copy of a data folder> opens the App as a viewer: no agent is started or contacted, and
nothing on the PC is changed. Never run a development build against your own %LOCALAPPDATA%\FrameLedger: a newer
build upgrades the database, and an older one cannot open it again.
This wiki is generated from the repository at v0.1.0-beta.23. Edit wiki/ or guide/ there: a change made here is overwritten when the next release is published.
Use FrameLedger
- User guide
- Install and first start
- Record a game
- Read your results
- Anti-cheat and safety
- Your data
- Questions and answers
- The screens
- Every setting
- When something goes wrong
- Words FrameLedger uses
- The terms, in plain words
- Limitations
Build or change FrameLedger