feat(inventory): implement v2 data structure and JSDoc types (Epic 7.1)
Create structured inventory system with categorized storage:
- Add JSDoc type definitions (InventoryV2, InventoryV1, MigrationResult)
- Implement migration utility for v1 → v2 conversion
- Update state.js with v2 inventory structure and feature flag
- Update config.js to match new inventory defaults
Changes:
- NEW: src/types/inventory.js (30 lines) - Type definitions
- NEW: src/utils/migration.js (84 lines) - Migration logic
- MODIFIED: src/core/state.js - v2 inventory + FEATURE_FLAGS
- MODIFIED: src/core/config.js - v2 inventory defaults
Inventory v2 structure:
{
version: 2,
onPerson: "Sword, 3x Potions", // Plaintext string
stored: {
"Home": "Clothes, Tools", // Location → items
"Bank": "Gold, Documents"
},
assets: "Motorcycle, House" // Plaintext string
}
Migration handles all edge cases:
- v1 string → v2.onPerson
- null/undefined → v2 defaults
- "None" → v2 defaults
- Already v2 → no changes
Context overhead: +40 chars (~5% increase) for organized multi-location storage
Part of Epic 7: New Inventory System
Implements: docs/IMPLEMENTATION_PLAN.md Epic 7.1
This commit is contained in:
+17
-1
@@ -3,6 +3,9 @@
|
||||
* Centralizes all extension state variables
|
||||
*/
|
||||
|
||||
// Type imports
|
||||
/** @typedef {import('../types/inventory.js').InventoryV2} InventoryV2 */
|
||||
|
||||
/**
|
||||
* Extension settings - persisted to SillyTavern settings
|
||||
*/
|
||||
@@ -40,7 +43,13 @@ export let extensionSettings = {
|
||||
arousal: 0,
|
||||
mood: '😐',
|
||||
conditions: 'None',
|
||||
inventory: 'None'
|
||||
/** @type {InventoryV2} */
|
||||
inventory: {
|
||||
version: 2,
|
||||
onPerson: "None",
|
||||
stored: {},
|
||||
assets: "None"
|
||||
}
|
||||
},
|
||||
classicStats: {
|
||||
str: 10,
|
||||
@@ -94,6 +103,13 @@ export let isPlotProgression = false;
|
||||
*/
|
||||
export let pendingDiceRoll = null;
|
||||
|
||||
/**
|
||||
* Feature flags for gradual rollout of new features
|
||||
*/
|
||||
export const FEATURE_FLAGS = {
|
||||
useNewInventory: true // Enable v2 inventory system with categorized storage
|
||||
};
|
||||
|
||||
/**
|
||||
* Fallback avatar image (base64-encoded SVG with "?" icon)
|
||||
* Using base64 to avoid quote-encoding issues in HTML attributes
|
||||
|
||||
Reference in New Issue
Block a user