Codeforces WorkbenchPart of AC-Stride: VS Code extension, Codeforces CLI, and product website. The Marketplace extension identity is A Codeforces extension for desktop VS Code, with C++, Python, Java and Kotlin support and English, 简体中文, Русский and 日本語 interfaces. The extension uses a pinned, embedded ACStride Codeforces Client as the sole Codeforces client for metadata, statements, samples, images, submission records and rankings. The anonymous statement downloader, private Python runtime, curl_cffi, CA certificates and Codeforces Client are bundled in the platform-specific VSIX: no user-side Go/Python/pip setup or extra downloads. What is included
Public downloads and rankings remain anonymous. One-click submission uses Codeforces Client's experimental session/submission commands only after explicit user action and confirmation. Sign in from the Codeforces account section at the top of Settings, using native VS Code username/password inputs; only Codeforces Client receives credentials via stdin, and it stores the resulting session in the OS keyring. The extension never stores passwords or imports browser cookies. Use AC-Stride: Sign in to Codeforces to reconnect and Sign out of Codeforces to remove the local session. Login and automatic submission have not been verified against a real account. Site verification/2FA may prevent them. Unknown submissions are never automatically resent. Receipts survive restart and are checked against exact source identity before an official submission ID is monitored. An unknown receipt may require checking the official website; do not repeatedly submit. No CAPTCHA is solved or bypassed. The CLI owns all Codeforces HTTP, statement/sample parsing and image downloads. The extension validates structured results and sanitizes HTML for display. Tools are bundled in the VSIX with no runtime downloads. Start here
The built-in anonymous downloader is not a guarantee against site verification. No CAPTCHA is solved or bypassed by the extension. Failed downloads do not block local coding/testing or erase saved work. An absent/incompatible bundled executable reports a reinstall-the-correct-VSIX error; AC-Stride never silently downloads components or falls back to installing pip packages. No system Python changesThe private runtime lives only inside AC-Stride's extension directory and is launched by Codeforces Client using an install-relative absolute path as a short-lived child process. It does not install a system interpreter, modify PATH/environment variables, register file associations, install packages in user environments, start a browser or listen on a port. Python/native-library injection variables are removed only from the child's environment. HTTPS uses the bundled certifi CA store; standard proxy environment settings remain available. New CA/native-library versions ship with extension updates, not runtime component installers. Existing OS security controls are not bypassed. This runtime is exclusively for public downloads, not for executing solutions. The solution Python interpreter/compiler remains user-configurable and separate. If a problem cannot be downloadedDownloads retry automatically up to four times per problem. Selecting a failed problem starts another bounded attempt cycle; the statement pane updates on success/failure. You can keep coding and editing custom cases while waiting. Imported samples refresh the open test view without discarding custom drafts. Existing code, tests and cached statements are preserved. Independent Codeforces problemsUse the plus beside Codeforces Problems, then paste a regular contest/problem URL, a problemset URL, or an ID such as All three sidebar lists use the original import timestamp, newest first. Refreshing, reopening and switching languages preserve it. Older data uses the original folder creation time as a fallback. New imports use the global default language; existing solutions keep their selected language. A contest statement's rail has a rankings-style icon that returns to that contest's details. Local practiceAC-Stride: Create Local Problem works independently of Codeforces. Enter an ID/title; the language comes from the default programming language setting. The default template sums two integers with a Local AC is not official acceptance. The default checker compares tokens, ignoring whitespace but preserving case and numeric spelling. Uncheck expected output for run-only mode; blank expected output is a real expectation. Memory use is not measured, and wall-clock timings are not Codeforces timings. Local programs execute on your computer: this is not a security sandbox. Output is capped at 1 MB per process, compilation at 30 seconds, and each test has a configurable wall-clock limit. SettingsThe AC-Stride sidebar has three native peer views, independently toggleable from the container’s “…” menu. Each has one plus action: import a contest, import a Codeforces problem, or create a local problem. The native VS Code extension settings page starts with an Open AC-Stride settings panel command link above the interface-language selector. The settings gear is in the contest view toolbar; stable VS Code APIs do not support adding a custom gear to a multi-view container title. Click a contest to open its information page. Global Settings contains Codeforces login, interface language, your handle, C++/Python tools/arguments/templates, local time limit and environment checks. Contest information and statements share one editor tab named after the contest. The left rail combines the overview/rankings icon and problem buttons; there is no Problems tab. The header shows an ended label or countdown. There is no per-contest settings tab. No downloader-status panel or center-navigation button crowds Settings. Language applies immediately without discarding open forms or test drafts; statements, code and raw tool diagnostics stay in their original language. Choose User settings or This workspace before editing tool/tracking settings. Workspace settings override user settings; environment checks use the active saved configuration. Save/discard draft changes before switching scope or contest. Language is always an application-level user preference. Archive preserves all local code/tests. Environment checks are at the top of Settings. Check all (自动检测) checks configured C++ compilation/execution and Python execution, continues if one fails, and marks each result separately. It does not install tools, scan arbitrary executables or change your configuration. Passed checks show a green tick; failures have expandable diagnostics. Changing tool configuration clears previous ticks, and checks must be rerun after reloading VS Code. Under Code templates, choose C++ or Python on the left and paste starter code in the editor on the right. Drafts are independent, so switching the language does not lose edits. Save Settings to persist them at the selected user/workspace scope; Restore default fills the built-in template.
C++ completion comes from your installed language extension, not AC-Stride. Python syntax/runtime errors show tracebacks. Every test uses a fresh process. C++ source snapshots compile once per run; Python executes a source snapshot with UTF-8/unbuffered mode. The macOS compiler helper detects the active Apple SDK where needed. UI text is maintained in four JSON catalogs shared by React and the extension host, with key/parameter checks and English fallback. Native static VS Code command/menu/configuration labels use generated Workspace and migration
Solutions, saved tests and cached public data persist across restarts. Run results are session-only. Archive stops background contest work; reimport never overwrites solutions/custom tests. Existing local-practice and contest folders remain readable. Legacy browser profiles and 0.5's download venv are not automatically deleted and are not used. Modern Codeforces Client sessions live in the OS keyring; modern submission receipts/source snapshots live in its private state directory. Extension tracking metadata lives in VS Code global state and contains no passwords/cookies/source. The removed Development and verificationNode.js 24 LTS is required for development. Developers/CI only need Python 3.10+ to build the downloader. Its pinned build dependencies install into the git-ignored
Set Live public checks are opt-in ( Architecture: Only regular public contests and desktop single-folder file workspaces are supported. Gym/group/private contests, virtual participation, stress testing, custom checkers and web-only VS Code are out of scope. Public API data may be unavailable, frozen, delayed or limited to recent submissions. The publisher is a development placeholder, no Marketplace release is configured, and no open-source license has been selected. Background rankings refresh only while the Rankings tab is visible. Submission refresh normally runs at 30-second intervals, with faster polling for known pending submissions. A background network failure keeps cached data and shows a section-specific notice rather than a persistent global error. Diagnostics identify the contest and operation in the AC-Stride · Codeforces output channel. Manual operation failures still report errors. Public API operations have a 25-second total deadline (including tool-side pacing); downloads use a longer deadline. AI connection and statement translationSettings has four tabs: Environment checks, Basic settings, Coding settings and AI assistance. Configure an OpenAI-compatible Base URL and model under AI assistance; API keys are stored in VS Code SecretStorage and bound to the endpoint. Test connection displays the returned message or error. Under AI assistance, enable statement translation, optionally translate automatically after import, and edit the English default prompt. Choose a target language; every AI requests use a shared input/output cache before transport. It coalesces identical in-flight requests, runs at most ten model calls concurrently, and uses a persisted LRU under extension global storage. Configure its enable switch, entry limit (default 100) and storage limit (default 50 MB) in AI assistance. Either limit evicts least recently used entries; oversized results are returned without displacing existing entries. Disabling caching preserves saved entries but skips request reads/writes. Connection tests always bypass caching. Cache identity covers the actual endpoint, model and fully rendered messages, partitioned by a credential digest; raw API keys are never persisted. Failures are not cached. Translation rendering separately sanitizes cached/generated HTML. Java and KotlinInstall a JDK (17 or newer recommended). Kotlin also requires the standalone Kotlin compiler on PATH. These solution toolchains are detected locally, rather than bundled into the extension. In Settings → Coding, choose Java or Kotlin as the default language and customize the starter code. Settings → Environment checks compiles and runs a small program for each language.
AI Hint, Debug and CodingConfigure and test your provider under Settings → AI assistance. The original English statement is used even while a translated view is selected. Please do not use these features during an ongoing contest.
Each feature has a visibility switch, response-language selector, and editable prompt. Save AI assistance settings to apply them. Restoring a default prompt requires confirmation and updates only the draft until saved. Incremental downloadsContest import fetches a lightweight problem list without loading the complete leaderboard. Codeforces Client downloads the first problem's statement and samples first, then starts two FIFO consumers for the remaining problems. Completion order can differ when requests take different amounts of time. Standalone imports download just the requested problem. Statements and samples become usable before images finish. Images are cached in a separate background queue and update the open statement automatically. Public reads use one persistent Codeforces Client process and a two-process anonymous transport pool to reuse network connections. Closing the window cancels pending work and reaps those processes; cached statements, code and tests remain available. Existing request pacing and bounded retry behavior remain in place. Full rankings are fetched for the visible overview after a statement is available, or when explicitly refreshed. Release processThe first public preview is 0.1.0. Publishing a GitHub Release starts the four-platform build, attaches verified VSIX packages and SHA256 checksums, and publishes the same packages to Marketplace when authentication is configured. See the release runbook for one-time authentication setup, release channels and retries. |