You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,6 +31,7 @@ From architectural design and core logic implementation to the Blazor frontend a
31
31
-`JunctionManager`: Handles the complex stat-calculation logic and magic assignments.
32
32
-`InventoryManager`: Manages resource collection, pinning, and capacity limits.
33
33
-**State Management**: Serialized state preservation via `PersistenceService` in `LocalStorage`.
34
+
-**Content Management**: A Python-based **Content Manager Module** (`modules/contentManager`) provides a GUI for rapidly editing game data (Quests, Items, Cadences, Refinements) with built-in validation and automated backups.
34
35
-**Testing**: Comprehensive suite using MSTest, Moq, and bUnit. Line coverage is maintained at **>75%**.
35
36
36
37
## ⚖️ Quality Assurance & Automated Balancing
@@ -49,18 +50,18 @@ Mythril features a job-based progression system where you manage a party of char
49
50
50
51
*For detailed gameplay mechanics, see the [How to Play](docs/instructions.md) guide.*
51
52
52
-
## 🚀 Recent Updates (March 6, 2026)
53
-
-**Optimal Path Optimization**: Enhanced the Path-Routed Simulator to prioritize critical progression quests, bringing the simulated end-game time to a realistic **~5.7h**.
54
-
-**Coverage Expansion**: Increased project line coverage to **77.6%** by adding exhaustive tests for simulation logic and resource management.
55
-
-**Intelligent Shield Reporting**: Implemented adaptive time formatting for completion badges (Days/Hours/Minutes).
56
-
-**Refinement Automation**: Fixed edge cases in AutoQuest logic to ensure magic capacity limits are strictly respected during automated loops.
57
-
-**Architectural Decoupling**: Refactored complex simulation logic into partial classes to maintain strict monolith prevention compliance.
53
+
## 🚀 Recent Updates (April 23, 2026)
54
+
-**Content Manager Overhaul**: Implemented `deepcopy` persistence and unique Streamlit keys to fix data leaking between refinements and ensure all fields (including Effects) are preserved.
55
+
-**UI Polish & Accessibility**: Added animated "in-process" icons (active-dot) for quests and unlocks with standardized margins for better readability.
56
+
-**Visual Determinism**: Refactored `Expander` and `QuestCard` headers to flexbox-based layouts for consistent icon positioning.
57
+
-**Agentic Health Verification**: Integrated real-time content manager integrity checks directly into the DevOps pipeline.
-[DONE] When quests or unlocks are being worked on there is an in process icon. There needs to be a margin between the end of the Title and the process icon (See [docs/resolution/2026-04-23_process_icon_margin.md](resolution/2026-04-23_process_icon_margin.md))
2
2
3
-
- review the readme.md and update with features that have been added since the last modification to the readme. Make sure to specifically mention the new content manager module. Do not remove the words from the human developer. That must remain as a footnote.
3
+
-[DONE]review the readme.md and update with features that have been added since the last modification to the readme. Make sure to specifically mention the new content manager module. Do not remove the words from the human developer. That must remain as a footnote. (Updated README.md)
4
4
5
-
- the content manager is having an issue loading refinements. It always loads the abilities from the topmost refinement. Review.
5
+
-[DONE]the content manager is having an issue loading refinements. It always loads the abilities from the topmost refinement. Review. (See [docs/resolution/2026-04-23_refinement_loading_fix.md](resolution/2026-04-23_refinement_loading_fix.md))
6
6
7
-
- AutoQuest unlock no longer shows a toggle button to automate tasks. Review.
7
+
-[DONE]AutoQuest unlock no longer shows a toggle button to automate tasks. Review. (See [docs/resolution/2026-04-23_autoquest_toggle_fix.md](resolution/2026-04-23_autoquest_toggle_fix.md))
The `AutoQuest` toggle button was missing from the UI for characters who should have had it unlocked. This was caused by the Content Manager (CMS) stripping the `Effects` field from `cadence_abilities.json` during a previous save operation, as `Effects` were not part of the CMS's internal data model.
5
+
6
+
## Technical Resolution
7
+
1.**Effects Editing**: Added a new `edit_effects` UI component to `modules/contentManager/ui_components.py` to allow manual management of `AutoQuest`, `Logistics`, and `MagicCapacity` effects.
8
+
2.**CMS Integration**: Integrated `edit_effects` into the `Quests` and `Cadences` editing pages in `app.py`.
9
+
3.**Data Persistence**: Updated `data_io.py` to correctly unify and save `Effects` for both Quests and Cadences, preventing future data loss.
10
+
4.**Deep Copying**: Implemented `deepcopy` to ensure effects aren't accidentally shared between abilities.
11
+
12
+
## Verification
13
+
* Ran health check simulation; confirmed `AutoQuest` abilities are correctly detected (`[DEBUG] Unlocked Ability: Recruit:AutoQuest I`).
14
+
* Verified that saving in the CMS now preserves the `Effects` array in `quest_details.json` and `cadences.json`.
# Resolution: Content Manager Data Integrity & Refinement Loading
2
+
3
+
## Problem
4
+
1.**Refinement Loading**: When switching between refinements in the CMS, nested data (like Recipes) appeared to load from previous or "topmost" refinements. This was caused by Streamlit's state persistence when using non-unique keys for nested UI components.
5
+
2.**Data Loss (Effects)**: Saving changes in the CMS resulted in "Effects" (like AutoQuest or Logistics) being stripped from the JSON files because they were not handled in the unified data model.
6
+
3.**Reference Sharing**: The `copy()` method used in `data_io.py` created shallow copies, potentially allowing nested lists to be shared between different entities in memory.
7
+
8
+
## Technical Resolution
9
+
1.**Deep Copying**: Updated `modules/contentManager/data_io.py` to use `copy.deepcopy()` instead of `copy()` for all unification logic, ensuring complete isolation of nested data structures.
10
+
2.**Unique Streamlit Keys**: Updated `modules/contentManager/app.py` to generate unique keys for all nested UI components by including the `selected_name` of the entity being edited.
11
+
3.**Preserving Metadata**: Modified `data_io.py` to preserve extra fields (like `Effects` and `Metadata`) when loading and saving, ensuring the CMS does not strip unhandled data.
12
+
13
+
## Verification
14
+
* Verified that `refinements.json` preserves `Ability` keys correctly.
15
+
* Confirmed that switching between entities in the CMS reloads fresh data for each nested list.
0 commit comments