README file from
GithubChess Tree
If you like this project, feel free to check out my page on
Likes, coins, and feedback are greatly appreciated.
Overview
Obsidian Chess Plugin is a chess rendering engine built for Obsidian. It displays chess positions and games in FEN and PGN formats, supports move exploration and variation management. Full rules engine powered by chess.js.
PGN File Support
Open .pgn files directly in Obsidian — the plugin registers a dedicated .pgn file view with an interactive board interface.
- Manual Save: Any changes (moves, variations, comments, annotations) are saved back to the file when clicking Save button
- Variation Tree: Interactive tree graph showing all branches — click nodes to navigate
- Comments & Annotations: Supports branch diagram and board annotation symbols, comments
- Mode Toggle: Switch between icon mode and text mode in branch diagram
- Quick Create: New PGN files from the ribbon button
- Custom File Types: Set specific file types as PGN files
Note:
.pgnfiles only support single games. For multi-game PGN files, use AI to add code block markers and convert to Markdown format:```chess [Event "Game 1"] 1. e4 e5 2. Nf3 Nc6 1-0 ``` ```chess [Event "Game 2"] 1. d4 d5 2. c4 e6 1/2-1/2 ```

Code Blocks
Three code block types: All code block names are customizable
chess: Display and explore chess games in Markdown
```chess
1. e4 e5
2. Nf3 Nc6
3. Bb5 a6
```

fen: Visual board editor — generates a chess block with FEN
```fen
```

tree: Branch diagram — display game variations as a tree graph
```tree
1. e4 e5
2. Nf3 Nc6
3. Bb5 a6
```

Settings
Code Block Names
Customize code block aliases in Settings > Chess > Code Block Names:
- List mode (chess): Default
chess, add custom aliases separated by commas - FEN generation mode (fen): Default
fen, add custom aliases - Branch diagram mode (tree): Default
tree, add custom aliases - FEN save type: Choose which code block type to save as (List mode / Branch diagram mode)
Note: Changes require restarting the plugin or Obsidian to take effect.
PGN File View
Enable/disable PGN file view and customize file extensions:
- Enable PGN file view: Toggle to register/unregister PGN view
- PGN file extensions: Default
pgn, add custom extensions separated by commas
Note: Changes require restarting the plugin or Obsidian to take effect.
Features
- Complete Rules Engine: Castling, en passant, promotion, check/checkmate detection, threefold repetition, 50-move rule — all via chess.js
- Board Rendering: High-quality chessboard via chessground with drag-and-drop moves
- Move List: Full move record with click-to-navigate
- Variation Tree: Tree graph with icon/SAN display modes for node labels
- Visual FEN Editor: Drag/click to place pieces, clear/fill board, toggle side to move
- PGN Saving:
- Button colors — gray (empty), green (saved), orange (modified)
- Confirmation dialog before saving
- Customizable Settings:
- Board themes: Wood, Green, Blue, Grey, Dark, Light
- Toolbar position: right / bottom
- Adjustable board size and move text size
- Move list display options
- Auto-jump to end
- Optional move narration (desktop only)
- Board Markers: Draw arrows and highlights on the board
- Mobile Friendly: Adjust board size for small screens
Usage
fen Code Block
- Add a
fencode block to start the editor - Drag pieces or click piece buttons to set up the position
- Use clear/fill/turn buttons as needed
- Click Save to generate a
chesscode block with the FEN
chess Code Block
- Write your game inside a
chesscode block (optionally with FEN and SAN moves) - FEN is optional — defaults to the standard starting position
- Controls:
- When no manual moves are made, the move list shows the original PGN
- After making moves, the list shows your modified sequence
- Click Reset to revert to before manual edits
- Click Save to overwrite the original PGN
Optional Parameters
| Name | Value | Description |
|---|---|---|
protected / p |
true / false | When true, Save button is disabled; default false |
rotated / r |
true / false | When true, board is flipped (Black on bottom) |
Example
```chess
r:true
p:true
[FEN "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1"]
1... e5 2. Nf3 Nc6
```
- Colons can be Chinese or English;
randpare case-insensitive - FEN value works with or without quotes
Installation
- Open Obsidian
- Go to Settings
- Click Community plugins
- Ensure Restricted mode is off
- Click Browse
- Search for "Chess"
- Find this plugin and click Install
- Click Enable
Build
git clone https://github.com/west-shell/obsidian-chess-tree.git
cd obsidian-chess-tree
npm install
npm run build # Dev build (unminified, with sourcemaps)
npm run build:min # Minified build (for release)
Donation
If you like this plugin, feel free to support me!
