## Problem Two gaps in `commands/init.lua`. Codeforces contest IDs were passed through raw, so full URLs (e.g. `https://codeforces.com/contest/1933/problem/A`) or problem IDs with trailing letters (e.g. `1933A`) caused scraper URL construction to fail. Separately, action commands like `:CP run` silently failed when invoked with no active contest instead of attempting to recover from the current file's cached state. ## Solution Add `canonicalize_cf_contest` to normalize URLs and strip trailing problem letters in `parse_command`. Add a guard in `handle_command` that calls `restore_from_current_file()` before dispatching any contest-requiring action when no platform is active, returning early only if no cached state is found. Closes #306. Closes #308. |
||
|---|---|---|
| .. | ||
| commands | ||
| pickers | ||
| runner | ||
| ui | ||
| cache.lua | ||
| config.lua | ||
| constants.lua | ||
| credentials.lua | ||
| health.lua | ||
| helpers.lua | ||
| init.lua | ||
| log.lua | ||
| race.lua | ||
| restore.lua | ||
| scraper.lua | ||
| setup.lua | ||
| state.lua | ||
| stress.lua | ||
| submit.lua | ||
| utils.lua | ||
| version.lua | ||