Michess
536160bba6
feat(elo): add ELO rating system
...
- DB: elo column on user table (default 1200, added via ALTER TABLE IF NOT EXISTS)
- ELO calculated after every game save (K=32, min 100)
- Bots use their fixed ELO values; only human players' ELO changes
- AI page games save with bot name (e.g. 'Holzpferd Heinz') instead of 'Stockfish'
- User profile shows ELO badge below name
- Header shows current ELO for logged-in users (links to profile)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-15 07:32:57 +02:00
Michess
157c14c11e
feat(bots): add named bot profiles with ELO-based difficulty
...
- 5 bot profiles (Holzpferd Heinz to Meister Magnus, ELO 200-1400) in
server/bots.ts and client/bots.ts with emoji + descriptions
- Bot users auto-created in DB on server startup (role='bot')
- AI page replaced difficulty buttons with bot profile cards
- Tournament host can add bots via dropdown (POST /:code/add-bot)
- Bot auto-moves triggered on joinLobby and after each human move
- Fixed clock start order so bot-as-white games initialize correctly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 13:32:43 +02:00
Michess
4825a57a54
feat: add real-time notification system and fix admin login bug
...
- Fix login: role field was missing from session (admin page inaccessible)
- Add onlineUsers map in socket/state.ts to track connected users
- Join personal user:${id} socket room on connect for targeted notifications
- Emit friendRequestReceived/friendRequestAccepted socket events from friends controller
- Add sendGameInvite socket event handler on server
- New NotificationContext: global socket provider for registered users
- New NotificationPanel: bell icon with unread badge and dropdown in header
- Friends page: inline game invite input per friend with sendGameInvite
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 12:35:09 +02:00
Michess
aeb5fe313e
feat: add time controls, correspondence games, and tournament mode
...
**Zeitmodi (Blitz/Rapid):**
- 5, 10, 30 Min Zeitkontrolle bei Spielerstellung
- Server-seitige Uhren: Zeit wird bei jedem Zug abgezogen
- Timeout-Erkennung via claimTimeout Socket-Event
- Schachuhr-Anzeige in GamePage (rot bei < 30s)
- Turnierspiele erhalten automatisch Zeitkontrolle
**Tagespartien (Correspondence):**
- Neue DB-Tabelle correspondence_game
- REST API: erstellen, beitreten, Zug machen, aufgeben
- Seite /correspondence: Liste aktiver Tagespartien
- Seite /correspondence/[code]: Spielen mit interaktivem Brett
- Einladungslink teilen, Gegner tritt via Link bei
**Turniermodus (Round-Robin):**
- Neue DB-Tabellen: tournament, tournament_player, tournament_round
- Round-Robin Paarungen mit Circle-Methode
- Turnier erstellen: /tournament/create
- Turnierliste: /tournament
- Turnierseite /tournament/[code]: Standings, Runden, Spiele
- Automatische Aktivisierung der nächsten Runde
- Turnierspiele werden als normale activeGames erstellt
- Ergebnisse aktualisieren Punkte automatisch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 09:44:35 +02:00
Michess
0cc5a8e99c
fix(ai): fix database model mapping for AI matches and missing AI names
2026-04-13 15:06:45 +02:00
Michess
f7b87f2941
fix: use existsSync instead of require(fs) in ESM module
2026-04-13 14:25:31 +02:00
Michess
4bc6ea58e6
fix: handle stockfish process error, try /usr/games/stockfish path
2026-04-13 14:19:58 +02:00
Michess
ebbc8227fd
fix: use native stockfish binary via debian image
2026-04-13 13:40:21 +02:00
Michess
6b676d3015
fix: use child_process to spawn stockfish via stdin/stdout
2026-04-13 13:33:26 +02:00
Michess
694177c108
feat: Vollständiges Rebranding zu MiChess, Copyright Tom Misch
...
- Alle @chessu/ → @michess/ (Package-Namen und Imports)
- Theme-Namen chessuDark/Light → michessDark/Light
- Alle Display-Texte: chessu/Michess → MiChess
- Autor: dotnize → Tom Misch
- Copyright: Nathaniel Tampus → Tom Misch
- README komplett neu (Deutsch, MiChess-spezifisch)
- CONTRIBUTING.md neu
- FUNDING.yml + CODE_OF_CONDUCT.md entfernt
- Fork-Hinweis auf chessu bleibt im README erhalten (MIT-Pflicht)
- pnpm-lock.yaml entfernt (wird beim Build neu generiert)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 10:47:16 +02:00
Michess
b79a442b0c
fix: TypeScript-Fehler behoben (stockfish types, null-Typ)
2026-04-13 10:30:54 +02:00
Michess
50464981c2
fix: Stockfish via npm-Paket statt Alpine apk
...
- stockfish als npm dependency (kein apk add nötig, portabel)
- Dockerfile: nur noch git via apk, kein stockfish
- docker-compose.yml: version-Zeile entfernt (veraltet)
- Controller auf npm-Package-API umgeschrieben (postMessage/onmessage)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 10:23:33 +02:00
Michess
7dac042d73
feat: Michess – Initiales Setup auf Basis von chessu
...
- Rebranding: chessu → Michess (Header, Footer, Metadata, Session-Cookie)
- Stockfish KI-Integration: 6 Schwierigkeitsgrade (Anfänger bis Meister)
- Admin-Panel: Nutzerverwaltung, Sperren/Entsperren, Git-Pull-Update
- Freundessystem: Anfragen, Freundesliste, Nutzersuche
- DB-Schema: role, banned, friend_request, friendship Tabellen
- Docker: NAS-optimiertes docker-compose.yml mit PostgreSQL Healthcheck
- Stockfish binary via apk im Alpine-Image installiert
- .env.example für einfaches Deployment
- scripts/update.sh für manuelles NAS-Update
- Brain.md + Plan.md als Projekt-Gedächtnis
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 10:02:52 +02:00
Nathaniel Tampus
c591415e3d
fix registration for empty email
2023-08-11 20:46:02 +08:00
Nathaniel Tampus
2238038c95
update eslint configs
2023-07-27 15:02:34 +08:00
Nathaniel Tampus
0d9cfd8f61
update default session secret
2023-07-01 19:50:27 +08:00
Nathaniel Tampus
70637a384d
add cleanup comment
2023-07-01 19:49:19 +08:00
Nathaniel Tampus
cf63f73280
fix registration for empty email
2023-06-19 21:57:03 +08:00
Nathaniel Tampus
c71ee3056d
fix eslint config
2023-05-12 19:23:00 +08:00
Nathaniel Tampus
ee5c5d37a4
remove unused update query from game model
2023-05-06 20:23:58 +08:00
Nathaniel Tampus
3a03c37e1d
cleanup
2023-05-06 20:19:53 +08:00
Nathaniel Tampus
da7f88e790
remove log when joining nonexistent lobby
2023-05-01 21:08:51 +08:00
Nathaniel Tampus
da7b4c40a3
organize imports
2023-05-01 15:15:49 +08:00
Nathaniel Tampus
24861fec36
remove game from activeGames immediately on end
2023-04-09 02:41:46 +08:00
Nathaniel Tampus
2feec2de02
fix id number checks for archived games api
2023-04-07 12:25:40 +08:00
Nathaniel Tampus
bdc8dab1ad
api for fetching user profile
2023-04-05 22:29:54 +08:00
Nathaniel Tampus
bec764dcee
improve id checks for getting finished games
2023-04-05 22:17:25 +08:00
Nathaniel Tampus
b448ded981
update log message
2023-04-05 21:52:22 +08:00
Nathaniel Tampus
3f851602ea
add started & ended timestamps to game table
2023-04-05 21:50:34 +08:00
Nathaniel Tampus
2fadce8ae1
improve checks for update user api
2023-04-05 21:02:49 +08:00
Nathaniel Tampus
577cba6ff4
count game history stats for users
2023-04-02 18:24:21 +08:00
Nathaniel Tampus
ec05a7405f
update game queries
2023-04-02 17:37:02 +08:00
Nathaniel Tampus
651cfb9d2a
emit receivedMove first before gameOver
2023-04-02 15:01:52 +08:00
Nathaniel Tampus
fc2f61446d
remove code from game db
2023-04-02 15:01:30 +08:00
Nathaniel Tampus
f18d6d1e8c
update game queries
2023-04-02 15:01:11 +08:00
Nathaniel Tampus
75eb21c337
save finished games to db
2023-04-02 00:00:09 +08:00
Nathaniel Tampus
5088e25769
route for fetching finished games
2023-04-01 23:42:33 +08:00
Nathaniel Tampus
710955b741
return null if no user found
2023-04-01 23:41:47 +08:00
Nathaniel Tampus
af25b4ff20
update db models
2023-04-01 23:15:54 +08:00
Nathaniel Tampus
97b750fec4
es6-string-html extension highlighting
2023-04-01 22:49:33 +08:00
Nathaniel Tampus
a8bfe0abdc
store winner side only, remove redundant reference
2023-04-01 20:59:25 +08:00
Nathaniel Tampus
8d19c88c83
rename reason to endReason
2023-04-01 20:58:29 +08:00
Nathaniel Tampus
d469cdff56
allow player to claim win/draw for abandoned games
2023-03-25 19:18:01 +08:00
Nathaniel Tampus
10ed00ebc0
update game model & types
2023-03-25 19:17:49 +08:00
Nathaniel Tampus
ee8f9a58fd
use default import for user model
2023-03-25 19:13:00 +08:00
Nathaniel Tampus
86f4f9d42f
Merge branch 'main' into auth
2023-03-20 18:53:35 +08:00
Nathaniel Tampus
17a0befae3
use 204 status to avoid logging 404 to console
2023-03-20 18:22:26 +08:00
Nathaniel Tampus
8a80d6e9fd
remove extra imports (finallyyyy)
...
just went crazy fixing merge conflicts lol
2023-03-19 21:53:08 +08:00
Nathaniel Tampus
6250d90192
Merge branch 'main' into auth
2023-03-19 21:51:22 +08:00
Nathaniel Tampus
9d4198d918
remove extra imports
2023-03-19 21:50:21 +08:00