Anti-cheat · release archive
Every release, in the words we used at the time
Newest first — 0.2.0 (2026-04-13) to 0.8.2.
How to read this page
Plain text is the release note as it was published — it reads in the tense of its day, and the original wording always stays.
A gold note marks a claim directly above it that was accurate when written and has since changed, and says what changed and when.
An olive note is context added when this archive was built — usually detail the shorter published note left out, or a place where the published notes and the engineering record disagree.
0.8.2first login needs the current client, and the pages that describe the client are made to match it2026-09-06
One thing in this release can stop you, and it is the first item. The rest is correction: several things the client and these pages said about the client were wrong, and this is the release that fixes the wording — plus two changes that mean fewer sessions are marked for review, described as such. Nothing new is collected. The client will prompt you when you open it: click Download, then Restart now when it offers. It does not update on its own.
- Logging in for the first time now needs the current client. Every later login already refused a client below the minimum version. The very first login — the one where you set your password — did not check, so a client too old to log in could still set itself up. It checks now. The minimum stays at 0.8.0, and a 0.8.0 or 0.8.1 client that has already logged in keeps working as before. But a first login from anything older than 0.8.2 is refused, because older clients do not tell the server which version they are at that step, and the server no longer assumes. If you are setting up this season and first login answers “update required” — on an older client it may show as a bare
update_required— download 0.8.2 from the client page, run it, and log in again. The refusal happens before anything is written to your account, so there is nothing to undo. - The in-client “What the AC collects” window had five claims wrong. It said loaded DLLs were collected: they never were, and the client does not look at what a program has loaded. It said your DNS lookup cache was checked for cheat-related domains: it has not been read at all since shortly after 0.7.8. It described a fallback capture method from 0.6.8 that 0.7.8 removed. It said the excluded vendor databases “no longer leave your machine”: their contents do not, but a file's name and its fingerprint can still appear in the scan listing, and the same is true of the excluded login tokens, cookies and crash dumps. And its does-not-collect list said “files outside the DoD game directory” while the same window discloses reading peripheral-software configuration from your app-data folders. It now spells out exactly what is opened outside the game folder and why. These are corrections to the description, not changes to what the client does.
- The same window, and the profile preview, now name what 0.8.1 added. 0.8.1 started reading HyperX NGENUITY's folder and recording whether a non-native resolution reaches your panel stretched or with bars, and shipped without the window saying so. It says so now. The “this is exactly what would be published” preview on the profile-consent screen was also leaving out that stretched-or-bars row; it shows it. What is published is unchanged.
- The statement describing how the client interacts with the game was re-checked, and four of its claims were wrong. That statement is what the client page's answers about your Steam account rest on, so you should know when it slips. Its table of the places the client touches the game window was short by three — all older than this release, all read-only (a window's position and whether it is minimised, and which process it belongs to), and none of them new; it credited the wrong function with keeping the game out of a window search; it said no test existed to hold that table honest, when one had landed and is what caught the gap; and a note about the client's native footprint growing was describing an older release. Re-derived from the 0.8.2 code: that footprint has not grown at all across 0.8.0, 0.8.1 and 0.8.2. No shipped build carried the corrected statement until this one.
- Fewer sessions are marked for review. Two changes, and both loosen what gets flagged, so they are described that way. First, a common driver stops raising a warning on its own. A driver that ships with widely used motherboard and graphics utilities sits on roughly one player in five, and every time it had ever been flagged it stood alone with nothing else backing it — a fact about the population, not about the player. When the client can confirm it is the vendor's own copy, it is now recorded as information rather than as a warning: still recorded, still stored, still visible to an admin, and alongside an independent signal it still counts exactly as before. Which conditions, precisely, is not something these notes spell out. Second, alt-tabbing no longer reads as missing coverage. The client discards your input while another program has focus — that promise is unchanged — and a check that measures how much input was discarded was counting those discards as a gap in what it could see. A discard the client can attribute to another program you had in front (Discord, a browser) is now left out of that measure, because nothing that happened in the game window went unmeasured. Replayed over every archived session: the driver change moved 13 of 563 from Warn to Clean, the alt-tab change moved 2, none moved the other way, and no session gained a flag.
- Reviewers stop seeing “could not measure” dressed as “found something”. A session in which the checks could not run used to reach an admin under the same warning banner as one carrying modified game files. It is now presented as unmeasured, and a session that was never tied to a match, was too short to say anything, and could measure nothing is not announced at all — though it is stored and reviewable like any other. Separately, the alert that says the client's own result disagreed with the server's — the one whose whole point is that something may be off — was arriving styled as a pass. Neither changes any result.
- The lines explaining a verdict had not been saved since 28 August. The verdict itself was; the detail beneath it was being dropped by a storage limit set without measuring how long those lines get. Fixed for every session from now on, and an admin can restore the missing lines on older sessions by re-running them. Nothing about your session on your machine was affected, and no result changes.
Nothing else changed about what the client collects. The rest of 0.8.2 is plumbing: when a build cannot be signed, the build now says why instead of stopping with a bare error code. This build is signed, as every one we publish is, and since 0.8.1 the updater accepts nothing else.
0.8.1your setups entry can say how a non-native resolution reaches your monitor2026-09-04
A small release on top of 0.8.0. One change shows up on your setups entry, one is about the update itself, and nothing about how you use the client changes. The client will prompt you when you open it: click Download, then Restart now when it offers. It does not update on its own.
- Stretched, or black bars — your setups entry can now say which. If you play at a resolution your monitor is not built for, it either gets stretched across the whole panel or it gets bars, down the sides or top and bottom. Until now the page could only say “non-native”. It fills in the next time your profile is rebuilt. It can also read unknown, and that means exactly that — on some setups the bars are drawn by the monitor itself, where nothing we capture can see them. Unknown is never the same as “not stretched”.
- An unsigned update is refused outright. A tampered download always was. An unsigned one used to be allowed through with a warning, which is a distinction with no good reason to exist. Every build we publish is signed, so this should never be something you run into.
- One more vendor folder is read. The client now also looks where HyperX NGENUITY keeps its configuration, alongside the peripheral-software folders it already reads. Same kinds of file, same size and count limits — nothing new about the category, just one more vendor inside it.
0.8.0your setups entry should finally be right, and the client stops staying quiet when it cannot answer2026-09-01
Most of this release is about the hardware listed on your profile being wrong. If your setups entry has ever shown a mouse you do not own — or a USB dongle, or a hub — that was ours, not yours. Wireless mice answer through their receiver, and the receiver answers with its own name, so that is the name that got published. The client will prompt you when you open it: click Download, then Restart now when it offers. It does not update on its own.
- Your mouse should be your mouse. A receiver whose name identifies nothing now yields unknown rather than being published as your model, and a hub can no longer take the mouse slot. Receivers that do carry a real brand name still publish, because in that case the name is genuinely informative. Corrections apply the next time your profile is rebuilt — if yours still looks wrong after this release, tell an admin, because some stored values need a manual rebuild to clear.
- In-game resolution is worked out, not read off a saved setting. If you launch the game with a custom resolution, the saved value goes stale and your profile showed the wrong one. It is now derived from what your display actually did during the session, and falls back to the saved value only when the display never switched.
- Where the client could not answer, it now says so. In a few places the client recorded nothing when a check could not run, which looked the same in review as a check that ran and found nothing. Those now record which of the two happened, so an admin reading your session is not left to guess. This adds no new checks on you and changes no result.
- Files marked “system” in peripheral-software folders are read again. This completes a change first made in 0.7.9 and disclosed then: the same folders, the same file types, and the same size and count limits as before — the client simply no longer skips a file because it carries that Windows attribute.
0.7.10the release 0.7.9 was meant to be, plus a client that tells you when it cannot start2026-08-28
0.7.9 was published on 27 August and withdrawn the next day: it would not start. If you downloaded it and saw nothing happen when you ran it, that was the bug, and it was ours — nothing was wrong with your machine. It was pulled within a day and everyone was moved back to 0.7.8. 0.7.10 replaces it entirely and carries everything 0.7.9 was going to bring. There is no 0.7.9 to install, and it should not be run if you still have a copy.
- The client now tells you when it fails to start. The 0.7.9 failure was invisible: the program ended before it could draw a window, with no message and no error — the cursor spun, and then nothing. That is now impossible to miss. If the client cannot start, it says so in a plain window naming a small file next to the program, written for an admin to read. Nothing about that file leaves your machine on its own; you choose whether to send it.
- Signing in with Discord no longer hides your older sessions. Which of your own evidence bundles you could see depended on how you signed in: the password login showed all of them, while Discord showed only those recorded after your Steam account was linked. For most people that link date is the day a bulk import ran, not a day anything was verified about them — so the newer, better sign-in method showed less. Once you have signed in with your password at least once, Discord sign-in shows the same set. If you have never used the password login and are missing older sessions, ask an admin.
0.7.8less kept from your machine, one new thing read, and evidence integrity2026-08-11
0.7.8 is mostly a release about what the client reads from your machine, and what it stops keeping. One new thing is collected, and it is described below; two things the client used to keep are no longer kept. Scoring was also reviewed and updated on the server — those updates applied automatically to sessions already uploaded, and needed nothing from you.
- Your DNS lookup cache is no longer kept. The list of hostnames your machine has recently resolved is the most invasive thing the client reads. It is still consulted while a session runs, but the cache itself is no longer stored in your evidence. The disclosure window inside the client describes exactly what is kept.
- A screen-capture method was removed. The client has more than one way to capture the game. One of them has been removed outright, which shrinks the client's system-level footprint on your machine for the first time in this project's history — a permanent reduction in risk to your account, in exchange for a capability we could not justify keeping. Borderless windowed remains the most reliable setup. Where the game cannot be captured, the session records that gap plainly: a gap is never read as clean.
- New: your graphics driver's settings for Day of Defeat. The client now reads, once when a session starts, the image-quality settings your graphics driver applies to the game, along with the driver version. This is new collection and we would rather tell you than have you find it. It does not run on every graphics card; where it cannot run, the session records that it could not, and that costs you nothing.
- Your keyboard and mouse software is read — and the files themselves are collected. Where you use vendor peripheral software (Logitech G HUB, SteelSeries GG, Razer Synapse, Wooting Wootility), the client copies the vendor's own configuration files into your session evidence, hashes them, and parses some of them on our server. Those files can contain your macros, your button rebinds and your lighting profiles, and several of them are entire vendor databases collected in full rather than read selectively. We collect them to confirm which firmware features — SOCD, Snap Tap, macros — were active during a match, and for nothing else. Vendor login tokens, browser cookies and crash dumps that sit in the same folders are excluded, and have not been collected since 0.7.1.
- Correction. Earlier wording in this entry said the client read only the shape of these settings and that your macro contents and the vendor's telemetry stayed on your machine. That described one part of the client and not what it actually packages, and it was wrong. This replaces it.
- Programs that draw over the game are identified more reliably. Expect this to read differently for a while. You may see an ordinary tool — a screenshot utility, say — listed in your session where it was not before. That is the identification changing, not you doing anything wrong.
- You choose which of your accounts publishes. If more than one of your Steam accounts is on file with us, the profile screen now lets you say this is the one my public profile publishes from. Your admin still does the linking; you only choose between accounts already confirmed as yours, and if you have just one account you will never see the panel. One refusal is deliberate — if your other account currently has a public profile, make that one private first, because otherwise you would end up with two live pages for one person. And an account that has consented but is not the publishing one no longer tells you your profile is on when nothing is actually shown for it.
- Two reliability fixes. Two bugs that could cost you evidence during a session are fixed. Neither changed what the client collects, and neither changed what it discloses.
- Evidence integrity. The server re-verifies uploaded evidence end-to-end rather than accepting it on trust, and a session it cannot read is now a recorded state rather than a silent skip. A check that cannot run has to say so; it must never come out looking the same as a check that ran and found nothing. The server also now recognises the same session uploaded twice under two different accounts, so one session stops being counted as two.
Archive note · 2026-08-11
Corrected in public, at the foot of this page, carries one open item for this release: the update check has been advertising 0.7.8 since 2026-08-08 while the newest signed client is 0.7.7. It closes when the client ships, and stays on the list after it closes.
0.7.6 + 0.7.7corrections to these pages, disclosure fixes, a case closed as a false positive2026-07-27
Two releases shipped together. The anti-cheat has two jobs, catching the people who are cheating and leaving everyone else alone, and this pair improves both. Nothing new is collected in either one. All of it is written up below, including the parts that were our mistake.
- A correction to these pages. The field manual said that if you forgot to click Stop Session, the session was discarded. Since 0.6.8 it has actually been packaged and uploaded, the same as if you had clicked Stop. Nothing is lost, and nothing was ever quietly thrown away — but the page said otherwise, so it now says what the software does.
- The disclosure now tells you your keystrokes are recorded by KEY, not just by timing. That was always true and was never spelled out. It only happens while Day of Defeat is the focused window — nothing you type in any other program is captured — but in-game chat and the developer console are inside that window, so do not type a password into the console during a session.
- New: mouse movement is measured from the mouse, not the pointer. Day of Defeat re-centres your cursor every frame, so the old measurement was mostly that re-centring rather than your hand — which meant aim data was close to useless for everyone. It is now read from the device and summed into 10ms slices. Distance only: not where your cursor is, not what you clicked, not keystrokes, and only while DoD is the focused window.
- Two other disclosure corrections. Active network connections are sampled about once a minute for the length of a session, not just at the start and end as we previously said. And the file check covers the
Half-Life/folder itself, not onlyHalf-Life/dod/. - One long-running case was closed, and the player cleared. A signature that had been treated as worth reviewing was traced to that player's hardware rather than to anything they did. Confirmed three separate ways, including the signature following the hardware across a full PC swap.
- Every key Day of Defeat lets you bind is now understood. Keypad, punctuation, function keys and the nav cluster are covered, so an unusual bind layout is read correctly rather than partially. If you move on a mouse button, your session says so plainly.
- Fewer false alarms in your report. Community content you share with everyone else — the usual grenade models, the 1.3 cap-sound pack — was being counted as modified game files in the human-readable summary even though it never counted against you in the actual result. Your report now says what your result already said.
- Updates can be cancelled, and pick up where they left off. If a download is interrupted — you cancel it, close the app, or your connection drops — the part already downloaded is kept and the next attempt continues from there instead of starting the ~100 MB again. There is now a Cancel button while a download is running, and using it is not treated as a failure.
- The updater no longer makes the app stutter while downloading. Progress updates were being pushed to the window far more often than a screen can show, on the same thread that draws it.
- Bug fixes you would not otherwise see. A crash-recovery file could be written twice at once and corrupt itself; screenshots could silently stop for the rest of a session after a single hiccup; and the session bundle no longer stores the same network snapshot ~180 times, so uploads are smaller.
- 0.7.7 is a server-side release. Nothing about the client changed, nothing new is collected, and there is nothing for you to do differently. The work was in how results are scored and reviewed after they reach me, which is what made the re-check above worth doing.
0.7.5see your own data; fast keyboards stop tripping a false flag2026-07-20
The big one: you can now see your own collected data. Plus sharper hardware detection in your profile, and a fairness fix so fast keyboards stop tripping a false flag.
- See your own data at bundles.ktpdod.com. Sign in with your client SteamID and password to browse — and download — a safe view of your own uploaded sessions: your screenshots, configs, and device inventory. Read-only, your own sessions only, and it never shows verdicts, scores, or detection detail. It's live now and works with what you've already uploaded — no new client needed.
- Your profile picks the right mouse and keyboard. Windows lists most modern boards as both a keyboard and a mouse, which used to hand the mouse slot to a keyboard or leave the keyboard blank. Both are now resolved by one shared name check, so more players get their real devices shown even with no vendor software installed.
- Fast keyboards no longer get a false flag. The sub-1ms input check was reading a Windows report-batching artifact, not your actual finger timing, so it fired on ordinary fast, low-latency keyboards. It's demoted and gated behind a poll-rate check now, and only counts alongside independent corroboration. Cheap keyboards were the ones it caught; that's fixed.
- Clearer display-mode message. The in-app and site guidance now make plain that your display mode does not affect your result (your game files are checked directly). Borderless windowed just makes screenshots more reliable; it is not required.
Archive note · 2026-08-11
The engineering changelog records this release as deployed 2026-07-21 (backend in the morning, signed client the same evening); the page above was published dated 07-20. Both dates are preserved rather than reconciled — the discrepancy is noted, not resolved.
0.7.4your own password, a fresh VAC-safety re-check, reliability fixes2026-07-19
Pick your own password, a fresh top-to-bottom VAC-safety re-check, and a batch of reliability fixes.
- Set your own memorable password. Your admin still hands you a first-login password from the bot. The first time you log in with it, the client prompts you to choose your own password to use from then on.
- Re-verified VAC-safe by audit. A whole-codebase audit re-confirmed the client never reads, writes, injects into, or hooks the game; it only ever watches from the outside. Play on your normal account.
- Reliability fixes. The update button and screenshot capture are steadier: a display-resolution change mid-match no longer wedges fullscreen capture, and a key held across an alt-tab no longer masks your next press.
- Disappearing cursor: off by default now. The screen-capture setting that could hide your in-game cursor on some Windows setups is turned off out of the box — no checkbox to hunt for. If your cursor still vanishes after updating, it's almost certainly your graphics driver or a multi-monitor setup rather than the AC. You can re-enable capture from the checkbox if you ever want it.
0.7.3review follow-ups, and the client moves to HTTPS2026-07-18
Follow-up fixes from a code review, plus the client now reaches the KTP server over HTTPS.
- A rare false flag on spray control is fixed. One specific sparse-data burst could be mis-read as inhumanly smooth recoil control; it no longer counts against you.
- Fewer false alarms from mid-match downloads. If your game downloads shared community content (custom grenade models, the 1.3 cap-sound pack,
dod_siena.wad) during a match, that no longer trips a "modified files" warning. - Attested Hall-effect keyboards clear cleanly. If an admin has attested your HE / Rapid-Trigger keyboard, your sessions stop being surfaced for review over it.
- Secure endpoint. The client now talks to the server over HTTPS (
api.ktpdod.com) instead of plain HTTP. Nothing for you to change.
Archive note · 2026-08-11
One admission the short published note left out: this release also corrected the code-signing thumbprint published on this very site. The signing certificate had rotated at 0.6.7, and the page kept showing the old thumbprint — so a tester who did the verification we recommend saw a genuine build fail the check. The release checklist now re-verifies the published thumbprint on every rotation.
0.7.2a fairness pass, mostly about how your game renders2026-07-17
A fairness pass, mostly about not penalizing you for how your game renders.
- Exclusive-fullscreen OpenGL is no longer held against you. If screen capture comes back blind because you run classic exclusive fullscreen, that's now just a coverage note — it does not count toward any verdict. Integrity checking is done by hashing your game files, which works the same regardless of display mode. (If you'd still like screenshots to work, switch DoD to borderless windowed.)
- Fewer false alarms on legit hardware. High-CPI mice, low-poll-rate keyboards, and Hall-effect / Rapid-Trigger boards are handled more accurately, so ordinary gear stops tripping review flags.
- Your profile picks the right device. If your keyboard and mouse both register as multiple device types (macro keys, media wheels), the profile no longer swaps them.
Archive note · 2026-08-11
Two admissions from the engineering record that belong here. First: before any client had downloaded 0.7.2, the served build was rebuilt the same day to fix the in-client "What the AC Collects" panel — it had understated collection (keyboard/mouse detail, USB identifiers, hardware-fingerprint components) and wrongly claimed personal binds are never uploaded. Binds travel in the admin-only bundle (with passwords redacted first); only the public profile omits them. The public page's disclosure section was corrected the same day. Second: the first bullet above is itself an admission — until this release, capture blindness under exclusive-fullscreen OpenGL did contribute (a small weight) to session severity, which contradicts the 0.6.4 notes' "never a flag against you". The engineering changelog sides with this entry: it counted, and 0.7.2 zeroed it.
0.7.1accuracy + privacy; the AC now collects less2026-07-12
An accuracy + privacy pass, driven by looking at real tester bundles. Two fixes you might notice, and the AC now collects less.
- The disappearing-cursor fix, fixed properly. If you ticked "Disable cursor capture" and your mouse still vanished in DoD's menus, 0.7.1 now fully backs off screen capture for the session so your cursor comes back. Toggle it, then Start Session.
- Your profile shows what you actually run. Your real in-game resolution (e.g. 640×480 stretched, not just your monitor), your actually-connected mouse even with no vendor software, correct DPI/polling for Logitech, and lift-off distance where reported.
- Privacy — less is collected. Server/RCON passwords in your
.cfgfiles are redacted before anything is bundled, and peripheral-software collection is limited to the actual config files — vendor login tokens, browser cookies, and crash dumps are excluded.
Archive note · 2026-08-11
The redaction bullet shipped because of a real failure, which the published note softened into an improvement: a fresh tester bundle had carried a live server password in plaintext before this release. The fix redacts on your machine, before anything is bundled. A follow-up (0.7.6) then found the redaction still missed passwords chained mid-line inside binds, and closed that too.
Since then · 2026-07-19
"Toggle it, then Start Session" stopped being necessary: 0.7.4 turned the cursor-capture setting off by default, no checkbox to hunt for.
0.7.0opt-in public profiles; the file check finds what it used to miss2026-07-11
The big one: opt-in public player profiles. Plus a round of "the check actually works now" fixes to how the AC finds and reads your game files.
- Public profiles — new, opt-in, off by default. Turn on Public profile in the client and — after you type your registered name to confirm — you get a public page showing your setup: resolution and display mode, your netcode cvars, your sensitivity with computed eDPI and cm/360, and your mouse and keyboard. You can add an avatar and a short bio. It stays current automatically from your uploads. Nothing is published unless you opt in, and "Make private" deletes your entry. Never published: your Steam ID, your binds, your passwords, or your raw config files — only the setup values above.
- What changed in what's collected. To build a profile (only if you opt in), the AC now reads the values of a small, fixed set of cvars from your config — your netcode settings and the visual cvars the league already enforces — instead of only checking configs for mousewheel binds. It also searches harder for your DoD install now (every Steam library, and your fixed drives if needed) so the file check works even when the game isn't in the default folder.
- The check works where it used to come up empty. If your DoD lived somewhere non-standard, older builds sometimes scanned nothing and still reported "all good." 0.7.0 finds the install — and if it genuinely can't scan something, it now says so as a coverage note instead of a clean bill. Same honesty the screenshot and file checks already have.
0.6.9fairness, honesty, and privacy2026-07-08
A fairness, honesty, and privacy release — most of it is the AC being less quick to hold normal things against you. The first week of real sessions on 0.6.8 showed a few ways a completely clean machine could pick up noise it didn't deserve, and this fixes them.
- Fairer verdicts. The AC used to count dozens of standard, built-in Windows drivers as "unsigned" on every PC — that's fixed, so a clean machine no longer carries a pile of meaningless driver flags. A driver that's known to be exploitable but ships bundled with ordinary motherboard or GPU utilities (for example MSI's own software) no longer counts against you on its own. And the fast-input checks were reworded and retuned so a legitimate high-end Hall-effect / Rapid-Trigger keyboard's genuine quick counter-strafing isn't mistaken for cheat automation.
- Keyboard registration (new). If you run a high-end Hall-effect / Rapid-Trigger board — a magnetic or analog keyboard like a Wooting, a SteelSeries Apex Pro, or a Tekkusai Titan — an admin can now register your specific keyboard to your account, so its legitimate firmware-fast inputs are recognized as your hardware and not held against you. If you use one, just tell an admin your keyboard model.
- Straighter answers about screenshots. If screenshot capture goes blind partway through a fullscreen match, you'll now get a heads-up during the session pointing you at the fix (borderless windowed) instead of finding out afterward — and admins can see a live "capture is blind" status, so a coverage gap in a fullscreen session is understood rather than mistaken for hiding something. The AC also now identifies your connected devices by their real product names, so an unusual keyboard or mouse shows up as what it actually is.
- A privacy improvement. Your hardware serial numbers (CPU, motherboard, disk) and your network MAC addresses are now scrambled into a one-way code on your own PC before anything is sent — the raw values never leave your machine at all. Admins still match a machine to itself across logins by that code, exactly as before; nothing about how bans work changes.
Archive note · 2026-08-11
A further admission from the engineering record: in the same first week, every crash-recovered upload was being read as possible tampering — a session that arrived without the client's own verdict attached (a crash, a retried upload) was stamped with the tamper-suspicion signal, so an innocent player whose client crashed looked like they had interfered with it. Fixed in this release, and the affected stored sessions were repaired.
0.6.8the server double-checks every verdict; crashed sessions aren't lost2026-07-02
A reliability and fairness release. Your verdict is now double-checked on the server. The KTP server re-scores every session from the uploaded evidence itself instead of trusting whatever the client reported — so a tampered or spoofed client can't quietly claim "clean," and your legitimate session gets judged from the same evidence an admin sees. Interrupted sessions are no longer lost. If the app crashes or gets force-closed mid-match, or an upload fails, whatever was collected is saved and uploaded (encrypted, same as always) the next time you launch — so a crash doesn't look like you dodged the AC. Screenshots cover more setups. Fullscreen capture got another fallback method and an extra grab when you alt-tab, and if capture looks blind at session start you'll get a heads-up banner pointing you at the borderless-windowed fix before your match instead of after. One new thing worth knowing: while a session is active the client sends a small "still here" ping to the server every ~30 seconds — just your Steam ID, your server, and the version, no gameplay data — so admins can tell a live session from a crashed one.
A few smaller wins in the same update: a new "Disable cursor capture" checkbox on the main window — if your mouse disappears in DoD's menus while the AC runs, tick it and your cursor comes back. More Hall-effect keyboards are recognized — the fairness fix that stopped mistaking Rapid Trigger counter-strafing for cheat firmware now covers SteelSeries Apex Pro and Razer analog boards too. The AC is lighter on your game — a batch of performance changes to keep it out of the way of your frame rate. And a bug where screenshots could quietly freeze for a long stretch in borderless mode now self-recovers.
Archive note · 2026-08-11
"Interrupted sessions are no longer lost" is the fact the rest of this site failed to catch up with: the field manual kept telling players a forgotten Stop Session discarded the session for another month, until the 0.7.6 notes corrected the page itself. The behaviour was right from this release on; the documentation wasn't.
0.6.5 – 0.6.7the disappearing cursor, and Hall-effect keyboards2026-06-19 → 06-25
Two fixes you might actually notice, plus one fairness fix. The disappearing mouse cursor in DoD is fixed. If your cursor vanished while the AC was running, that happens when the game is in exclusive fullscreen — the screen unredirects from Windows and the cursor (and our screenshots) can't be read. 0.6.5 and 0.6.7 detect that mode (including when you play at your normal desktop resolution) and back off the screen-capture so your cursor comes back. The simplest fix on your end is to run DoD in borderless windowed — add -window -noborder to your launch options; the cursor stays put and screenshots work normally. Separately, if you use a Hall-effect keyboard (Wooting, etc.), the AC now recognizes it and stops mistaking your Rapid Trigger counter-strafing for cheat firmware — your legitimate fast inputs no longer get flagged. No new kinds of data are collected.
Archive note · 2026-08-11
The published callout carried one date (06-25); the engineering changelog splits it: 0.6.5 shipped 2026-06-19, 0.6.6 and 0.6.7 on 06-25. And the honest sequence behind "is fixed": 0.6.4's cursor fix leaked (it was silently undone every time capture re-initialized), 0.6.5 made it stick, and 0.6.7 covered the case 0.6.5's detection missed (exclusive fullscreen at your desktop resolution). Each report that "it's still broken" came from a tester, and each is named in the engineering record.
Since then · 2026-07-19
The cursor story ended at 0.7.4: the capture setting that could hide the cursor is now off by default, so none of the workarounds above are needed on a current client.
0.6.4detector tuning and an evidence-availability note2026-06-18
Detector tuning and an evidence-availability note. In "true" (exclusive) fullscreen at a resolution that isn't your desktop's — the mode DoD's older OpenGL can use — screenshots become unreliable, because Windows hands the whole screen to the game and no safe method can read it. Sometimes they come through, sometimes they don't. The client keeps retrying (and tries again the moment you change resolution or fullscreen setting), and only records that capture was unavailable if a session is still blind by its end — so an admin can see why the screenshots are thin instead of mistaking it for a problem (it's a coverage note, never a flag against you). The input checks were also retuned to cut false positives, so legitimate fast keyboards and quick counter-strafing aren't mistaken for automation. No new kinds of data are collected.
Since then · 2026-07-17
"Never a flag against you" did not hold up. The 0.7.2 notes admit the capture-blind marker carried a small weight toward severity until 0.7.2 zeroed it. The two published entries disagree; the engineering changelog sides with 0.7.2 — it counted (weight 1 of the several a session needs before anything happens), and now it doesn't. Preserved on both sides rather than harmonized.
0.6.1 – 0.6.3screenshot reliability, continued2026-06-15
Screenshot reliability, continued. The first 0.6.0 field test showed the capture could still freeze on some fullscreen setups while wrongly reporting itself healthy, so the client now checks that each frame actually changed before saving it and drops a stale repeat instead of bundling it. If you run the game in "true" (exclusive) fullscreen at a resolution that isn't your desktop's — a mode where Windows hands the whole screen to the game — screenshots become unreliable; the client records which display mode you were in so an admin can see why coverage is thin, rather than mistaking it for a problem. Also fixes the mouse cursor disappearing in in-game menus while the AC is running. No new kinds of data beyond your display resolution/refresh (used only to tell fullscreen mode from windowed).
0.6.0the frozen-screenshot rework, and keyboard macros join Rule 4.62026-06-14
Mostly reliability. The big one is a screenshot fix: on some fullscreen setups the capture could still get stuck repeating a frame — this reworks how the client falls back between capture methods so it keeps grabbing live frames, and records a clear reason on any tick it genuinely can't grab one (for example, if the game was minimized). I also extended the Rule 4.6 input-multiplication check to cover keyboard macros, not just mousewheel binds — same principle (one physical press should be one in-game input; a legitimate Rapid Trigger mouse stays exempt), using the keyboard timing the client already records. The rest is behind-the-scenes match-linking and server-side fixes with no new kinds of data collected.
Since then · 2026-06-15
The screenshot fix above did not close the freeze — the very next day's field test showed two of three clients still frozen, and silently so. The 0.6.1–0.6.3 entry above says it in its own words. Kept here because a fix that shipped confident and came back wrong is exactly what this archive exists to preserve.
0.5.9two detector changes2026-06-11
Two detector changes. First, I retuned the frame-locked-reactions detector so it stops flagging clean play — a couple of testers were tripping it just from how their hardware naturally behaves, and that's fixed. Second, I added a Rule 4.6 check for input multiplication: binding fire or crouch to your mousewheel, or running turbo/rapid-fire firmware, turns one action into a burst of inputs, which isn't allowed. The client now reads your .cfg files for those binds and records your scroll-wheel input — a legitimate Rapid Trigger mouse is exempt and won't trip it. The rest is internal capture and API hardening with no change to what's collected.
0.5.8cleanup pass, plus a capture fix2026-06-03
Mostly an under-the-hood cleanup pass, plus one capture fix you might actually notice: on some fullscreen setups the screenshots could get "stuck" repeating the same frame for minutes at a time. That's fixed — the capture now keeps delivering fresh frames instead of re-serving a stale one. Everything else is internal code health (faster startup, smaller/cleaner internals) with no change to what's collected. Minimum required version still stays 0.5.5, so this is an optional update.
Since then · 2026-06-14
"That's fixed" was premature — the freeze came back in different capture paths, and it took 0.6.0 and then 0.6.1 (whose notes admit the 0.6.0 attempt failed too) to actually close it. Three consecutive releases each believed they had it; the archive keeps all three saying so.
0.5.7the black-screenshots session, and what fixing it turned up2026-05-30
0.5.7 came out of one tester session that recorded an entire match's worth of black screenshots while they were clearly playing. Fixing that turned into a sweep of evidence-quality issues plus the backlog I'd been sitting on. Minimum required version stays 0.5.5 — you'll get the optional-update banner, not a forced prompt.
- Screenshots that actually capture the game. On some fullscreen setups the capture used to come back all-black even while you were mid-match. The client now detects that and falls back to grabbing the monitor your game is on, then crops to just the game window before saving — so fullscreen sessions get real screenshots instead of a dossier full of black images. (Only the game window is stored, never your other monitors.) If even the fallback can't get a clean frame, it skips and logs why rather than saving black.
- Your sessions link to the right match more reliably. Matters for review accuracy; nothing for you to do. If you play more than one map across different servers in a sitting, each gets attributed correctly.
- One change to what's read. If you run a SteelSeries mouse, the client now reads its CPI/DPI from SteelSeries GG the same way it already did for Razer, Logitech, and Wooting — so the spray detector calibrates to your real hardware instead of a one-size baseline. The vendor config files themselves are bundled for detection (which may include macros, rebinds, or RGB).
0.5.6the missing Download button2026-05-28
A small but important fix to the update screen.
- The "update required" screen now has a working Download button. If your client ever falls below the minimum required version, you can update from inside the app instead of hitting a dead end.
Archive note · 2026-08-11
The engineering record is blunter than the published line: the forced-update screen had never had a download path — every tester who ever fell below the minimum version hit a disabled login form with no way forward, from the day the version check shipped until this release. It was found because a tester sent a screenshot of the dead end.
0.5.5four days of work in one update; signing enforced2026-05-28
0.5.5 rolls four days of behind-the-scenes work into one update. The whole 0.5.2 → 0.5.5 series only ever shipped to my own machine; I just chose to keep iterating until there was something genuinely worth pushing to all of you. This is that push. Minimum required version moves to 0.5.5, so anyone below it gets an "Update required" prompt the next time you log in. The client handles the download itself.
- Better screenshots in messy session conditions. If DoD was minimized, mid-loading-screen, or sharing the screen with another window, earlier versions sometimes captured the wrong thing (a sliver of taskbar, the same frame over and over, or just black). The client now detects those situations and either captures cleanly or skips the frame and logs the reason.
- Optional update banner. When a new client is available but you're not below the minimum required version, you get a banner with Download / Dismiss buttons. Dismiss is per-version, so the same release won't keep nagging you.
- Signed binaries enforced. Every release carries a KTP code-signing certificate. Right-click the exe, hit Properties, and check the Digital Signatures tab to confirm it's the real build. Tampered or unsigned versions refuse to launch.
- Cleaner dossiers. A handful of false positives that were quietly polluting earlier reports got cleaned up. Community sound files no longer flag as modified, Microsoft kernel drivers no longer count as "unsigned," and the same physical key event no longer shows up twice in different anomaly buckets. Your report should be an easier read.
- Fewer "Update required" surprises. If an update fails for you (signature mismatch, hash mismatch, network blip), the client now tells the server why instead of dropping the failure on the floor. Admins can see what went wrong and reach out instead of guessing.
- Worth knowing: the client now reads your mouse's DPI from your peripheral software (Razer, Logitech G HUB, Wooting), so detection thresholds scale to your actual hardware instead of assuming everyone runs the same setup. And the server now refuses to start if it's in a half-deployed state — earlier behavior would warn quietly and keep running with broken pieces; that's caused some real outages and is now structurally impossible.
Since then · 2026-06-25
The signing certificate rotated at 0.6.7. The Digital-Signatures check described above is still exactly right — but the thumbprint to compare against changed, and this site kept publishing the old one until 0.7.3 corrected it (see that entry). The current thumbprint is always on the download panel.
0.5.2 – 0.5.4developer-machine builds, rolled into 0.5.52026-05-25 – 05-27
These builds only ever ran on the developer's own machine and were rolled into the 0.5.5 push, but here's what changed in them.
- Signed builds enforced at launch. A tampered or unsigned copy now refuses to run, so you can trust the exe you're on is the real build.
- A batch of false-alarm cleanups. Shared community sound files stopped showing up as "modified," standard built-in Windows drivers stopped being counted as unsigned, and the same physical keypress stopped being counted twice.
- Steadier screenshots and an honest disclosure page. Capture was hardened against blank, repeated, and wrong-window images, and the in-client "what we collect" panel was brought back in line with what the client actually does.
Archive note · 2026-08-11
A version-numbering slip lives in this series: the 05-26 audit build reused the 0.5.2 number that the 05-25 release already carried. The engineering changelog relabels the second one 0.5.2.1 to disambiguate, while recording that whatever number the binary shipped stamped with remains the as-shipped reality.
0.5.1a plain-honesty fix2026-05-24
A plain-honesty fix, with no change to how anything is detected.
- The in-client "what we collect" panel was rewritten to match reality. A few claims had drifted out of date; the panel now accurately describes what the client watches, captures, and stores. Nothing about detection changed.
Archive note · 2026-08-11
"Drifted out of date" undersells it, per the engineering record: two of the panel's claims were factually wrong, not stale — it said input from other apps is not captured (input is observed system-wide during a session, precisely to catch input-injecting cheats) and described a screenshot scope narrower than the capture pipeline actually had. It also omitted the at-rest encryption, the server-side weapon timeline, and the peripheral-config fingerprinting entirely. The same disclosure surface went out of true again later and was rebuilt again at 0.7.2 — which is why disclosure is now corrected in step with every release.
0.5.0signed builds, rebuilt capture, the first spray-review signal2026-05-22
A foundational release: the first signed builds, a rebuilt screenshot pipeline, and the first spray-control review signal.
- Signed builds start here. From this release on, the client carries a KTP code-signing certificate you can verify in the exe's Properties.
- Rebuilt screenshot capture. The client moved to the modern Windows capture path with automatic fallbacks, so fullscreen sessions still produce usable images.
- A spray-control review aid. During a match the league server now records which weapon you had out and when, so a reviewer can see your spray in context. It only informs manual review, never an automatic verdict.
0.4.6accuracy work, folded into 0.5.02026-05-21
Accuracy work from reviewing real sessions. This one was folded into the 0.5.0 release rather than shipping on its own.
- Fewer false flags. Several detector tweaks came out of looking at genuine tester bundles.
- Groundwork for more reliable fullscreen screenshots.
0.4.5your bundle is encrypted on your own disk2026-05-08
A privacy and accuracy release.
- Your session bundle is now encrypted on your own disk and deleted automatically once it uploads. Before this, a readable copy could sit in your Documents folder where anyone with disk access could open it.
- Sessions link to the right match more reliably, and how evidence is weighted toward a verdict was tuned. First-login handling was also smoothed out.
Archive note · 2026-08-11
This shipped because a tester opened their own bundle and reported what they found sitting in Documents. The exposure was real for every session before this release; the fix was encryption at rest plus delete-on-upload, in direct response.
0.4.1 – 0.4.4the game-file check became real2026-05-01 – 05-06
The game-file check became real, plus junk-session handling and behind-the-scenes tooling.
- The game-file check now actually compares your files against the league's known-good versions, instead of only listing them. A clean result now means your files genuinely match.
- Empty or junk sessions are turned away. A session that lasted a couple of seconds with nothing captured no longer clutters review.
- Clearer messages if the app can't find your session bundle to upload, plus admin-side tooling with nothing for you to do.
Archive note · 2026-08-11
Two admissions behind the tidy grouping. First: the numbering in this stretch was genuinely tangled — the client and the server were versioned on separate tracks for a few days (there are two different releases both numbered 0.4.2), which the flat "0.4.1–0.4.4" above papers over. Second: the 0.4.4-era client shipped reporting the wrong version number ("0.4.2"), because a version bump missed the component the display reads from. That mislabeled-binary class is what later forced the build system onto a single version source (0.7.2), so it cannot happen again by construction.
0.3.2 – 0.3.10early internal builds2026-04-24 – 04-28
Early internal development builds, before there were public testers. Foundational anti-cheat scaffolding and admin/backend plumbing, with no tester-facing changes.
Archive note · 2026-08-11
"No tester-facing changes" is not quite what the engineering record shows: this stretch included a client fix for the Save-Password checkbox refusing to unstick (found in a desktop smoke-test), the first Discord verdict alerts computed from session bundles, and hardware-ban infrastructure brought up in log-only observation mode — deliberately not enforcing, to tune against false lockouts before it could ever block a login. Plumbing, mostly — but not nothing.
0.2.0the earliest build2026-04-13
The earliest internal build (pre-public). Foundational anti-cheat scaffolding, including the admin session-report format. Nothing tester-facing yet.
Corrected in public
when a published claim turns out wrong, the correction ships and the original stays readable
- read that release
0.8.2 — first login skipped the minimum-version check. Every later login enforced it; the one that set your password did not, and a client too old to log in could still set itself up. Closed with this release.
- read that release
0.8.2 — the in-client disclosure window carried five wrong claims — loaded DLLs, the DNS cache, a capture fallback removed in 0.7.8, what “excluded” leaves behind, and what is read outside the game folder. The wording was wrong, not the client; 0.8.1 had also shipped two additions the window did not name.
- read that release
0.8.2 — the statement on how the client interacts with the game was short by three touches and wrong about its own guard test — all three older than this release and read-only. Re-verified against 0.8.2; the native footprint has not grown since 0.8.0.
- read that release
0.8.2 — the lines explaining a verdict were not being saved from 28 August until this release; the verdicts were. Older sessions get theirs back when re-run.
- read that release
0.7.8 — the version was advertised before the build existed. Between 2026-08-08 and 2026-08-11 the update check offered 0.7.8 while the newest signed client was 0.7.7 — an update attempt downloaded ~100 MB and landed you back on 0.7.7. Closed 2026-08-11 when the signed 0.7.8 client shipped.
- read that release
0.7.6 — the field manual said a forgotten Stop Session discarded the session. False since 0.6.8 — it is packaged and uploaded either way. The page said otherwise for a month.
- read that release
0.7.6 — keystrokes are recorded by key, not just timing — always true, never spelled out until this release. Two more disclosure corrections shipped alongside it (network-scan cadence, the
Half-Life/folder check). - read that release
0.7.6 — a long-running case was closed as a false positive: the signature came from the player's hardware, not from anything they did.
- read that release
0.7.5 — an input check was reading a hardware artifact rather than behaviour — corrected, and the players it had touched re-checked.
- read that release
0.7.2 — the in-client disclosure understated what was collected and wrongly claimed personal binds are never uploaded; the served build was rebuilt the same day, before anyone had downloaded it.
- read that release
0.7.2 — how your game rendered had been counting against you: capture blindness under exclusive-fullscreen OpenGL contributed to severity until this release zeroed it.
- read that release
0.7.1 — server passwords had reached bundles in plaintext before redaction-before-bundling shipped.
- read that release
0.7.0 — a scan that found nothing could report "all good": installs in non-standard locations were sometimes never scanned, and still passed.
- read that release
0.6.9 — every PC carried dozens of meaningless "unsigned driver" flags, and crash-recovered uploads were being read as tampering.
- read that release
0.6.5–0.6.7 — the AC made the in-game cursor disappear for some fullscreen setups, and Hall-effect keyboards' legitimate speed was being mistaken for cheat firmware.
- read that release
0.6.0–0.6.3 — screenshots could freeze while reporting themselves healthy — and the first fix shipped for it did not hold; the notes for each release say so about the one before.
- read that release
0.5.9 — a detector was flagging clean play from how some testers' hardware naturally behaves.
- read that release
0.5.7 — one tester's entire match uploaded as black screenshots while they were clearly playing.
- read that release
0.5.6 — the "update required" screen was a dead end — no Download button, for every tester who ever hit it.
- read that release
0.5.5 — false positives had been quietly polluting reports: community sound files read as "modified", stock Windows drivers as "unsigned", one keypress counted twice.
- read that release
0.5.1 — the in-client "what we collect" panel had drifted into factually incorrect claims across three releases.
- read that release
0.4.5 — a readable copy of your session bundle sat unencrypted in Documents until this release encrypted it and deleted it after upload.
- read that release
0.4.1–0.4.4 — the game-file check had been listing files, not comparing them — a "clean" result before this did not mean your files matched anything. One build in this series also shipped reporting the wrong version number.