All notable changes to PersonaFlow will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Critical: Fixed IndexError in memory summarization when
memories_to_summarizelist is empty - Critical: Fixed incorrect exception type in JSON serializer (
TypeErrorinstead ofJSONDecodeErrorforjson.dump()) - Fixed overly restrictive memory content validation - now accepts any non-empty dictionary structure
- Fixed memory config validation to properly accept partial configurations with defaults
- Improved error handling in
add_interaction()with explicit KeyError for missing characters - Fixed character deserialization with safe defaults for optional fields
- Input validation for empty character names and prompts
- Input validation for negative memory limits
- Input validation for invalid memory config values (≤ 0)
- Input validation for empty template names and content
- Validation for memory manager character names
- Comprehensive
.gitignorecovering build artifacts, IDEs, OS files, and more pytest.iniwith test configuration and coverage settingsMANIFEST.infor proper package distribution- CI/CD workflow (
.github/workflows/ci.yml) for automated testing on multiple platforms - Automated linting and type checking in CI pipeline
- Improved character deserialization to handle missing optional fields gracefully
- Better error messages throughout the codebase for easier debugging
- Enhanced memory config validation to check field types without requiring all fields
- Fixed file handle leak in
setup.pyby usingpathlibfor reading README - Removed
dist/folder from git tracking (now in.gitignore) - Created separate
nix-devenvbranch for Nix development environment files - Added proper package metadata in
setup.py
Selective Broadcasting
- Enhanced
PersonaSystem.broadcast_interaction()with selective broadcasting capabilities - Added ability to target specific characters with
broadcast_toparameter - Added ability to exclude specific characters with
exclude_charactersparameter
# Broadcast to specific characters
system.broadcast_interaction(
content={"message": "Hello targeted characters!"},
broadcast_to=["character1", "character2"]
)
# Broadcast to all except excluded characters
system.broadcast_interaction(
content={"message": "Hello everyone except you!"},
exclude_characters=["character3"]
)- Merge branch 'main' of https://github.com/Ate329/PersonaFlow
- Initial release of PersonaFlow
- Core character management system
- Memory management with automatic summarization
- Multi-character interaction system
- Prompt template management
- Serialization utilities
- Logger utilities
- Basic test suite