Commit Graph

110 Commits

Author SHA1 Message Date
Janis 5a66a057b3 feat: Add tests for bot behavior including king position, illegal moves, and game events
Build & Test (NowChessSystems) TeamCity build failed
2026-04-16 21:55:55 +02:00
Janis 8ecfbd6266 feat: Refactor bot participant handling to include player information and update package structure 2026-04-16 21:18:44 +02:00
Janis f8d2858d98 feat: Implement threefold repetition detection and update game rules
Build & Test (NowChessSystems) TeamCity build failed
2026-04-16 21:00:32 +02:00
Janis 5aa1691b32 feat: Update code style configuration to enable per-project settings
Build & Test (NowChessSystems) TeamCity build failed
2026-04-16 18:55:42 +02:00
Janis 96b8249e7e feat: Refactor promotion handling to use UCI notation and improve move validation
Build & Test (NowChessSystems) TeamCity build failed
2026-04-16 18:51:53 +02:00
Janis 95537bc709 feat: Add Lichess eval importer and metadata for NNUE architecture 2026-04-16 18:50:30 +02:00
Janis 8db2c8ca7f feat: Allow configurable hidden layer sizes for NNUE architecture 2026-04-16 18:50:28 +02:00
Janis 227f2e4a41 feat: Add new test cases for various components including PlayerInfo, Move, and JSON parsers 2026-04-16 18:50:28 +02:00
Janis 25b0c9f2fb feat: Implement move repetition handling for bots and update search logic to exclude repeated moves 2026-04-16 18:50:25 +02:00
Janis d6758ed8ec feat: Introduce Participant trait and update GameEngine to support bot participants 2026-04-16 18:50:25 +02:00
Janis c88159ecec feat: Enhance NNUE evaluation with incremental updates and validation checks 2026-04-16 18:50:23 +02:00
Janis 8fb872e958 feat: Implement dataset versioning and management for NNUE training data 2026-04-16 18:50:22 +02:00
Janis 4b52199754 feat: Add new bot components and update game engine tests 2026-04-16 18:50:21 +02:00
Janis 5df5a1875f feat: Improved how NNUE Evalutes 2026-04-16 18:50:18 +02:00
Janis ed26406185 feat: Update BotController and tests for improved bot instantiation and configuration 2026-04-16 18:50:04 +02:00
Janis 3750931251 feat: NCS-43 NNUE high-impact performance optimisations
Implements three high-impact improvements from NCS-43:

1. Incremental L1 accumulator — L1 pre-activations are maintained
   per-ply on a stack and updated by column-add/subtract when pieces
   move, reducing L1 cost from O(768×1536) to O(pieces×1536) for root
   init and O(changed_pieces×1536) per node. Column-major weight
   transposition (l1WeightsT) makes each update sequential in memory.

2. Eval cache — a 256 K direct-mapped cache keyed by Zobrist hash
   skips the L2-L5 forward pass for positions seen during quiescence,
   where the same position often recurs across capture sequences.

3. Dynamic time allocation — NNUEBot now grants 1 500 ms in complex
   positions (> 30 legal moves) and 500 ms in nearly-terminal ones
   (< 5 moves), instead of a fixed 1 000 ms budget.

Accumulator hooks (initAccumulator, pushAccumulator, copyAccumulator,
evaluateAccumulator) are added to the Evaluation trait with no-op
defaults, so ClassicalBot and HybridBot are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 18:50:04 +02:00
Janis 1b5759828b feat: enhance AlphaBetaSearch with incremental search hash updates and improve move ordering logic 2026-04-16 18:50:03 +02:00
Janis 75286a8773 feat: enhance AlphaBetaSearch with move timing and improve king square detection in GameContext 2026-04-16 18:50:03 +02:00
Janis 01c8a0f8fe feat: add metadata files for NNUE weights versions and implement burst training functionality with subsampling options 2026-04-16 18:50:02 +02:00
Janis 5d4cf5f13c feat: add hybrid bot implementation and enhance NNUE training pipeline with tactical data extraction 2026-04-16 18:50:00 +02:00
Janis 0bf1d52132 feat: enhance training and evaluation processes with new parameters and normalization options 2026-04-16 18:50:00 +02:00
Janis a5560285fd feat: enhance training and evaluation processes with new parameters and normalization options 2026-04-16 18:50:00 +02:00
Janis 34945e4fb8 feat: enhance nnue.py and train.py with options for existing labels and improved file handling 2026-04-16 18:49:59 +02:00
Janis adc2de23bc feat: add rich console interface for NNUE training pipeline and update requirements 2026-04-16 18:49:59 +02:00
Janis b25be99dcf feat: integrate NNUE bot and add Python training pipeline with weight export functionality 2026-04-16 18:49:58 +02:00
Janis 6a9ac55b31 feat: refactor AlphaBetaSearch and ClassicalBot for improved evaluation and organization 2026-04-16 18:49:58 +02:00
Janis 558f43d0f6 feat: refactor AlphaBetaSearch and ClassicalBot for improved evaluation and organization 2026-04-16 18:49:58 +02:00
Janis 539f53b000 feat: enhance AlphaBetaSearch with parallel processing and improved move ordering 2026-04-16 18:49:57 +02:00
Janis 0bc7282dfa feat: enhance evaluation logic with mobility scoring and positional bonuses 2026-04-16 18:49:57 +02:00
Janis 8e208b8a25 feat: implement bot functionality with difficulty levels and integrate Polyglot opening book 2026-04-16 18:49:56 +02:00
Janis 3b945da958 feat: add AlphaBetaSearch and bot implementation with difficulty levels 2026-04-16 18:49:56 +02:00
Janis a247eb3d0d feat: add AlphaBetaSearch and bot implementation with difficulty levels 2026-04-16 18:49:55 +02:00
Janis 767d3051a7 feat: NCS-13 Implement Threefold Repetition (#31)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #31
core-0.14.0 ui-0.11.0 api-0.6.0 io-0.8.0 rule-0.3.0
2026-04-16 18:49:20 +02:00
TeamCity b2e62dc60c ci: bump version with Build-40 2026-04-14 19:23:01 +00:00
Janis b0399a4e48 feat: NCS-14 implemented insufficient moves rule (#30)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #30
Co-authored-by: Janis <janis.e.20@gmx.de>
Co-committed-by: Janis <janis.e.20@gmx.de>
api-0.5.0 ui-0.10.0 io-0.7.0 rule-0.2.0 core-0.13.0
2026-04-14 21:17:56 +02:00
TeamCity ec2ab2f365 ci: bump version with Build-39 2026-04-12 19:03:52 +00:00
Janis fd4e67d4f7 feat: NCS-25 Add linters to keep quality up (#27)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #27
Reviewed-by: Leon Hermann <lq@blackhole.local>
Co-authored-by: Janis <janis.e.20@gmx.de>
Co-committed-by: Janis <janis.e.20@gmx.de>
rule-0.1.0 ui-0.9.0 io-0.6.0
2026-04-12 20:58:39 +02:00
TeamCity 3cb3160731 ci: bump version with Build-38 2026-04-12 17:41:12 +00:00
Janis dbcafd2869 feat: NCS-29 JSON - Cherry Picked (#28)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #28
Reviewed-by: Shahd Lala <shosho996@blackhole.local>
Co-authored-by: Janis <janis.e.20@gmx.de>
Co-committed-by: Janis <janis.e.20@gmx.de>
rule-0.0.7 io-0.5.0
2026-04-12 19:36:02 +02:00
TeamCity 3ecb2c9d66 ci: bump version with Build-37 2026-04-12 15:20:01 +00:00
lq64 9ad11fb97a docs: NCS-36 Added an API spec for Now Chess (#25)
Build & Test (NowChessSystems) TeamCity build finished
## Summary
  - Adds `docs/api-spec.yaml` — a full OpenAPI 3.0.3 specification for the NowChess REST API
  - Endpoint paths follow the lichess `board/bot` split convention (`/api/board/game/...`)
    to leave room for a future bot API under `/api/bot/game/...`
  - Covers game lifecycle, move-making, draw handling, undo/redo,
    legal move introspection, and FEN/PGN import/export

  ## Endpoints
  - Game: POST /api/board/game, GET /{gameId}, GET /{gameId}/stream, POST /{gameId}/resign
  - Move: POST /{gameId}/move/{uci}, GET /{gameId}/moves, POST /{gameId}/undo, POST /{gameId}/redo
  - Draw: POST /{gameId}/draw/{action}
  - Import: POST /import/fen, POST /import/pgn
  - Export: GET /{gameId}/export/fen, GET /{gameId}/export/pgn

  ## Test plan
  - [ ] Open docs/api-spec.yaml in Swagger Editor (https://editor.swagger.io) — zero validation errors expected
  - [ ] Verify every endpoint maps to an existing GameEngine or RuleSet method

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #25
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
io-0.4.0 rule-0.0.6
2026-04-12 17:15:11 +02:00
TeamCity e158b0a7f0 ci: bump version with Build-36 2026-04-12 14:45:56 +00:00
Janis f1c9df16b6 feat: add initial project structure and documentation files (#24)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #24
io-0.3.0 rule-0.0.5
2026-04-12 16:39:17 +02:00
TeamCity 9d11d25b99 ci: bump version with Build-35 2026-04-08 07:37:40 +00:00
lq64 7a045d31d7 feat: NCS-31 FastParse FEN (#22)
Build & Test (NowChessSystems) TeamCity build finished
Summary

  - Added fastparse_3:3.0.2 dependency to modules/io
  - Implemented FenParserFastParse as a second alternative FEN parser using FastParse, with the same public API as
  FenParser and FenParserCombinators
  - Parsers are built bottom-up using (using P[Any]) Scala 3 syntax with NoWhitespace.* to prevent implicit whitespace
  skipping; rank sum validation uses Pass/Fail inside .flatMap
  - Added FenParserFastParseTest mirroring FenParserCombinatorsTest to prove behavioural equivalence across all three
  implementations

  Test plan

  - All existing tests pass — FenParser, FenParserCombinators, and all other modules untouched
  - FenParserFastParseTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en
  passant, rank overflow, round-trip via FenExporter
  - All parser logic branches genuinely covered — known scoverage gap documented in docs/unresolved.md (FastParse inline
   macro generates synthetic proxy methods that scoverage instruments but that never execute at runtime)

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #22
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
rule-0.0.4
2026-04-08 09:32:57 +02:00
TeamCity b518c704fa ci: bump version with Build-34 2026-04-07 19:42:37 +00:00
Janis fe8e3c0539 fix: NCS-32 Queenside Castle doesn't care about pieces in the way (#23)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #23
Co-authored-by: Janis <janis.e.20@gmx.de>
Co-committed-by: Janis <janis.e.20@gmx.de>
io-0.2.0 ui-0.8.0
2026-04-07 20:32:48 +02:00
TeamCity 1b16adcc72 ci: bump version with Build-33 2026-04-07 18:02:38 +00:00
lq64 b4bc72f7e4 feat: NCS-30 FEN Parser using ParserCombinators (#21)
Build & Test (NowChessSystems) TeamCity build finished
Summary

  - Added scala-parser-combinators_3:2.4.0 dependency to modules/io
  - Implemented FenParserCombinators as an alternative FEN parser using RegexParsers, with the same public API as the
  existing FenParser
  - Parsers are built bottom-up: piece characters → rank tokens → rank → board, composed with explicit field separators
  into a full FEN parser
  - Added FenParserCombinatorsTest mirroring the existing FenParserTest to prove behavioural equivalence

  Test plan

  - All existing tests pass — FenParser and all other modules untouched
  - FenParserCombinatorsTest covers all cases: valid FEN, invalid color, invalid castling, invalid board shapes, en
  passant, round-trip via FenExporter
  - 100% line/branch/method coverage on FenParserCombinators

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #21
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
io-0.1.0 ui-0.7.0
2026-04-07 12:28:43 +02:00
Janis 8959c3a849 refactor: NCS-24 update CLAUDE.md for improved structure and clarity (#20)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #20
Reviewed-by: Leon Hermann <lq@blackhole.local>
Co-authored-by: Janis <janis-e@gmx.de>
Co-committed-by: Janis <janis-e@gmx.de>
io-0.0.3 core-0.12.0 rule-0.0.3 api-0.4.0
2026-04-07 12:25:33 +02:00