v1.7.4 — Try login form before deciding the body is lite
Fix: avoid unnecessary retries on small bodies that actually work
v1.7.3 introduced lite-variant retries based on body size: any response
under 20 KB was assumed to be the anti-bot variant where the form is
unusable, so login() went straight to sleep+retry without trying.
Production showed this was too aggressive. On 2026-05-18 18:47–18:51,
Jose's check-in went through this sequence:
| Attempt | Time | Body | Tried to find form? | Result |
|---|---|---|---|---|
| 1 | 18:47 | 7778 B | skipped | 120 s sleep |
| 2 | 18:49 | 7098 B | skipped | 120 s sleep |
| 3 | 18:51 | 7608 B | tried (last attempt fallthrough) | found, login OK |
The third attempt's body was the same size as the previous two but the
form WAS usable. Most likely cause: the same BrowserContext keeps
cookies and asset cache across retries, so once Stencil's JS bundle is
cached the components hydrate even when CheckJC keeps returning the
stripped HTML.
Change
login() now always calls _find_login_elements right after the
goto, regardless of body size. Only enters the sleep+retry branch if
the search actually fails AND the body was under 20 KB. With Jose's
18:47 scenario this would have succeeded on attempt 1 instead of
waiting 4 minutes.
Body normal + form not found still propagates immediately — that
signals a real DOM change, which isn't fixed by waiting.
Image
ghcr.io/gonzalez8/checktime:1.7.4 / :1.7 / :latest
No schema changes. Same env vars as v1.7.3.
Upgrade
sed -i 's/^CHECK_TIME_VERSION=.*/CHECK_TIME_VERSION=1.7.4/' stack.env
docker compose pull app
docker compose up -d app