AI Slop Code Risk Monitor

Heroic-Games-Launcher/HeroicGamesLauncher

SlopCodeMonitor badge for Heroic-Games-Launcher/HeroicGamesLauncher Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A games launcher for GOG, Amazon and Epic Games for Linux, Windows and macOS.

1.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for Heroic-Games-Launcher/HeroicGamesLauncher, a TypeScript project with 12,558 GitHub stars. SynthScan examined 176,525 lines of code across 838 source files, recording 329 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.9 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

1.9
Adjusted Signal
1.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
12.6K
Stars
TypeScript
Language
176.5K
Lines of Code
838
Files
329
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 1.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 50 finding(s).

Hallucinated Dependency & Supply Chain Risk 7.6/100 · LOW

Are imports declared and package/API names verified? 279 finding(s).

Agent Over-Engineering Ratio 1.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 35 finding(s).

PR Review Velocity Impact 9.1/100 · LOW

Which changes need focused human review? 329 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 1MEDIUM 1LOW 327

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 329 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Fake / Example Data279 hits · 280 pts
SeverityFileLineSnippetContext
LOWpublic/locales/sk/gamepage.json242 "placeholder": {CODE
LOWpublic/locales/sk/gamepage.json340 "placeholder": {CODE
LOWpublic/locales/sk/translation.json521 "placeholder": "Sem vložte argumenty spúšťača",CODE
LOWpublic/locales/sk/translation.json560 "placeholder": {CODE
LOWpublic/locales/sk/translation.json720 "placeholder": "Vyberte presný priečinok na uloženie hier",CODE
LOWpublic/locales/sk/translation.json919 "placeholder": "",CODE
LOWpublic/locales/uz/gamepage.json3 "placeholder": {CODE
LOWpublic/locales/uz/translation.json564 "placeholder": "Launcher argumentlarini bu yerga qo'ying",CODE
LOWpublic/locales/uz/translation.json603 "placeholder": {CODE
LOWpublic/locales/uz/translation.json759 "placeholder": "Aniq saqlash o'yinlari papkasini tanlang",CODE
LOWpublic/locales/uz/translation.json943 "placeholder": "",CODE
LOWpublic/locales/pl/gamepage.json269 "placeholder": {CODE
LOWpublic/locales/pl/gamepage.json371 "placeholder": {CODE
LOWpublic/locales/pl/translation.json547 "placeholder": "Wstaw tutaj argumenty uruchamiania",CODE
LOWpublic/locales/pl/translation.json586 "placeholder": {CODE
LOWpublic/locales/pl/translation.json747 "placeholder": "Wybierz folder zapisu gier",CODE
LOWpublic/locales/pl/translation.json959 "placeholder": "Wprowadź swój klucz API SteamGridDB",CODE
LOWpublic/locales/vi/gamepage.json244 "placeholder": {CODE
LOWpublic/locales/vi/gamepage.json342 "placeholder": {CODE
LOWpublic/locales/vi/translation.json521 "placeholder": "Thêm Đối Số Trình Khởi Chạy ở đây",CODE
LOWpublic/locales/vi/translation.json560 "placeholder": {CODE
LOWpublic/locales/vi/translation.json720 "placeholder": "Chọn thư mục lưu trò chơi chính xác",CODE
LOWpublic/locales/vi/translation.json912 "placeholder": "",CODE
LOWpublic/locales/sv/gamepage.json247 "placeholder": {CODE
LOWpublic/locales/sv/gamepage.json349 "placeholder": {CODE
LOWpublic/locales/sv/translation.json525 "placeholder": "Ange argument för startprogrammet",CODE
LOWpublic/locales/sv/translation.json564 "placeholder": {CODE
LOWpublic/locales/sv/translation.json724 "placeholder": "Ange exakt mapp för sparfiler",CODE
LOWpublic/locales/sv/translation.json923 "placeholder": "Ange din API-nyckel för SteamGridDB här",CODE
LOWpublic/locales/ga/gamepage.json292 "placeholder": {CODE
LOWpublic/locales/ga/gamepage.json365 "placeholder": {CODE
LOWpublic/locales/ga/translation.json293 "placeholder": {CODE
LOWpublic/locales/ga/translation.json475 "placeholder": "Roghnaigh an fillteán cluichí sábhála cruinn",CODE
LOWpublic/locales/ga/translation.json806 "placeholder": "Cuir na hargóintí tosaitheora anseo",CODE
LOWpublic/locales/ga/translation.json967 "placeholder": "Cuir isteach d’Eochair API SteamGridDB anseo",CODE
LOWpublic/locales/he/gamepage.json129 "placeholder": {CODE
LOWpublic/locales/he/gamepage.json341 "placeholder": {CODE
LOWpublic/locales/he/translation.json452 "placeholder": "בחרו את תיקיית המשחקים המדויקת",CODE
LOWpublic/locales/he/translation.json727 "placeholder": "שימו פה ארגומנטים של הלאוונצר",CODE
LOWpublic/locales/he/translation.json765 "placeholder": {CODE
LOWpublic/locales/he/translation.json882 "placeholder": "",CODE
LOWpublic/locales/be/gamepage.json267 "placeholder": {CODE
LOWpublic/locales/be/gamepage.json366 "placeholder": {CODE
LOWpublic/locales/be/translation.json530 "placeholder": "Змесціце сюды аргументы праграмы запуску",CODE
LOWpublic/locales/be/translation.json569 "placeholder": {CODE
LOWpublic/locales/be/translation.json729 "placeholder": "Выберыце дакладную папку захаванняў гульні",CODE
LOWpublic/locales/be/translation.json930 "placeholder": "",CODE
LOWpublic/locales/da/gamepage.json292 "placeholder": {CODE
LOWpublic/locales/da/gamepage.json353 "placeholder": {CODE
LOWpublic/locales/da/translation.json457 "placeholder": "Vælg den nøjagtige gemte spilmappe",CODE
LOWpublic/locales/da/translation.json735 "placeholder": "",CODE
LOWpublic/locales/da/translation.json805 "placeholder": "Sæt Launcher-argumenterne her",CODE
LOWpublic/locales/da/translation.json940 "placeholder": {CODE
LOWpublic/locales/pt_BR/gamepage.json269 "placeholder": {CODE
LOWpublic/locales/pt_BR/gamepage.json376 "placeholder": {CODE
LOWpublic/locales/pt_BR/translation.json537 "placeholder": "Adicione os argumentos de inicialização aqui",CODE
LOWpublic/locales/pt_BR/translation.json576 "placeholder": {CODE
LOWpublic/locales/pt_BR/translation.json736 "placeholder": "Selecione a pasta exata com os saves",CODE
LOWpublic/locales/pt_BR/translation.json949 "placeholder": "Insira aqui sua chave de API do SteamGridDB",CODE
LOWpublic/locales/ja/gamepage.json247 "placeholder": {CODE
219 more matches not shown…
Hyper-Verbose Identifiers35 hits · 35 pts
SeverityFileLineSnippetContext
LOWmeta/lintTranslations.ts55function checkStringValueAgainstEnglish(CODE
LOWe2e/helpers.ts49async function resetLegendaryCommandStub(app: ElectronApplication) {CODE
LOW…rontend/screens/Settings/sections/SystemInfo/index.tsx54function SteamDeckSystemSpecifications({CODE
LOW…d/screens/Settings/sections/AdvancedSettings/index.tsx149 async function cancelEosOverlayInstallOrUpdate() {CODE
LOW…d/screens/Settings/sections/AdvancedSettings/index.tsx164 async function checkForEosOverlayUpdates() {CODE
LOW…brary/components/InstallModal/DownloadDialog/index.tsx195 async function confirmInstallBrokenAnticheat(path?: string) {CODE
LOW…nd/screens/Game/ModifyInstallModal/Legendary/index.tsx11export default function LegendaryModifyInstallModal({CODE
LOWsrc/frontend/helpers/index.ts137function getPreferredInstallLanguage(CODE
LOWsrc/frontend/helpers/library.ts268async function checkLaunchOptionsAndLaunch({CODE
LOWsrc/backend/save_sync.ts36async function getDefaultLegendarySavePath(appName: string): Promise<string> {CODE
LOWsrc/backend/launcher.ts1018function getKnownFixesEnvVariables(appName: string, runner: Runner) {CODE
LOWsrc/backend/launcher.ts1841function getRunnerCallWithoutCredentials(CODE
LOWsrc/backend/protocol.ts35export function shouldHideWindowForProtocolArgs(args: string[]): boolean {CODE
LOWsrc/backend/constants/environment.ts9function readFlatpakRuntimeVersion() {CODE
LOWsrc/backend/utils/compatibility_layers.ts363export async function getGamePortingToolkitWine(): Promise<CODE
LOWsrc/backend/utils/compatibility_layers.ts413export async function getSystemGamePortingToolkitWine(): Promise<CODE
LOWsrc/backend/utils/systeminfo/gpu/windows.ts73function getFormattedDriverVersion(CODE
LOWsrc/backend/utils/systeminfo/gpu/pci_ids.ts78async function populateDeviceAndVendorName(CODE
LOWsrc/backend/utils/os/path/index.ts11async function searchForExecutableOnPath(CODE
LOWsrc/backend/wine/manager/utils.ts87export async function updateWineListsIfOutdated(releasesData: ReleasesInfo) {CODE
LOWsrc/backend/wiki_game_info/applegamingwiki/utils.ts10export async function getInfoFromAppleGamingWiki(CODE
LOWsrc/backend/shortcuts/shortcuts/macos_shortcut.ts1function buildMacOsShortcutLaunchCommand(CODE
LOWsrc/backend/shortcuts/nonesteamgame/nonesteamgame.ts202function hasParameterCaseInsensitive(object: ShortcutEntry, key: string) {CODE
LOWsrc/backend/shortcuts/nonesteamgame/nonesteamgame.ts369function enableSteamClientApiOnNextStart(steamPath: string) {CODE
LOWsrc/backend/shortcuts/nonesteamgame/nonesteamgame.ts418function checkIfShortcutObjectIsValid(CODE
LOWsrc/backend/shortcuts/nonesteamgame/nonesteamgame.ts558async function addNonSteamGameViaSteamClient(props: {CODE
LOWsrc/backend/shortcuts/nonesteamgame/nonesteamgame.ts869async function removeNonSteamGameViaSteamClient(props: {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamUrlHandler.ts46async function addNonSteamGameViaUrlHandler(props: {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamUrlHandler.ts101function removeSteamShortcutWrapper(gameInfo: {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamClient.ts36async function getSharedJSContextSocketUrl(): Promise<string | null> {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamClient.ts65async function isSteamClientApiAvailable(): Promise<boolean> {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamClient.ts184async function addShortcutViaSteamClient(props: {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamClient.ts213async function removeShortcutViaSteamClient(appId: number): Promise<void> {CODE
LOWsrc/backend/shortcuts/nonesteamgame/steamClient.ts229async function setShortcutArtworkViaSteamClient(props: {CODE
LOWsrc/backend/storeManagers/gog/redist.ts114export function createRedistDMQueueElement(): DMQueueElement {CODE
Over-Commented Block10 hits · 10 pts
SeverityFileLineSnippetContext
LOWi18next-parser.config.js1module.exports = {COMMENT
LOWsrc/frontend/screens/Discounts/helpers.ts61// Translation keys below are referenced via template literals, so list themCOMMENT
LOWsrc/frontend/screens/Discounts/helpers.ts81// t('discounts.region.countries.NL', 'Netherlands')COMMENT
LOWsrc/frontend/helpers/gamepad.ts741 // const axes = controller.axesCOMMENT
LOWsrc/frontend/helpers/gamepad_layouts/nintendo.ts121 dPadAxis = axes[9]COMMENT
LOWsrc/backend/backend_events.ts21 wineVersionInstalled: (versionInfo: WineVersionInfo, path: string) => voidCOMMENT
LOWsrc/backend/utils.ts1141 // we have to iterate over every line (we can't just look at the lastCOMMENT
LOWsrc/webviewPreload/index.ts1// Preload script injected into store webviews (Epic, GOG, Amazon, Zoom).COMMENT
LOWsrc/common/typedefs/vite.d.ts1/// <reference types="vite/client" />COMMENT
LOWsrc/preload/api/misc.ts61COMMENT
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH.github/pull_request_template.md6 "AI used for feedback on exact implementation", "AI used for boilerplate in <file(s)>", "Entirely generated by AI")CODE
TODO Padding2 hits · 3 pts
SeverityFileLineSnippetContext
LOW…frontend/screens/Game/ModifyInstallModal/GOG/index.tsx151 // TODO: Handle errorCOMMENT
LOWsrc/backend/tools/index.ts83 // TODO: implement proper use of the -builtin using the WINEDLLPATH_PREPENDCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMsrc/backend/storeManagers/zoom/games.ts294 await pipeline(response.data, createWriteStream(downloadPath)) // Use pipeline for robust stream handlingCODE
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/backend/logger/log_writer.ts68 // NOTE: This function needs to be synchronous since, in practice, mostCOMMENT