AutoJudge Contest
Compete in AutoJudge programming contests without leaving VS Code: read the problems, test locally, submit, and follow your verdicts and the scoreboard from the editor.
Why use it
- Read problems in VS Code. Statements open as Markdown pages next to your code, with each public test case in a copyable block.
- Test with the official samples. Export a problem's public tests as
.in / .out files beside your solution in one click.
- Submit safely. Submit the file you are editing, pick the problem from a short list, and confirm before it goes to the judge.
- See why you got Wrong Answer. Verdicts arrive as notifications, and the submission page shows an inline diff of your output against the expected one.
- Keep an eye on the clock. The status bar shows the time left, your rank, and how many submissions are being judged.
- Follow the live scoreboard. The Standings view ranks every team and stars yours.
Features
Contest Explorer, Standings, and the status bar
- The contest header shows the contest name and its phase: Running, Frozen, Ended, or Not started.
- Problems are listed by title in contest order, as on the AutoJudge website. A filled balloon marks a solved problem and a hollow ring one you have not solved yet, with your attempt count beside it.
- The filter button in the view title switches between all problems and unsolved problems only. VS Code remembers your choice.
- Each problem lists its own submissions, newest first, with the verdict and how long ago it was sent (
5 min ago, 1h20m ago). A pending submission shows a spinning Pending label, and its problem shows Judging…, until the verdict arrives.
- Standings ranks teams by solved problems, then by lowest total time in minutes (
3 solved · 287 min). Your team is starred and marked (you). A notice appears while the scoreboard is frozen. Click a team to see its solved problems and total time.
- The first Standings row, Full standings, opens the whole scoreboard as a table: every team, a ✓ under each problem it solved, its solved count, and its total time. Problem columns are labelled A, B, C… and a legend under the table gives each problem's name.
- The status bar shows
time left · #rank · Judging, turns to a warning colour in the last 15 minutes, and opens the Contest Overview page when clicked.
Problem statements and public test cases
- Click the book icon on a problem to open its statement as a Markdown page. Every public test case is a numbered Input / Output block you can copy.
- Click the beaker icon to export the public tests as
<problem>-testcase-01.in / .out files in the active file's folder (or the only workspace folder, or a folder you choose). Existing files are replaced only after you confirm, and you can open the first case straight away.
Verdicts with an output diff
- Each verdict arrives as a notification with View Details, plus Compare Output when the judge reported both the expected and the received output.
- The submission page heading shows ✓ or ✗ with the verdict and problem. Below it are the verdict, problem, submission number, submit time, time or penalty, file, and language, then the judge's hint, an inline diff, and the raw outputs. In the diff, your lines are marked
- (red) and the expected lines + (green).
- Compare Output opens the same comparison in VS Code's side-by-side diff editor, with your output on the left and the expected output on the right.
- Submissions still being judged keep being checked, even after you restart VS Code.
Submitting
- Submit from the cloud upload icon on a problem row, from the same icon in the editor title bar, or with AutoJudge Contest: Submit Active File….
- The picker lists the problem you last submitted that file to first, and leaves out problems you have already solved.
- A confirmation dialog shows the file and problem before anything is sent. Turn it off with
autojudgeContest.confirmBeforeSubmit (unsaved files are always confirmed before they are saved and submitted).
- The new submission appears under its problem as Judging…, and a second submission is refused until the first has reached the judge.
Getting started
- Click the AutoJudge Contest icon in the Activity Bar.
- Click Log In with Browser. Your browser opens the AutoJudge team login: enter the team code and PIN from your team card (or confirm the session you are already logged in with), then allow the browser to open VS Code.
- Back in VS Code, the Contest Explorer lists the problems. Before the start it shows Contest has not started yet, and the problems load on their own when the contest begins.
- Open a problem with the book icon, export its tests with the beaker icon, write your solution, and submit it with the cloud upload icon.
Your session lasts the whole contest and is restored when VS Code restarts. Log in again if contest staff reset your PIN or another login replaces it.
[!NOTE]
Log in with a single VS Code window open. The browser hands the login back to whichever window VS Code chooses, which may not be the one that started it.
Commands
All commands are in the AutoJudge Contest category of the Command Palette.
| Command |
What it does |
| Log In |
Opens the browser login and connects VS Code to your team session. |
| Log Out |
Forgets the session on this computer (the team session stays active on the server). Also in the … menu of both views. |
| Refresh |
Reloads the contest, problems, submissions, and standings. |
| Open Contest Overview |
Opens the contest's phase, schedule, rules, and your team's position. |
| Open Problem Statement |
Opens a problem statement. Asks which problem when run from the Command Palette. |
| Submit Active File… |
Submits the active source file to a problem you pick. |
| Export Public Test Cases |
Writes a problem's public tests as .in / .out files. |
| Open Submission |
Opens a submission's details. Contest Explorer only. |
| Open Team Details |
Opens a team's rank, solved problems, and total time. Standings only. |
| Open Full Standings |
Opens the whole scoreboard as a table with a column per problem. Also the first row of Standings. |
| Compare Expected and Received Output |
Opens a side-by-side diff of a submission's received output (left) and expected output (right). Contest Explorer only. |
| Show Unsolved Problems Only |
Hides solved problems in the Contest Explorer. Also the filter button in its title bar. |
| Show All Problems |
Lists every problem again. Replaces the filter button while unsolved problems only are shown. |
Settings
| Setting |
Default |
Description |
autojudgeContest.baseUrl |
https://api.autojudge.io |
AutoJudge API address. Base paths such as https://example.com/api are supported. |
autojudgeContest.webUrl |
https://autojudge.io |
AutoJudge website opened for the browser login. |
autojudgeContest.pollIntervalMs |
5000 |
How often, in milliseconds, a pending submission is checked for its verdict (minimum 1000). |
autojudgeContest.confirmBeforeSubmit |
true |
Ask for confirmation before submitting the active file. |
baseUrl and webUrl are application-scoped (set them in your user settings) and take effect without reloading the window. The Standings view refreshes every 15 seconds while visible and every 60 seconds while hidden.
Supported languages
.c, .cpp, .java, .js, .php, and .py source files.
Requirements
- VS Code 1.90 or later.
- A team in a running AutoJudge contest, on autojudge.io or on a self-hosted AutoJudge server.
Privacy and security
- You never type your team code or PIN into VS Code. The login happens on the AutoJudge website, which hands VS Code a session.
- The session token is stored in VS Code's SecretStorage (your operating system's credential store) and is never written to settings, files, or the output log.
- Log Out removes the token from this computer.
Run your tests locally
Pair this extension with AutoJudge Code Runner to compile, run, and check your solution against the exported test cases without leaving the editor.
Self-hosted contests
AutoJudge is open source: werlang/autojudge. To use your own server, set autojudgeContest.baseUrl to its API address and autojudgeContest.webUrl to its website address in your user settings. An invalid address is reported with an Open Settings button as soon as the extension needs the server, including when you start Log In.
Contributing
Issues and pull requests are welcome on GitHub. Development runs in Docker Compose:
docker compose up -d --build
docker compose exec extension npm install
docker compose exec extension npm test
docker compose exec extension npm run build # package the .vsix
Press F5 in VS Code to launch the Extension Development Host.
License
MIT
| |