feat: anti-bot inspekce a vězení + přepínač hraní/objednávání
CI / Generate TypeScript types (push) Successful in 15s
CI / Server unit tests (push) Successful in 24s
CI / Build server (push) Successful in 31s
CI / Build client (push) Successful in 1m0s
CI / Playwright E2E tests (push) Successful in 1m30s
CI / Build and push Docker image (push) Successful in 1m6s
CI / Notify (push) Successful in 5s

- přepínač Hraní/Objednávání; v objednávání hra nic neruší, v hraní herní vrstva odstíní kliknutí
- scéna žije trvale (přepnutí režimu neobejde pavučinu, omráčení, zabavenou síťku ani ban)
- anti-bot: ovládání jen reálnou myší (isTrusted/webdriver), občasná motýlí inspekce (chyť korunovaného)
- neúspěch inspekce = zabavená síťka 45 s (opticky skrytá); opakovaně = serverový ban s mříží a odpočtem
- během banu server nekredituje úlovky (F5/přepnutí-proof)
- větší síťka se teď viditelně zvětší hned po koupi
- changelog route přeskočí vadný JSON (nespadne celý endpoint) + oprava changelogu

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stánek Pavel
2026-07-27 12:56:20 +02:00
co-authored by Claude Opus 4.8
parent 252d105408
commit 377a350211
11 changed files with 502 additions and 22 deletions
+2
View File
@@ -104,6 +104,8 @@ paths:
$ref: "./paths/butterflies/defeatCaterpillar.yml"
/butterflies/moth:
$ref: "./paths/butterflies/moth.yml"
/butterflies/inspectionFailed:
$ref: "./paths/butterflies/inspectionFailed.yml"
/butterflies/buyPremium:
$ref: "./paths/butterflies/buyPremium.yml"
/butterflies/waspSpray:
@@ -0,0 +1,12 @@
post:
operationId: reportInspectionFail
summary: >-
Zaznamená selhání anti-bot inspekce. Po několika selháních v krátkém okně
udělí perzistentní ban za podvádění.
responses:
"200":
description: Aktualizované statistiky (případně s aktivním banem).
content:
application/json:
schema:
$ref: "../../schemas/_index.yml#/ButterflyStats"
+4
View File
@@ -949,6 +949,7 @@ ButterflyStats:
- repellentUntil
- netTornUntil
- insuranceUntil
- banUntil
- upgrades
- daily
properties:
@@ -1003,6 +1004,9 @@ ButterflyStats:
insuranceUntil:
description: Časové razítko (ms epoch), do kdy platí pojistka proti zloději; 0 = neaktivní
type: integer
banUntil:
description: Časové razítko (ms epoch), do kdy platí ban za podvádění; 0 = bez banu
type: integer
upgrades:
$ref: "#/ButterflyUpgrades"
daily: