Fix derirved values
better calc for derived values
docker bugfixes and environment handling
frontend adding weapons and equipment
PDF Export bugfix Weaponslist
pdf export disply default character image
UI added user profile to change email and password
Upload character image
fix test for importer modules
remove useless tests
BREAKING CHANGE: Template names changed from page1_stats.html to page_1.html
## Phase 1: Unified Pagination Function
- Implemented PaginateMultiList() to replace PaginateSkills(), PaginateSpells(), and PaginatePage2PlayLists()
- Single metadata-driven function handles all list types (skills, weapons, spells, equipment)
- Properly handles filters (learned/unlearned/language) via template metadata
- Shares list trackers by ListType+Filter combination to avoid duplication
- Added comprehensive tests for all edge cases
## Phase 2: Template Naming Convention
- Renamed templates to be data-agnostic:
- page1_stats.html -> page_1.html
- page1.2_stats.html -> page_1.2.html
- page2_play.html -> page_2.html
- page2.2_play.html -> page_2.2.html
- page3_spell.html -> page_3.html
- page3.2_spell.html -> page_3.2.html
- page4_equip.html -> page_4.html
- Updated GenerateContinuationTemplateName() for new naming (page_1.html -> page_1.2.html)
- Updated ExtractBaseTemplateName() to handle new format
- Updated all test files and source files with new template names
## Phase 3: Simplified RenderPageWithContinuations
- Removed hardcoded switch statements based on template names
- Replaced with generic dataMap and unified pagination call
- Extracted populatePageDataFromDistribution() to handle data mapping
- Template type detection now driven by metadata, not hardcoded names
## Benefits
- ✅ Extensibility: Add new templates without code changes
- ✅ Maintainability: One pagination algorithm instead of three
- ✅ Clarity: Template names reflect page numbers, not content types
- ✅ Flexibility: Templates can mix any data types
- ✅ All 40+ tests passing
## Technical Details
- Added SkillsColumn3 and SkillsColumn4 fields to PageData for continuation pages
- Template metadata loaded from HTML comments drives pagination behavior
- Backward compatibility maintained for old template references in comments