Turn Savi into a bulk data entry interface. Create, generate, and query large game data registries (items, enemies, quests, cards) with sharded storage for 1000+ records and a clean runtime query API.
Added two Savi skills: import-json (JSON import workflow and querying) and import-markdown (Markdown import, parsing by heading, and querying). Skills are loadable by Savi to guide data import workflows.
2.8.0
Added markdown file import support. File type selector (JSON/Markdown) on import screen. Markdown files parsed into records by heading with title, level, content, and order fields. Fixed stale cached state for importType field.
2.7.0
Fix: normalize mod-prefixed action names in onInput. When installed as a mod, sendAction delivers actions as bulk-data-manager:actionName but handlers checked unprefixed names. Added prefix normalization at top of onInput so all handlers match regardless of namespace.
2.6.0
Fix import: restored client-side fetch+chunked import (the original working path). v2.5.0 mistakenly routed through nonexistent http:get job. The v2.4.0 dynamic ID resolver ensures server-side chunk storage works with any namespace prefix.
2.5.0
Fix import: replaced client-side fetch (sandboxed/unavailable) with server-side dataServerImport action. Import button now sends the URL to the server which handles fetch + parse + storage.
Fix portability bug: replaced hardcoded DM_ID with dynamic resolver so the data-manager object is found correctly regardless of mod namespace prefix. onSpawn now loads data on fresh installs.
2.3.0
Fixed URL import for large JSON files. Replaced setTimeout-based chunk dripping with promise-chained chunking that works reliably in the UI sandbox. Reduced chunk size from 500 to 250 records. Also removed dead server-side http:get attempt. Import now works consistently across fresh installs.
2.2.0
Added sample(), getFields(), and sort() helper functions to data-manager.js for easier game integration. sample() returns N unique random records with optional filtering. getFields() inspects collection schema. sort() returns sorted copies by any field with optional direction and filtering.
2.1.0
Chunked import for large files (5MB+): records sent in 500-record batches with progress indicator. Sharded storage for large collections. Fixed double-fire dedup. Removed data-loader from player behavior (god-only). Fixed collection-not-found fallback.
2.0.2
Fix: prevent double-execution of data actions when both player and god entity receive the same sendAction. Collections no longer vanish after opening.
2.0.1
Fix: panel no longer shows "Collection not found" after clearing data — auto-returns to list view when a collection is missing.
2.0.0
Complete rebuild: god-mode UI panel for importing JSON from URLs, browsing/searching/paginating collections, inline editing, adding and deleting records. Server-side storage persistence. Query API for game behaviors.