Changelog
All notable changes to Casys RPG will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Architecture documentation
- Migration guides
- Validation rules documentation
- Test coverage for edge cases
- Initial project setup
- Basic game engine structure
- Four specialized LLM agents:
- Rules Agent
- Decision Agent
- Narrator Agent
- Trace Agent
- WebSocket-based real-time updates
- Redis state management
- Basic web interface
- Documentation complète de l'architecture frontend
- Nouvelles bonnes pratiques pour Svelte
Changed
- CharacterManager
- Made save_character async to properly handle cache operations
- Added character_id parameter with "current" as default
- Made save_character_stats and update_character_stats async
- Improved error handling and logging
-
Better character state management
-
StateManager
- Added CharacterManager as a dependency
- Improved character creation and management
- Better separation of concerns with CharacterManager
- Updated tests to use proper mocks
-
Character state now managed by CharacterManager
-
WorkflowManager
- Extracted section transition logic to _handle_section_transition
- Simplified start_workflow by delegating to StateManager
- Better workflow state tracking and logging
- Improved error handling
-
Added workflow metadata management
-
StoryGraph
- Refactored to use dictionary-based dependency injection
- Managers and agents now passed as collections
- Improved configuration handling
-
Better separation of concerns
-
Models
- Moved Choice model and validation to RulesModel
- Simplified DecisionModel by removing choice handling
- Added comprehensive validation for all choice types
- Updated model relationships for better clarity
- Simplified DecisionModel state management
- Removed immutability constraints from individual models
- Fixed Pydantic configuration to use model_config
- Improved validation for conditions in DecisionModel
-
Better alignment with GameState architecture
-
Dependency Injection
- Standardized configuration-based injection
- Removed direct manager arguments from constructors
-
Improved testability and flexibility
-
GameState
- Added
keep_if_not_empty
reducer function for LangGraph fan-in- Returns
b
only if not empty, otherwise keepsa
- Used to preserve important state values during merging
- Returns
- Modified field annotations in GameStateBase:
- Changed
session_id
andgame_id
fromfirst_not_none
tokeep_if_not_empty
- Ensures IDs are only overwritten with non-empty values
- Changed
- Modified field annotations in GameStateInput:
- Changed
section_number
andplayer_input
to usekeep_if_not_empty
- Better preservation of input state during merging
- Changed
- Updated GameStateOutput model fields:
- Changed
decision
,trace
, andcharacter
to usefirst_not_none
annotation - All content models now consistently use
first_not_none
for merging
- Changed
-
Simplified GameState.with_updates logging:
- Removed verbose narrative content logging
- Added focused debug logging for session_id and section_number
-
Optimized state management in GameState
- Simplified model merging strategy using take_last_value for DecisionModel
-
Improved node data handling with take_from_node for NarratorModel and RulesModel
-
Refactoring des services pour utiliser des objets simples au lieu de classes
- Optimisation de la gestion d'état avec useResource$ et useTask$
- Amélioration de la gestion WebSocket
- Simplification de la configuration API
Fixed
- GameConfig
- Fixed import paths and module organization
- Improved configuration validation
-
Better error messages for invalid configs
-
Factory Methods
- Removed redundant model factory methods
- Using direct constructors for simple models
-
Factory methods reserved for complex objects
-
Problèmes de sérialisation Qwik
- Gestion des erreurs WebSocket
- Navigation entre les sections
- Removed incompatible model_post_init usage
- Corrected Pydantic configuration format
- Fixed model validation workflow
- Character save operations now properly async
- Section transition handling in workflow
- Character state persistence
- Workflow state transitions
- Error handling in character operations
- Fixed state merging issues in parallel node execution
- Corrected player_input handling in decision processing
- Fixed None value handling in take_from_node function
Architecture
- Improved dependency injection patterns
- Better separation of concerns in models
- More consistent configuration handling
- Cleaner model relationships
- Better alignment with GameState immutability pattern
- Clearer separation of responsibilities:
- GameState handles immutability
- Models focus on validation
- Improved model update workflow
Documentation
- Updated architecture documentation
- Added migration guides
- Improved code comments
- Added validation rules documentation
Testing
- Added comprehensive Choice validation tests
- Updated fixtures for new model structure
- Improved test organization
- Better test coverage for edge cases
- Updated model tests to reflect mutable state
- Added tests for model updates and validation
- Improved test coverage for edge cases
Removed
- Pattern Singleton des services
- useVisibleTask$ remplacé par useTask$
- Classes GameService et WebSocketService
- Code legacy non utilisé
Technical Debt
- Consider adding character versioning
- Add more comprehensive error states
- Improve cache invalidation strategy
- Add performance metrics
- Consider implementing character templates
[0.1.0] - 2024-12-31
Added
- Initial release with core functionality:
- Multi-agent system architecture
- Core models and validation
- Basic game engine
- Test suite foundation
- Configuration system
- Model factories
- Manager protocols