## Problem AtCoder file upload always wrote a `.cpp` temp file regardless of language. CF submit used `solve_cloudflare=True` on the submit page, causing a spurious "No Cloudflare challenge found" error; `_wait_for_gate_reload` in `login_action` was dead code. Stale cookies caused silent auth failures with no recovery path. The `uv.spawn` ndjson path for submit had no overall timeout. ## Solution Replace AtCoder's temp file with `page.set_input_files` using an in-memory buffer and correct extension via `_LANGUAGE_ID_EXTENSION`. Replace CF's temp-file/fallback dance with a direct `textarea[name="source"]` fill and set `solve_cloudflare=False` on the submit fetch. Add a login fast-path that skips the homepage check when cookies exist, with automatic stale-cookie recovery via `_retried` flag on redirect-to-login detection. Remove `_wait_for_gate_reload`. Fix `_ensure_browser` to propagate install errors. Add a 120s kill timer to the ndjson `uv.spawn` submit path in `scraper.lua`. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| atcoder.py | ||
| base.py | ||
| codechef.py | ||
| codeforces.py | ||
| cses.py | ||
| kattis.py | ||
| language_ids.py | ||
| models.py | ||
| timeouts.py | ||
| usaco.py | ||