惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

Show HN

GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: Generate Claude Code Workflows using Spec Driven Development approach Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal).
GitHub - daxaur/tabia: Open-source, browser-local chess o...
daxaur · 2026-06-18 · via Show HN

tabia — open source chess drills

Open-source, browser-local chess opening trainer.
Drill your repertoire with spaced repetition until the moves are muscle memory.
No account. No server. No tracking — your prep lives in your browser.

▶ Live demo · Run it · Add an opening · MIT


Why

Most repertoire trainers lock your prep behind an account and a database you don't control. tabia is the open version: a static site with zero backend. Your progress and spaced-repetition schedule live in localStorage. Fork it, self-host it, run it offline — it's just HTML, CSS and ES modules.

What it does

  • Spaced-repetition drilling — clean a line and it won't come back for a while; miss it and it returns soon.
  • Openings → folders → branch lines — browse by category (gambits, classical, defences, systems), star and save your favourites.
  • Four study modesLearn (walk the line), Practice (forgiving reps), Drill (SRS-scored), and Hyper (the bot plays a random line and you must hold your repertoire, round after round).
  • Live Stockfish eval — a real engine runs in your browser (single-thread WASM) and drives the "winning" bar; an instant heuristic fills in while it spins up.
  • Build your own openings — a visual builder: play the moves on a board, name your lines, and add custom coach messages per line and per move.
  • Coach — drop your Lichess/Chess.com username and tabia reads your recent games in the browser, profiles your style (sharp vs positional, e4 vs d4), and matches an opening to you — rendered as a shareable card you can post to X. No AI bill, no server: just stats over your own game history.
  • Connect an account — Lichess (OAuth) or Chess.com (public profile); your saved openings are kept locally, tied to you.
  • Buttery board — big, fast drag and click-to-move, lichess-style pieces, right-click arrows/highlights, pre-moves, and synthesized sounds.
  • Browser-local — no sign-up, no server call, your data never leaves the tab.
  • Verified data — every bundled line is replayed through chess.js (npm run validate); illegal moves can't ship.

Run it

It's a static site — no build step.

git clone https://github.com/daxaur/tabia
cd tabia
python3 -m http.server 4173    # or: npm run dev
# open http://localhost:4173

Deploys to GitHub Pages / any static host as-is.

Add your own opening

An opening is a plain data module: a folder name and a list of lines, each an array of [SAN, "comment"] moves from move 1. The trainer derives the drill positions automatically (shared prefixes merge by position). Copy a file in src/data/, change the moves, and the opening shows up on the home page. Run npm run validate to legality-check every line.

Project layout

index.html            app shell (Home / Study / Coach / Create / Saved)
src/style.css         theme + board styling
src/board.js          dependency-free interactive board (drag, click, arrows, pre-moves)
src/app.js            views + spaced-repetition drill engine + opening builder
src/store.js          localStorage persistence + SRS scheduling
src/engine.js         in-browser Stockfish eval wrapper
src/eval.js           instant heuristic eval (engine-free fallback)
src/coach.js          coach messages (defaults + user overrides)
src/auth.js           Lichess OAuth (PKCE) / Chess.com profile connect
src/coachai.js        Coach — reads your public games, profiles style, matches an opening
src/sharecard.js      renders the Coach result to a shareable PNG (canvas)
src/data/*            openings (folders) and their branch lines
src/vendor/chess.js   chess.js (move legality), vendored
src/vendor/stockfish.js  Stockfish (asm.js), vendored
src/pieces/*          piece sets (SVG)
sw.js                 service worker (network-first, always-fresh)
tools/validate.mjs    legality check for every line

Credits & license

Code: MIT. Move legality by chess.js (BSD), engine evaluation by Stockfish (GPL, vendored as a Web Worker). Piece sets and the Lichess/Chess.com brand marks are from their respective projects under their original licenses. Contributions welcome — open an issue or PR.