VS Code Chess

A VS Code extension that monitors your Chess.com Daily
(correspondence) games and calmly signals when it is your turn to move, with a link to
open the most urgent game in the browser.
Features
- Turn awareness — watches your ongoing Daily games and surfaces how many await a move.
- Grouped sidebar — a Chess view in the activity bar lists your Daily games by whose move it
is: Your move, Low time (under an hour left to move), and Opponent's move — each
group with a count, each game showing your opponent's name and exactly how long is left to move,
soonest deadline first. Groups fold and unfold, so the panel stays calm and scannable.
- Click a game to see its board — click or keyboard-activate (Enter / Space) a game to open
its live board right beneath it, oriented to your color; one board is open at a time. Click the
board to open that game on Chess.com, or click the name again to fold the board away. Games stay
listed and clickable even during a transient network failure.
- Opponent cards — hover over, or keyboard-focus, an opponent's name to see who you're
playing: their title, country, Daily rating, total Daily games, and the year they joined
Chess.com. Purely informational and screen-reader friendly; a View profile on Chess.com
button beneath the open board opens their full profile. On by default; turn it off entirely
with
vscodeChess.opponentCards.
- New-games count on the chess icon — when games newly become your move while the panel is
hidden, a number appears on the activity-bar icon, so you can tell something changed without
opening the panel. Opening the panel clears it; it counts only games that are new since you last
looked, and it survives restarts.
- Move Trail — the open board highlights the two squares of the most recent move (where the
last piece came from and where it landed) with a warm gold tint.
- Board Theme — the board squares wear your active VS Code color theme, while the pieces stay
unchanged; switch back to classic board colors with
vscodeChess.boardTheme.
- Always-visible signal — a status-bar ♟ stays visible in every state, even when no game awaits
your move or the sidebar is hidden.
- Proof of life — the ♟ appears the moment the extension loads, before you've set a username,
so you always know it's installed and running.
- One-click to the board — opens the most urgent game (soonest move deadline) on Chess.com.
- Calm by design — never blanks the UI on a transient network error and never nags; a blip shows
a quiet "Reconnecting…" while keeping the last-known count.
- No credentials — uses only a Chess.com username against the public, unauthenticated Chess.com
API.
Covers Daily (correspondence) games only; Live formats (Blitz, Rapid, Bullet) are not supported.
Accessibility
- Group headers, game rows, and the open board are native VS Code webview buttons with
descriptive accessible names; group headers announce whether they are expanded or collapsed.
- Keyboard users can Tab through the panel in reading order and activate any control with Enter
or Space — fold a group, open a game's board, or open the game on Chess.com.
- Empty states are plain text messages, so focus never lands on a dead control.
- The focused control uses VS Code's focus color, including High Contrast themes.
- The opponent card is a pure description, not a control: it never traps focus or requires
entering it, and the same content is announced to screen readers on keyboard focus as on
hover. Escape dismisses it without moving your focus.
Requirements
Installation
Install from the
VS Code Marketplace,
search VS Code Chess in the Extensions view, or run:
code --install-extension eunai.vscode-chess
From source
npm install
npm run build # bundle the extension host + webview into dist/
Then open the repository in VS Code and press F5 to launch an Extension
Development Host with the extension loaded.
Usage
Open VS Code settings and set your Chess.com username:
// settings.json
"vscodeChess.username": "your-chesscom-username"
Once a username is set, the extension begins monitoring automatically. A status-bar ♟
— the Presence — is always visible: it shows ♟ N when N Daily games await your
move (click it to open the most urgent game, soonest move deadline, in your browser),
and a bare ♟ when none await. Before you've configured a username it prompts you with
♟ Set Username, and if Chess.com doesn't recognise the username it shows
♟ Unknown User — both click through to Settings. It never disappears, so you always
have a proof of life that the extension is running.
Open the Chess view from the activity bar to see your Daily games grouped by whose move it
is — Your move, Low time, and Opponent's move — each game named after your opponent
with how long is left to move, soonest deadline first. Click a game to open its live board
beneath it (one board at a time, oriented to your color); click the board to open that game on
Chess.com. While the panel is hidden, a count on the chess icon shows how many games have newly
become your move since you last looked — opening the panel clears it. Before you've set a
username (or if Chess.com doesn't recognise it), the panel shows a short note and the status-bar
♟ is the click-through to Settings.
Versioning
This project follows Semantic Versioning 2.0.0.
Notable changes are recorded in CHANGELOG.md.
License
Licensed under the GNU General Public License v3.0 or later
(GPL-3.0-or-later).
Board rendering uses chessground, the
open-source board UI from Lichess, which is GPL-3.0-or-later; bundling it makes the
combined extension subject to the GPL.