Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
321 commits
Select commit Hold shift + click to select a range
712793e
Drop the redundant stale-name assertion from the allowlist contract
AriusII Sep 23, 2026
1c8b71f
Leave the value-scan adapter to its owning lot
AriusII Sep 23, 2026
d3d261e
Reformat the plugin template sources with tabs
AriusII Sep 23, 2026
d79c076
Ignore the template reformat in git blame
AriusII Sep 23, 2026
6a96f97
Require the embedded SBOM in the CI package set check
AriusII Sep 23, 2026
f042ef6
Index the governance scripts in the CI script readme
AriusII Sep 23, 2026
5a485c1
Document the CI, lock-file and dependency rules for contributors
AriusII Sep 23, 2026
9de4105
Describe the Gate and PR policy in the CodeRabbit configuration
AriusII Sep 23, 2026
0971a1c
Ask pull requests for qualification level, compatibility and evidence
AriusII Sep 23, 2026
2b98e71
Update the README requirements, validation and CI description
AriusII Sep 23, 2026
e5f921c
Index the security, conduct, CI and settings pages in the docs index
AriusII Sep 23, 2026
2a3a971
Record the Core failure contract and CI changes in the changelog
AriusII Sep 23, 2026
ac82705
Stop excluding test projects from the Sonar analysis
AriusII Sep 23, 2026
2202387
Pass the client shutdown token through the coexistence probes
AriusII Sep 23, 2026
03e6fcf
Remove legacy schemas and configurations for GitHub Actions and CI re…
AriusII Sep 23, 2026
abd88fc
Remove dangling eng/ script references from workflows
AriusII Sep 23, 2026
935ec67
Drop stale eng/ and docs/ entries from the solution and build config
AriusII Sep 23, 2026
6b23879
Delete Repository.Tests for the removed governance/release tooling
AriusII Sep 23, 2026
0f14b64
Fix CheatEngine.Client.Tests after the eng/release script removal
AriusII Sep 23, 2026
ef84576
Regenerate lock files after a stray CentralTransitive drift
AriusII Sep 23, 2026
8ed6d51
Drop the dangling release-tuple field from the compatibility form
AriusII Sep 23, 2026
1dc3ade
Stop pointing ADR-01 ratchet guidance at a deleted migration guide
AriusII Sep 23, 2026
4166f5b
Remove a stray eng/github mention from the Scorecard comment
AriusII Sep 23, 2026
2c44ddc
Export the packed package directory from the Pack step
AriusII Sep 23, 2026
1a05caf
Exclude three untestable SDK adapters from the coverage gate
AriusII Sep 23, 2026
b2940cf
Derive the target ISA from observed families, PID first
AriusII Sep 23, 2026
a3c146b
Store the observed process width and keep selection identity strong
AriusII Sep 23, 2026
63d0854
Keep the codec width at the process width and refuse width mismatches
AriusII Sep 23, 2026
53f4440
Gate operational capabilities on the consumed SDK identity evidence
AriusII Sep 23, 2026
7ac8197
Report factual record activation and bind record IDs to table loads
AriusII Sep 23, 2026
696803c
Check symbol collisions before registering and ownership before release
AriusII Sep 23, 2026
8151b1e
Emit bounded, redacted Core diagnostics through a logger-free sink
AriusII Sep 23, 2026
b3670e7
State the true capability evidence and host profile in the READMEs
AriusII Sep 23, 2026
c2f6d5a
Write the SDK 2.0 migration guide and generate its break list
AriusII Sep 23, 2026
d432bf7
Order table generation changes on the main thread
AriusII Sep 23, 2026
b774dfa
Embed the consumed SDK identity from the lock and restored package
AriusII Sep 23, 2026
f07d01c
Classify unobservable widths and unconfirmed targets precisely
AriusII Sep 23, 2026
cc00086
Report an unavailable Address List as a capability condition
AriusII Sep 23, 2026
58961e4
Log a capability refusal again after a provider fault
AriusII Sep 23, 2026
1edda8a
Cite qualification scenarios without SDK paths in the READMEs
AriusII Sep 23, 2026
77d2b2c
Drop the SDK 2.0 migration guide and its break-list generator
AriusII Sep 23, 2026
753a235
Remove remaining dangling references to the deleted SDK 2.0 guide
AriusII Sep 23, 2026
c750071
Add Lua module release outcome contract
AriusII Sep 23, 2026
79334f9
Make generator models equatable and diagnostics location-free
AriusII Sep 23, 2026
223de98
Release generated Lua module globals only while still owned
AriusII Sep 23, 2026
126a741
Report Lua module shape diagnostics CECLUA1201 to CECLUA1204
AriusII Sep 23, 2026
995d95d
Freeze the generated Lua surface as a registered ADR-01 exception
AriusII Sep 23, 2026
ea5451b
Document the third-party replacement scenario in the coexistence README
AriusII Sep 23, 2026
216ce14
Enforce analyzer release tracking for the Lua generator
AriusII Sep 23, 2026
3b407f6
Keep the generator boundary constants together
AriusII Sep 23, 2026
5045d6c
Pin the generated SDK port decisions with a C0 check
AriusII Sep 23, 2026
42b7aa8
Test escaping SDK exceptions and Lua status in module rollback
AriusII Sep 23, 2026
4e1daab
Document the SDK port proof and release limits of Lua modules
AriusII Sep 23, 2026
8c393f6
Remove a doubled blank line from the Lua generator
AriusII Sep 23, 2026
2fc08be
Stop pointing the Q16 ADR-01 exception at a deleted migration guide
AriusII Sep 23, 2026
24aea6f
Never fold a stale release's failure into UnregisterCore's throw
AriusII Sep 23, 2026
d1f5976
Remove dangling references to deleted eng scripts and PR policy
AriusII Sep 23, 2026
24715dc
Tag the Client rollback and cleanup tests with Q06 and Q43
AriusII Sep 23, 2026
93e12f1
Add the Client qualification plugin harness and its tests
AriusII Sep 23, 2026
b800a57
Drop dead links to the removed qualification docs from the harness
AriusII Sep 23, 2026
01b8ec3
Prove the qualification plugin stays ADR-01-safe and gate-guarded
AriusII Sep 23, 2026
290d797
Regenerate lock files after adding the qualification harness projects
AriusII Sep 23, 2026
fdd0d22
Pass the client shutdown token through the capability probes
AriusII Sep 23, 2026
c9080ea
Apply the hardened code style to every source file
AriusII Sep 24, 2026
ebee78c
Adopt the hardened .editorconfig for the Client repository
AriusII Sep 24, 2026
cf07fdc
Rename private constants, static fields and async methods
AriusII Sep 24, 2026
3de3299
Ignore the style and rename commits in git blame
AriusII Sep 24, 2026
adde1fa
Treat the never-published public API as unshipped
AriusII Sep 24, 2026
2e396c6
Test the public API baselines before the first release
AriusII Sep 24, 2026
83e7cc3
Remove the domains no CheatEngine.SDK primitive backs
AriusII Sep 24, 2026
3b6a943
Remove process and assembly members without an SDK primitive
AriusII Sep 24, 2026
0db51a8
Remove the SDK canary switch that no workflow uses anymore
AriusII Sep 24, 2026
54fc1d4
Derive the next-major SDK guard cases from the pin
AriusII Sep 24, 2026
5874915
Finalize releases with gh release view and edit
AriusII Sep 24, 2026
ed6767f
Delete a stale draft release with gh release delete
AriusII Sep 24, 2026
f59ebbd
Verify packages against SHA256SUMS before pushing
AriusII Sep 24, 2026
cab2aac
Verify published assets and attestation identity
AriusII Sep 24, 2026
bee4325
Stage the SBOM and checksums on release dry runs
AriusII Sep 24, 2026
a690679
Document the strengthened release verification
AriusII Sep 24, 2026
b9f9d25
Consume CheatEngine.SDK 2.0.0 and open the 1.0 version line
AriusII Sep 24, 2026
156280c
Add target, identity and runtime change failure kinds
AriusII Sep 24, 2026
6fe3fc1
Classify SDK 2.0 faults and Lua admission outcomes
AriusII Sep 24, 2026
4c2ed95
Ratchet SDK experimental members and ADR-01 reasons
AriusII Sep 24, 2026
19f4ed1
Classify dispatcher faults with the external Lua reset rule
AriusII Sep 24, 2026
5813407
Throw cancelled failures as OperationCanceledException
AriusII Sep 24, 2026
1ffdeca
Make default failures safe to read and re-enable CS8762
AriusII Sep 24, 2026
1610ad8
Add one release outcome and base for every Client lease
AriusII Sep 24, 2026
7b9a1f9
Describe capabilities from one catalog and state 1.x policy
AriusII Sep 24, 2026
a19e363
Exclude live qualification tests from CI by trait
AriusII Sep 24, 2026
e8718c4
Add the sandboxed Cheat Engine live qualification runner
AriusII Sep 24, 2026
d6a2a99
Back up and restore the Cheat Engine user registry key
AriusII Sep 24, 2026
86b0d6b
Bind qualification evidence to the shipping source digest
AriusII Sep 24, 2026
8355d15
Pin inter-Client package dependencies to the exact version
AriusII Sep 24, 2026
2b6a155
Accept every CheatEngine.SDK 2.x at or above the pin
AriusII Sep 24, 2026
1565d02
Verify trim compatibility of shipping package references
AriusII Sep 24, 2026
bf6bd38
Document the Microsoft.Extensions dependency floor policy
AriusII Sep 24, 2026
70a2a97
Observe host and target facts through SDK 2.0 operations
AriusII Sep 24, 2026
6fa7cd9
Attach through SelectAndObserve and track incarnations
AriusII Sep 24, 2026
9aefca1
Reshape runtime and process snapshots around bitness
AriusII Sep 24, 2026
fb35d89
Map every SDK memory failure and use width-qualified pointers
AriusII Sep 24, 2026
913e74a
Report the confirmed prefix of partial byte reads
AriusII Sep 24, 2026
b28f790
Fold batch outcomes and width facts into memory contracts
AriusII Sep 24, 2026
4ce0bea
Report AOB host outcomes from TryScanOutcome
AriusII Sep 24, 2026
c725853
Scan modules and ranges through the bounded SDK route
AriusII Sep 24, 2026
6468ddf
Replace SDK AOB options with Client-owned options
AriusII Sep 24, 2026
57575b0
Fold detailed AOB outcomes into IPatternScanner
AriusII Sep 24, 2026
7f07d10
Apply one AOB scope rule and copy limit on both routes
AriusII Sep 24, 2026
c3b7889
Keep AOB failure metrics and cleanup facts on every path
AriusII Sep 24, 2026
48bdab8
Align AOB docs with the bounded route and its zero
AriusII Sep 24, 2026
30d0a54
Register symbols through SDK owned registration leases
AriusII Sep 24, 2026
5f32699
Replace AddressResolutionOptions with a resolution mode
AriusII Sep 24, 2026
39d21eb
Mutate address-list records through AddressListMutations
AriusII Sep 24, 2026
8c2c50a
Load and save trusted tables through CheatTableFiles
AriusII Sep 24, 2026
4d771f8
Reshape table snapshots on SDK record getters
AriusII Sep 24, 2026
6b2070d
Release a symbol registration the activation cannot own
AriusII Sep 24, 2026
35d151a
Retarget the refused Lua admission contract to real SDK commands
AriusII Sep 24, 2026
728b259
Refuse record creation, update and selection during a trusted load
AriusII Sep 24, 2026
6c2d501
Document that a failed script read reports no script
AriusII Sep 24, 2026
a223b7c
Test the hierarchy copy through a record source seam
AriusII Sep 24, 2026
e4da5c4
Word the Lua admission rules for every Client-owned admission
AriusII Sep 24, 2026
5faf85e
Register generated Lua modules through SDK leases
AriusII Sep 24, 2026
0531a6c
Report Lua module releases as the SDK observes them
AriusII Sep 24, 2026
615cc43
Collapse the Lua client overloads into one design
AriusII Sep 24, 2026
46d6bd8
Compile the Client and SDK Lua generators together
AriusII Sep 24, 2026
d178d51
Keep every Lua registration decision in the generated registrar
AriusII Sep 24, 2026
1866f1d
Fail closed on Lua releases the SDK reports outside its shape
AriusII Sep 24, 2026
2c206a5
Report the earlier release when a Lua module registers again
AriusII Sep 24, 2026
e38b14d
Check every CheatEngine.SDK member generated Lua code uses
AriusII Sep 24, 2026
acac4fe
Cover Lua module registration in the Try contract
AriusII Sep 24, 2026
ebe017d
Remove the unused Lua release mapping from SdkReleaseOutcomes
AriusII Sep 24, 2026
ec078e9
Add experimental value scans over SDK scan sessions
AriusII Sep 24, 2026
9b4e263
Add experimental target allocations over SDK regions
AriusII Sep 24, 2026
7c55080
Key target-bound leases to the process the SDK bound
AriusII Sep 24, 2026
9ccd54e
Report a refused lease registration as a Try failure
AriusII Sep 24, 2026
a73bdab
Write scanned floats in fixed point with explicit decimals
AriusII Sep 24, 2026
b377bd1
Check the activation before refusing a value-scan request
AriusII Sep 24, 2026
7c139f3
Map a cancellation between two native calls in one place
AriusII Sep 24, 2026
d4b7e59
Describe release outcomes that could not begin
AriusII Sep 24, 2026
99afca3
Fail scan creations closed when no rollback is proven
AriusII Sep 24, 2026
a56d77b
Exercise the scan stop and main-thread release in tests
AriusII Sep 24, 2026
808fc46
Add opt-in experimental Auto Assembler patches
AriusII Sep 24, 2026
227e798
Add experimental instruction assembly and disassembly
AriusII Sep 24, 2026
5466d6f
End an Auto Assembler lease whose disable could not begin
AriusII Sep 24, 2026
b8076a1
Warn that a target change leaves Auto Assembler patches applied
AriusII Sep 24, 2026
1bcec9b
Key Auto Assembler patch leases to the process the SDK bound
AriusII Sep 25, 2026
0c366a9
Cover the Auto Assembler in-callback activation check
AriusII Sep 25, 2026
45cb681
Describe the SDK calls SdkBoundary wraps after the 2.0 adoption
AriusII Sep 25, 2026
e632c2a
Correct what a target change does to target-bound leases
AriusII Sep 25, 2026
28febf3
Opt the lease release dispatch out of cancellation explicitly
AriusII Sep 25, 2026
4ecbaa7
Remove the contract-only capability machinery
AriusII Sep 25, 2026
efd62fa
Remove the Lua admission refusal exception nothing throws
AriusII Sep 25, 2026
c6126eb
Share scan option and stop translations between scan routes
AriusII Sep 25, 2026
a864a72
Declare every experimental id once and suppress it per project
AriusII Sep 25, 2026
32dac9f
Admit every lease-creating operation with one activation check
AriusII Sep 25, 2026
7e149cc
Map a failed Auto Assembler owner handoff like the AOB route
AriusII Sep 25, 2026
38dc83e
Report an unavailable Address List the same way in every lookup
AriusII Sep 25, 2026
b0c269a
Classify an unconfirmed AOB session rollback like value scans
AriusII Sep 25, 2026
524b93f
Return the ending outcome when an ended lease is released again
AriusII Sep 25, 2026
64c0dcf
Name every failure after the public operation that produced it
AriusII Sep 25, 2026
915d874
Make every Client output value safe to read at its default
AriusII Sep 25, 2026
ff5b7ef
Enforce the public API naming and vocabulary charter
AriusII Sep 25, 2026
51cbdcc
Test the Auto Assembler handoff release through the port's mapping
AriusII Sep 25, 2026
b7f64dc
Check the operation names Hosting writes against the charter
AriusII Sep 25, 2026
ef36ad6
Wrap the capability catalog remarks at 120 columns
AriusII Sep 25, 2026
e4507e8
Give every Fluent domain one bound entry point
AriusII Sep 25, 2026
9a516ce
Make Fluent builders plain readonly structs
AriusII Sep 25, 2026
2382c35
Expose logging and the plugin folder on the Hosting builder
AriusII Sep 25, 2026
232ddaf
Add an opt-in Cheat Engine log provider
AriusII Sep 25, 2026
3c347c4
Keep DI composition internals out of the public API
AriusII Sep 25, 2026
1c48325
Read the external Lua reset flag instead of a runtime snapshot
AriusII Sep 25, 2026
3e997a7
Say that the host log writes a caller's template as passed
AriusII Sep 25, 2026
79a192e
Test the registered Core diagnostics sink of an activation
AriusII Sep 25, 2026
6147841
Anchor the IL3000 check on the getter body
AriusII Sep 25, 2026
5d5216f
Update the qualification harness to the 1.0 contracts
AriusII Sep 25, 2026
2775fa6
Add value scan, allocation, instruction and patch scenarios
AriusII Sep 25, 2026
d4444f6
Define the live scenario catalog and session plans
AriusII Sep 25, 2026
ecee3f2
Derive the qualification gate from embedded host evidence
AriusII Sep 25, 2026
dd33156
Record which rounding rule Q25's decimal texts observe
AriusII Sep 25, 2026
bcafb51
Prompt the operator for plugin toggles and wait for them
AriusII Sep 25, 2026
16401ee
Check every S3 release and target switch the driver runs
AriusII Sep 25, 2026
cdcf15d
Tighten the identity, version, cleanup and policy checks
AriusII Sep 25, 2026
f206f19
Refresh the governance documents for the 1.0.0 release
AriusII Sep 25, 2026
daf6b1f
Wrap the AOB fake's host outcome under the line limit
AriusII Sep 25, 2026
edbc675
Drop the external Lua reset fact from the runtime snapshot
AriusII Sep 25, 2026
bc4f2f3
Delete the pointer codec policy left without a caller
AriusII Sep 25, 2026
3bea54b
Accept only missing-primitive or unsafe Lua ratchet debt
AriusII Sep 25, 2026
8bc0330
Prove each checked library writes an operation name
AriusII Sep 25, 2026
02753e3
Define IsTruncated as a copy not proven complete
AriusII Sep 25, 2026
90f4aa9
Leave the S0 spike out of the recorded qualification run
AriusII Sep 25, 2026
498dfba
Compose the harness through the Hosting builder's folder and logging
AriusII Sep 25, 2026
fac80c4
Give each scanning fact one name across requests and routes
AriusII Sep 25, 2026
4ee2ed7
Name the Fluent AOB alignment setters like ScanAlignment
AriusII Sep 25, 2026
f3af0e2
Take the record id first in Update and name GetSelectedRecord
AriusII Sep 25, 2026
dae62a4
Classify Address List and inspection lookup failures alike
AriusII Sep 25, 2026
1a1663a
Refuse a default Inspection or Tables request before dispatch
AriusII Sep 25, 2026
75052ce
Admit a symbol registration again in its dispatched callback
AriusII Sep 25, 2026
737356c
Rethrow a Lua result mapper's exception unchanged
AriusII Sep 25, 2026
006a466
Refuse a reserved Lua name like a reserved symbol name
AriusII Sep 25, 2026
f7bfac2
Name the Lua module's last release report like LastReleaseOutcome
AriusII Sep 25, 2026
13482cf
Fail closed on unknown Auto Assembler and instruction outcomes
AriusII Sep 25, 2026
b7dbe73
Name the no-target release refusal after TargetNotAttached
AriusII Sep 25, 2026
11af677
Mark the instruction and Auto Assembler interfaces experimental
AriusII Sep 25, 2026
b22fd05
Name the Core lifetime guards after the case they throw in
AriusII Sep 25, 2026
d434b85
Check the shared scan options once for both scan routes
AriusII Sep 25, 2026
3b6a726
Log only the capability refusals Core emits in the DI tests
AriusII Sep 25, 2026
6d384f9
Wrap the reconciled comments under the 120-column limit
AriusII Sep 25, 2026
cac6367
Fail closed on unknown Lua admissions and registration results
AriusII Sep 25, 2026
ca30665
Check the activation before refusing a request
AriusII Sep 25, 2026
9523e3f
Name the current-process read GetCurrentProcess
AriusII Sep 25, 2026
e7d96b5
Document the cleanup and width facts the code reports
AriusII Sep 25, 2026
822c3c9
Test the value-scan refusal of a tampered scan option
AriusII Sep 25, 2026
cb0d66d
State only what the codec and IL3000 tests prove
AriusII Sep 25, 2026
fd1e007
Wrap the remaining new lines under the 120-column limit
AriusII Sep 25, 2026
60331b0
Throw for default and malformed requests in every domain
AriusII Sep 25, 2026
1197256
Name the activation refusal after the operation that met it
AriusII Sep 25, 2026
9e2658a
Give the qualification gate Cheat Engine's width as a PointerSize
AriusII Sep 25, 2026
7eb4099
Throw for tampered string encodings and scan value types
AriusII Sep 25, 2026
0ed43e6
Align the failure and argument rules with the code
AriusII Sep 25, 2026
1c2a52d
Document the argument exception of a default codec request
AriusII Sep 25, 2026
6c285cc
Document every public parameter, return and exception
AriusII Sep 25, 2026
ec0be09
Floor the documentation rules on what they classify
AriusII Sep 25, 2026
0ab45dd
Document what a deactivation callback can still call
AriusII Sep 25, 2026
d9f8a4f
Correct the failure kind of a released value-scan session
AriusII Sep 25, 2026
ec227e7
Document the lifecycle exceptions of the codec-context facts
AriusII Sep 25, 2026
2c9f5f3
Document the options validation failure of OnEnable
AriusII Sep 25, 2026
f774bd7
Document the exceptions of the generated Lua operation extensions
AriusII Sep 25, 2026
14f7f11
Rewrite the packed READMEs for plugin authors
AriusII Sep 25, 2026
02cbf0c
Compile README C# snippets against the packed Client
AriusII Sep 25, 2026
f7248ae
Catalog the CECLIENT build diagnostics with help links
AriusII Sep 25, 2026
0e1a2a4
Move the template validation steps to CONTRIBUTING
AriusII Sep 25, 2026
1a7aa11
Correct the facade assembly and CS9057 README claims
AriusII Sep 25, 2026
f622a42
Check the 1.0 status column of the capability tables
AriusII Sep 25, 2026
f19f6a0
Wrap the new README test and snippet lines under 120 columns
AriusII Sep 25, 2026
ee08672
Check the README project versions against the packed template
AriusII Sep 25, 2026
fed2c68
Derive template plugin names and keep a template lock file
AriusII Sep 25, 2026
dee5d82
Summarize the 1.0.0 initial release in the changelog
AriusII Sep 25, 2026
54a666e
Widen the SDK pin guard to hashes, ranges and governance
AriusII Sep 25, 2026
e8d7cd1
Correct the 1.0.0 changelog renames and experimental wording
AriusII Sep 25, 2026
5d7e860
Test the changelog release section rules on synthetic headings
AriusII Sep 25, 2026
59113e7
Key the PublicAPI pre-release guards on the promoted release
AriusII Sep 25, 2026
76a1292
Describe the widened release and SDK guards in the test README
AriusII Sep 25, 2026
7f89f3c
Correct the template entries of the 1.0.0 changelog
AriusII Sep 25, 2026
c118299
Ignore the deliberate harness Dispose throw in Sonar
AriusII Sep 25, 2026
c071d0d
Use generated regular expressions in the repository tests
AriusII Sep 25, 2026
cfeed98
Use generated regular expressions in the qualification tests
AriusII Sep 25, 2026
e185775
Follow the xUnit analyzer advice in the tests
AriusII Sep 25, 2026
bb77e1e
Use collection expressions for empty and literal collections
AriusII Sep 25, 2026
ab484a8
Use auto properties where a field only backs its property
AriusII Sep 25, 2026
c8890f4
Remove unused test parameters and rename a thread-static field
AriusII Sep 25, 2026
e659b3f
Return conditional expressions where they stay readable
AriusII Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
180 changes: 166 additions & 14 deletions .coderabbit.yaml

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-coverage": {
"version": "18.11.2",
"commands": [
"dotnet-coverage"
],
"rollForward": false
}
}
}
216 changes: 198 additions & 18 deletions .editorconfig

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Commits that only reformat or mechanically rename code. Enable locally with: git config blame.ignoreRevsFile .git-blame-ignore-revs
# Apply repository formatting
e5b1e0dde918a54c0dd628737bb7ad86d36c1c7f
# Reformat the plugin template sources with tabs
d3d261e15bc520dd5cb24a2237bdefd417887532
# Apply the hardened code style to every source file
c9080ea19c5db2d4f9aa6ff3025923aed3dde5d7
# Rename private constants, static fields and async methods
cf07fdc6e39fce692679cb4074ba8bf36ff523a7
11 changes: 11 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Working trees use CRLF on every OS; this file owns line-ending normalization while .editorconfig governs formatting.
* text=auto eol=crlf

# Binary assets are never normalized.
*.dll binary
*.exe binary
*.nupkg binary
*.snupkg binary
*.png binary
*.ico binary
*.snk binary
16 changes: 16 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Informational only. "Require review from Code Owners" stays off while the project has a single active maintainer:
# an author cannot approve their own pull request, so a required code-owner review would block every change.
# Owners must have write access to the repository; invalid lines are skipped silently. Syntax:
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# The sensitive paths below repeat the default owner so that a second owner can be added in one place.

* @AriusII

/.github/ @AriusII
/eng/ @AriusII
/Directory.Build.props @AriusII
/Directory.Build.targets @AriusII
/Directory.Packages.props @AriusII
/global.json @AriusII
/nuget.config @AriusII
/SECURITY.md @AriusII
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Bug report
description: A Client API, package or template behaves incorrectly; load or host problems use the compatibility report.
title: "Bug: "
labels: [ bug ]
body:
- type: markdown
attributes:
value: |
If the problem depends on the Cheat Engine build, its .NET runtime policy or plugin loading, use the
**Compatibility report** form instead: it records the exact tuple needed to investigate.
Security problems go through private vulnerability reporting (see SECURITY.md), never through an issue.
- type: input
id: client-version
attributes:
label: CheatEngine.Client version
description: All CheatEngine.Client* packages share one version. Read it from your packages.lock.json.
placeholder: 1.0.0
validations:
required: true
- type: input
id: sdk-version
attributes:
label: CheatEngine.SDK version resolved in packages.lock.json
placeholder: 2.0.0
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
options:
- Abstractions (public contracts, options, failures, leases)
- Fluent API
- Core (processes, memory, AOB scanning, inspection and symbols, tables, protected Lua)
- Experimental APIs (value scans, allocations, instructions, Auto Assembler patches; CECLIENT5001-5004)
- Hosting and dependency injection
- Lua source generator
- Template (dotnet new ceplugin)
- Packaging
- Other
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: A minimal code sample or project is best.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behaviour
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behaviour
description: Include the exact exception, or the CheatEngineFailure kind and operation name.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Redacted logs
render: text
- type: checkboxes
id: confirmations
attributes:
label: Confirmations
options:
- label: I removed user names, private paths and target-memory contents from this report.
required: true
- label: This is not a security vulnerability.
required: true
206 changes: 206 additions & 0 deletions .github/ISSUE_TEMPLATE/compatibility.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
name: Compatibility report
description: A CheatEngine.Client plugin fails to load or behaves differently on a specific Cheat Engine setup.
title: "Compatibility: "
labels: [ bug ]
body:
- type: markdown
attributes:
value: |
A compatibility problem can only be investigated against an exact tuple: the Client packages, the
CheatEngine.SDK package they resolved (version and fingerprint), the native Lua protection bridge, the Lua DLL
and the Cheat Engine build actually used, the .NET runtime policy of Cheat Engine, the plugin build options and
the load profile. A file name or a version alone does not identify it.

The profile targeted for qualification is Cheat Engine 7.7.0.10621 x64 (`cheatengine-x86_64.exe`) loading a
managed plugin through hostfxr (`ce-7.7.0.10621-x64-managed-hostfxr`). Whether that profile has been qualified,
and at which level, is stated by the qualification matrix of the release you use, not by this form. Reports
from other builds and load profiles are welcome too; say which one you used.

Compute every hash with `Get-FileHash <file> -Algorithm SHA256`. Remove user names and private paths.
Never attach Cheat Engine binaries, target binaries, authorization manifests or raw DebugView dumps.
Security problems go through private vulnerability reporting (see SECURITY.md), never through an issue.
- type: input
id: client-version
attributes:
label: CheatEngine.Client version
description: All CheatEngine.Client* packages share one version. Read it from your plugin's packages.lock.json.
placeholder: 1.0.0
validations:
required: true
- type: input
id: sdk-version
attributes:
label: CheatEngine.SDK version
description: The `resolved` version of CheatEngine.SDK in your plugin's packages.lock.json.
placeholder: 2.0.0
validations:
required: true
- type: input
id: sdk-content-hash
attributes:
label: CheatEngine.SDK contentHash
description: The `contentHash` of the same CheatEngine.SDK entry, copied from packages.lock.json (not recomputed).
placeholder: NLEdZYJ9...lQ==
validations:
required: true
- type: input
id: bridge-sha256
attributes:
label: Native bridge SHA-256
description: SHA-256 of `cheatengine-sdk-lua-bridge.dll` in your plugin output folder.
validations:
required: true
- type: input
id: bridge-fingerprint
attributes:
label: Native bridge source fingerprint (optional)
description: The `<c-sha256>:<xmake-sha256>` fingerprint, when the SDK release notes or the plugin log print it.
- type: input
id: lua-dll-sha256
attributes:
label: Lua DLL SHA-256
description: SHA-256 of `lua53-64.dll` in the Cheat Engine folder (the Lua runtime the plugin actually binds to).
validations:
required: true
- type: input
id: ce-version
attributes:
label: Cheat Engine version and executable
description: The version from Help > About, and the name of the executable you started.
placeholder: 7.7.0.10621, cheatengine-x86_64.exe
validations:
required: true
- type: input
id: ce-exe-sha256
attributes:
label: Cheat Engine executable SHA-256
description: SHA-256 of the executable you started.
validations:
required: true
- type: dropdown
id: ce-build
attributes:
label: Cheat Engine build and architecture
options:
- cheatengine-x86_64.exe (x64)
- cheatengine-x86_64-SSE4-AVX2.exe (x64, not a profiled build)
- Started through the Cheat Engine.exe launcher (not a profiled route)
- x86 Cheat Engine (not supported)
- Other
validations:
required: true
- type: input
id: runtimeconfig-sha256
attributes:
label: ce.runtimeconfig.json SHA-256
description: >-
SHA-256 of `ce.runtimeconfig.json` in the Cheat Engine folder. Record it as it is; do not change it for
this report.
validations:
required: true
- type: dropdown
id: runtimeconfig-state
attributes:
label: ce.runtimeconfig.json state
options:
- As installed by Cheat Engine
- Modified locally (describe the difference under Actual behaviour)
- Unknown
validations:
required: true
- type: textarea
id: dotnet-runtimes
attributes:
label: Installed .NET runtimes
description: Output of `dotnet --list-runtimes`, with private paths removed.
render: text
validations:
required: true
- type: dropdown
id: load-profile
attributes:
label: Plugin load profile
options:
- Managed plugin loaded through hostfxr (supported route, targeted for qualification)
- NativeAOT plugin (not supported)
- Historical CLR route (not supported)
- I do not know
validations:
required: true
- type: textarea
id: plugin-build
attributes:
label: Plugin build settings
description: |
`dotnet --version`, TargetFramework, RuntimeIdentifier, PlatformTarget, PublishAot and SelfContained if set,
whether the plugin was created with `dotnet new ceplugin`, and whether the Client packages came from nuget.org
or another feed.
render: text
validations:
required: true
- type: dropdown
id: observed-level
attributes:
label: Where did you observe the problem?
description: The qualification level of the observation. A build or unit-test result is not a Cheat Engine result.
options:
- Build, restore, analyzer or packaging output (C0)
- Unit tests or test doubles (C1)
- Native fixture outside Cheat Engine (C2)
- Cheat Engine with this plugin loaded (C3)
- Cheat Engine with several plugins, or after a target switch (C4)
validations:
required: true
- type: input
id: target
attributes:
label: Target process
description: Architecture (x64 or x86) and kind (local process, CEServer, file opened as a process).
placeholder: x64 local process
validations:
required: true
- type: input
id: os
attributes:
label: Windows version
placeholder: Windows 11 24H2 x64 (26100.xxxx)
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behaviour
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behaviour
description: Include the exact exception, or the CheatEngineFailure kind and operation name.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Redacted logs
description: >-
Plugin log lines around the failure. Remove paths, addresses and memory contents you do not want
public.
render: text
- type: checkboxes
id: confirmations
attributes:
label: Confirmations
options:
- label: I removed user names, private paths and target-memory contents from this report.
required: true
- label: I attached no Cheat Engine binaries, target binaries, authorization manifests or raw DebugView dumps.
required: true
- label: This is not a security vulnerability.
required: true
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Report a security vulnerability
url: https://github.com/CheatEngineNet/CheatEngine.Client/security/advisories/new
about: Private vulnerability reporting. Never open a public issue for a vulnerability.
- name: CheatEngine.SDK problems (bootstrap, native bridge, Lua bindings, ABI)
url: https://github.com/CheatEngineNet/CheatEngine.SDK/issues/new/choose
about: Low-level SDK behaviour belongs to the CheatEngine.SDK repository.
- name: Cheat Engine itself
url: https://github.com/cheat-engine/cheat-engine/issues
about: Problems in Cheat Engine are reported upstream.
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Feature request
description: Propose a new Client capability or an improvement to an existing one.
title: "Feature: "
labels: [ enhancement ]
body:
- type: markdown
attributes:
value: |
CheatEngine.SDK owns native bindings, Lua globals and native resource ownership; CheatEngine.Client composes
them. A request that needs a new Cheat Engine primitive usually starts in the CheatEngine.SDK repository.
Security problems go through private vulnerability reporting (see SECURITY.md), never through an issue.
- type: textarea
id: problem
attributes:
label: Problem
description: What do you want to do, and why is it hard today?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed API or behaviour
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
- type: dropdown
id: sdk-dependency
attributes:
label: Does it need something CheatEngine.SDK does not expose?
options:
- "No"
- "Yes"
- I do not know
validations:
required: true
Loading
Loading