## Problem Kattis and USACO login and submit were broken in multiple ways discovered during manual end-to-end testing. Neither platform could successfully authenticate or submit through the plugin. ## Solution **Kattis:** switch login from `POST /login/email` (requires CSRF fetch) to `POST /login` with `script=true` (200 = success, 403 = bad credentials); remove `_check_kattis_login` entirely since Kattis blocks all GET requests from httpx; add submit retry on `"Request validation failed"` to handle expired sessions; fix language ID `"C++17"` → `"C++"`. **USACO:** fix login field `user` → `uname`; fix success check to `code==1`; fix submit endpoint to `submit-solution.php`, file field to `sourcefile`, hidden field extraction off-by-one (`group(2)` → `group(1)`); fix `_pick_lang_option` loop order (keywords outer, options inner) so specific keywords like `"c++17"` match before broad ones like `"c++"`. **`submit.lua`:** absolutize source file path via `fnamemodify(..., ':p')` before passing to the scraper — Python is spawned with `cwd=plugin_path` so relative paths silently fail with `FileNotFoundError`. **Both platforms:** remove cookie fast path from `login` subcommand so credentials are always validated, preventing stale cookies from masking wrong credentials. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| atcoder.py | ||
| base.py | ||
| codechef.py | ||
| codeforces.py | ||
| cses.py | ||
| kattis.py | ||
| language_ids.py | ||
| models.py | ||
| timeouts.py | ||
| usaco.py | ||