unnamed

unnamed User Guide

1. What is this site?

Default layout: sidebar on the left, editor on the right.

The sidebar holds two panels: Explorer and Test cases.

2. How do I run code in the browser?

  1. Download the local runtime. Click the gear icon in the sidebar header, open the Settings tab, then go to Local runtime.
  2. Click Download next to C++ or Python 3. Roughly 50MB and 24MB, downloaded once each.
  3. Wait for the button to read Ready. The current stage is announced while it downloads.
  4. Make sure the engine under Judge is Local WASM sandbox. That is the default for new visitors, and it needs no service URL.
  5. Press ⌘/Ctrl + Enter, or click the ▶ in the footer of the Test cases panel.

The sidebar expands automatically before a run and switches to Test cases.

Need the space back? The Ready row has Uninstall on the right.

3. Which judge engine should I pick?

Switch it under Settings › Judge.

Engine Where it runs Needs a service URL? Needs the network?
Local WASM sandbox (default) Your own browser; supports C++ and Python 3 No — it is a built-in engine Downloads the runtime once, then works offline
Piston A judge service you host yourself Yes Yes
Judge0 A judge service you host yourself Yes Yes
Self-test (does not run code) A local demo No No

A remote engine means hosting the service yourself and entering its URL under Judge.

4. How fast is it in the browser?

There is no single scaling factor.

These are measurements: Apple M5, headless Chrome.

Both sides run with -O2.

The sandbox uses clang 8.0.1; the native column uses the system clang.

The sandbox column is the run phase — the same thing the card timing measures.

Case Sandbox run phase Native Ratio
Pure compute, 5×10⁷ rounds of xorshift 132 ms 74.4 ms 1.77×
Sequential access, 8×10⁶ ints 26 ms 7.4 ms 3.51×
Sorting 500k numbers 60 ms 11.8 ms 5.08×
Sorting 2M numbers 247 ms 36.7 ms 6.73×

Why doesn't the empty-program comparison count?

The empty-program comparison is an illusion.

That 4.4 ms on the native side is all process startup.

The 3.0 ms in the sandbox is WASI instantiation.

Neither number contains any computation, so comparing them means nothing.

For a real comparison, look only at the rows that actually compute.

5. How do I import a problem?

Use the CC for Web extension distributed from this site.

  1. Open Settings › Browser extension: that group detects your browser and offers one matching path — Firefox gets a one-click Firefox version, other Chromium browsers get a Download button plus the manual steps.
  2. (Chromium) Unzip the downloaded archive.
  3. (Chromium) Open chrome://extensions in the address bar (edge://extensions on Edge) and turn on Developer mode in the top right.
  4. (Chromium) Click Load unpacked and select the folder you just unzipped.
  5. Back on this site, click Check again in that group. The status will show the version.
  6. Open any problem page on an online judge and click the extension icon in the browser toolbar.

6. How are verdicts and the time limit calculated?

One card per test case, holding the input and the expected output.

The actual-output field below is read-only, with a copy button in its top right.

The blank strip in the middle of a card is the “run this case only” button.

Verdict Meaning
AC The program finished normally and its output matches the expected output
WA The program finished normally and its output differs from the expected output
CE Compilation failed
TLE The run exceeded the current time limit
RE Runtime error — the program exited abnormally
ERR An environment problem such as an unreachable judge service. Not a problem with your code

After you change your code or the input, the previous verdict is marked Result stale.

What exactly do the time limit and the elapsed time measure?

7. How do I use the file tree?

  1. The header has two buttons: New file and New folder.
  2. It goes into whichever row is selected: click a folder to select it (the new entry lands inside it), or click the empty area below the tree to select nothing (it lands in the root).
  3. To place it somewhere specific: right-click that folder › New file / New folder.
  4. Type a name and press Enter. Only the stem is selected, so you do not have to retype the extension.

Right-clicking a file also offers Rename and Delete.

What does a new file start with?

A new file is mapped by its extension to a language and filled with that language’s template: .cpp gets the C++ template, .py the Python one and .md the notes template. Code files created by the problem importer use the same templates.

An unrecognized extension (say .c or .txt) yields an empty file. Edit the three templates under Settings › Templates; the text is written as-is with no variable substitution, and Restore default on each one brings the built-in back. The Enable templates switch at the top of that section turns the whole feature off: new files and imported problem code then start empty, while the template text is kept as-is and reused once you switch it back on. Both the switch and the templates travel with cloud sync.

What goes into Problem info?

Imported problems are layered as <year-month>/<OJ>/<difficulty> directly under the workspace root, with the problem title as the file name.

Problem info and captured samples live on the code file itself, so nothing extra shows up in the tree. The importing extension creates the 未分类 folder under its Chinese name in either interface language.

How do I write notes (Markdown / LaTeX)?

Notes are just a .md file: click New file in the header, rename it to “notes.md” and press Enter. Open it and a toolbar appears above the editor, with the word count and the view buttons at its right end.

  1. 14 toolbar buttons: bold, italic, strikethrough, inline code, heading, quote, bullet list, numbered list, code block, link, image, formula, table and horizontal rule. Hover one to see its shortcut — bold is Mod + B.
  2. The three view buttons at the right end (editor only / split / preview only) switch the layout at any time, and Mod + \ cycles through them; the button next to them gives the editor the whole window, and Esc leaves it.
  3. Write formulas as $inline$ and $$on their own line$$; the preview renders them as LaTeX.

The preview needs a one-time renderer download (marked + KaTeX, about 578KB) — like the local runtime, it is downloaded once and can be uninstalled at any time.

Notes are not judged: opening a .md greys out the run button, and Mod + Enter will not start a compilation.

Add test case is greyed out along with it — test cases hang off the current file, and a file like a note has nowhere to run them. The reason is printed in the panel footer.

8. What shortcuts are there?

On macOS Mod is ⌘; on every other platform it is Ctrl.

Action Default combination
Run all test cases Mod + Enter
Show / hide the sidebar Mod + B
Switch sidebar panel Mod + Shift + E
Swap the sidebar side Mod + Shift + B
Add a test case Mod + Alt + Enter
Open / close settings Mod + ,

9. How do I tweak the interface?

  1. Switch panels: click the pill switch on the left of the sidebar header.
  2. Toggle the settings tab: click the gear in that header.
  3. Collapse the sidebar: single-click the divider between the two columns; click again to expand.
  4. You can also drag the divider to the edge; drag it back out to expand again.
  5. Move it to the other side: Settings › Appearance › Sidebar position.
  6. Scale the interface: Settings › Appearance › Interface scale — 100% by default.
  7. Change the colours: Settings › Appearance › Theme — dark / light.

Collapsing only hides the sidebar. Neither the test cases nor the expanded folders are lost.

Keyboard: focus the divider with Tab, then nudge the width with ← / →.

On touch screens the divider's hit area widens on its own, which makes it easier to grab.

It only collapses at the very edge and only expands 60px away from it — the two thresholds are deliberately staggered.

10. How do I install it and use it offline?

  1. Open Settings › App.
  2. The Install button only lights up once the browser considers the site installable.
  3. Click Install and confirm the prompt.
  4. After that, opening it from the desktop or home-screen icon gives you a standalone window with no address bar.

Besides the web version, native builds for macOS, Windows and Android are in development: compiling and running happen natively on your machine instead of in the browser sandbox, so they are faster and can use the full local toolchain. The web version is unaffected and keeps being maintained; download details will be added here once the native builds are ready to ship.

The desktop builds also add a second kind of workspace. Under Settings › Workspace you can open a folder on your machine directly: the file tree is that directory itself, so creating, renaming and deleting all act on real files on disk, and changes made in another editor are picked up automatically. Problem info and captured samples live in .unnamed/ inside the folder (never in the files themselves), so they travel with it. To switch back, click Back to virtual workspace in the same place — the interface reloads.

11. Common questions

Does my code get uploaded to a server?

With the local sandbox, no. Your code never leaves this device.

Switch to Piston or Judge0 and your code is sent to the URL you entered.

Do I need to be online?

Only the first time, to download the runtime — about 50MB.

After that it stays in the cache and works with no network.

Clear your browser data and you will have to download it again.

Which languages are supported?

The local sandbox supports C++ and Python 3.

For anything else, switch to Piston or Judge0.

What you get depends on the service you connect to.

Does the editor autocomplete?

Yes — but only for the three languages it knows: C, C++ and Python (.c, .cpp, .py). Start typing a prefix and the suggestion box appears on its own: arrow keys move through the list, Tab accepts the highlighted entry and Esc dismisses it.

There are three kinds of candidate: keywords, common standard-library names (vector, sort, printf, print) and snippets (main, fori, ifmain). Snippets carry placeholders — press Tab after accepting one to jump between them.

It is a lookup table, not a language service: it does not know your variable names or types, cannot jump to definitions and reports no errors. Words already used in the same file are suggested too. .md and other files are not covered.

Why is the first run so much slower?

The runtime is downloaded on the first run.

After that, the first case of every new piece of code pays the compilation cost once.

Running several cases against the same code compiles it only once.

A precompiled STL header is built in the background during idle time and never blocks you.

It covers only the 5 most common standard library headers. A failure to build it does not affect normal compilation.

Why doesn't the timing match other judges?

The timing here covers the run phase only, excluding compilation and queueing.

So the numbers come out smaller than on platforms that report total time.

Different engines and different machines are not directly comparable either.

Where is my data stored?

Preferences, drafts, test cases and the column split live in localStorage.

The file tree and the file contents live in IndexedDB.

The precompiled header lives in IndexedDB too.

All of it is confined to this browser on this device. Clearing your browser data clears it as well.

Are cloud-synced settings public?

Yes. Reading needs no sign-in, and there are two ways in: open Settings › Cloud sync, enter the Codeforces handle and click Import; or append the handle to the site URL, e.g. https://www.998244353.best/he-jie. Installed as a standalone app (PWA) there is no address bar, so use the former.

Import and Sign in are two different things: importing only pulls a public copy, needs no verification code, and does not bind this device to that handle.

After a successful import, upload or sign-in the address bar switches to site/handle (e.g. https://www.998244353.best/he-jie) — that address records “this is the setup I am using”, so you can bookmark it or send it to someone as is.

So clicking Upload local settings means you agree to make this configuration public.

Only preference keys are uploaded: theme, shortcuts, UI scale, sidebar side, column split, run time limit and the like.

The judge URL you entered, hand-written test cases, the file tree and file contents are never uploaded.

What if the extension cannot grab the problem?

First make sure this site is open in a tab.

Then check whether Browser extension shows a version number.

If it does not, click Check again; if that still fails, reload this page.

A reloaded extension loses touch with a page that has not been refreshed since.

12. Credits and open-source licences

Thanks to the authors and maintainers of the projects below.

The only things written for this site are the interface, the interactions and the judging logic.

Full licence documentation (with the version, licence and placement of every component): Third-party open-source components and licences.

Component Licence What it does here
Vue MIT The interface framework
Monaco Editor (Microsoft; the editor core of VS Code) MIT The code editor; bundled alongside it are marked (MIT) and DOMPurify (dual-licensed MPL-2.0 or Apache-2.0)
runno (@runno/wasi) MIT The WASI runtime behind the local sandbox: starts the instance, feeds it input, and interrupts it on a timeout (TLE)
LLVM / clang and lld Apache-2.0 WITH LLVM-exception The compiler and linker that build C++ locally (wasm build, 8.0.1)
wasi-libc Apache-2.0 WITH LLVM-exception The C standard library and startup code for that clang
libc++ / libc++abi MIT The C++ standard library (<vector>, <string> and friends)
compiler-rt Apache-2.0 WITH LLVM-exception The built-in functions in the compiler's runtime
CPython PSF License Runs Python 3.11 locally (wasm build)
seti-ui MIT The C++ icon in the file tree
Competitive Companion MIT The upstream project of the CC for Web extension (this site uses a fork)