Spar v0.3.0
Spar now brings Codeforces into the same adaptive practice loop. Connect a
Codeforces account and Spar remembers the browser identity in its own managed
profile, then uses your solved history to select the next appropriate problem.
Run uses the local sample harness; Submit is the explicit remote-judge action.
The new Problems page lets you browse every reachable problem, filter by
provider and difficulty, and open the one you want directly. Source problems
keep their original statements and examples, while Spar's surrounding workspace
gives you the same editor, runner, evidence, and coaching experience.
Downloads
| Your machine | File |
|---|---|
| Mac, Apple silicon | Spar-0.3.0-arm64.dmg |
| Mac, Intel | Spar-0.3.0.dmg |
| Windows | Spar-0.3.0-x64.exe |
| Linux | Spar-0.3.0-x86_64.AppImage or Spar-0.3.0-amd64.deb |
These builds are not code-signed. On a Mac, right-click the app and choose
Open the first time, or run xattr -d com.apple.quarantine /Applications/Spar.app.
On Windows, choose More info -> Run anyway.
Also in this release
- Adaptive source assignment. Spar considers your sourced practice history
when selecting the next challenge, so it avoids treating previously solved
problems as new work. - Direct problem opening. Choose a problem from the catalog and open its
dedicated challenge workspace without routing the choice through the agent. - Reliable challenge workspaces. Existing learner edits are preserved when
challenge files are recovered, including C++ workspaces that must not be
opened as a header file. - A clearer sourced-problem view. Provider branding, statements, examples,
language scaffolding, and result presentation now match the actual source
rather than flattening it into a synthetic prompt.
Known limits
- JavaScript, TypeScript, and C++ only.
- Builds are unsigned and not notarized.
- macOS is the platform the chrome has been tuned on.
- Auto-update is opt-in via
SPAR_ENABLE_UPDATES=1. - Codeforces submission requires an authenticated browser session; running
samples remains entirely local.