{"id":"dev-nl/datastore-inspector","name":"datastore-inspector","scope":"dev-nl","platform":"roblox","description":"Safety-first, ProfileService-aware DataStore inspector & editor for Roblox Studio.","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"d62f77fdc902889667d07ac054bd4cdd9db15ca0311a16ea3985fcee4823bb8e","likes":0,"downloads":0,"install":"forest install dev-nl/datastore-inspector","url":"https://forest.dev/p/roblox/dev-nl/datastore-inspector","files":"https://api.forest.dev/ai/package/roblox/dev-nl/datastore-inspector/files","readme":"# DataStore Inspector & Editor\r\n\r\n> A ProfileService-aware, safety-first DataStore editor for Roblox Studio. It snapshots and diffs **before** every write, understands ProfileService profile/session structure, and gives you one-click rollback — so you can debug and migrate live player data without nuking it.\r\n\r\n<!-- Fill these in after the repo + CI + Creator Store listing exist -->\r\n[![CI](https://github.com/dev-nl/roblox-datastore-inspector/actions/workflows/ci.yml/badge.svg)](https://github.com/dev-nl/roblox-datastore-inspector/actions/workflows/ci.yml)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\r\n\r\n![demo](docs/demo.gif)\r\n\r\n## Why this exists\r\n\r\nRoblox already has good free DataStore editors — [DataDelve](https://devforum.roblox.com/t/datadelve-%E2%80%94-easy-free-datastore-editor/3067950) is excellent and general-purpose. This plugin is deliberately narrower: it's the **safety-first, ProfileService-aware** option. Every write is snapshotted and diffed first, it warns you about active session locks, and (in the Pro build) it validates data against a schema before you commit it. If you've ever edited a production key and immediately regretted it, this is for you.\r\n\r\nThis repository is the **free, open-source core** (MIT). The advanced Pro features ship as a separate paid build on the Creator Store — see [Pro features](#pro-separate-paid-build).\r\n\r\n## Safety guarantees\r\n\r\nThe core write pipeline (`WriteGuard`) holds four invariants. They're enforced in code and covered by the headless test suite (`tests/run.luau`), which drives `WriteGuard` end-to-end against a mock DataStore:\r\n\r\n1. **No write happens without a successful pre-edit snapshot.**\r\n2. **No write happens until you confirm the diff.**\r\n3. **No write clobbers a concurrent change** (writes are version-guarded).\r\n4. **A failed write leaves the value unchanged** and the snapshot recoverable.\r\n\r\n## Features\r\n\r\n### Free (this repo)\r\n\r\n- Browse DataStores and OrderedDataStores: store → key → value, paginated, with key/name autocomplete.\r\n- Pretty-printed JSON view; tree **and** raw-JSON edit modes.\r\n- Automatic pre-edit snapshot + diff preview before every write.\r\n- One-click **restore last snapshot**.\r\n- Per-key JSON export, and validated, snapshot-first JSON import.\r\n- Buffer (hex) view.\r\n- ProfileService **detection** + active-session-lock warnings.\r\n\r\n### Pro (separate paid build)\r\n\r\n- ProfileService-native tooling: structure decode, session-lock-aware editing, and guided migrations (add / rename / change type / backfill default across keys).\r\n- Schema validation (declare a shape; block writes that violate it).\r\n- Snapshot **history** with configurable retention + rollback to any entry.\r\n- Audit log, bulk operations, multi-environment (dev/test/prod), and Open Cloud backups.\r\n\r\nThe full FREE-vs-PRO breakdown is in [`masterplan.md`](masterplan.md).\r\n\r\n## Install\r\n\r\n### From the Creator Store (recommended)\r\n\r\nInstall from the listing, then open the toolbar button under the **Plugins** tab. *(Link added at launch.)*\r\n\r\n### From source (for development)\r\n\r\nRequires [Rokit](https://github.com/rojo-rbx/rokit) (or Aftman) + [Rojo](https://rojo.space) + [Wally](https://wally.run).\r\n\r\n```bash\r\n# 1. install the pinned toolchain (rojo, wally, stylua, selene)\r\nrokit install\r\n\r\n# 2. fetch dependencies\r\nwally install\r\n\r\n# 3. build straight into Studio's local plugins folder\r\nrojo build plugin.project.json --plugin DataStoreInspector.rbxm\r\n```\r\n\r\nFor live iteration, run `rojo serve plugin.project.json` and connect from the Rojo Studio plugin.\r\n\r\n> Editing DataStores from Studio requires **Studio Access to API Services** to be enabled for the target place (Game Settings → Security).\r\n\r\n## Usage\r\n\r\n1. Open the **DataStore Inspector** widget from the toolbar.\r\n2. Pick a DataStore, then a key — the value loads **read-only** first.\r\n3. Click **Edit**, change the value, and review the **diff**. A snapshot is taken automatically.\r\n4. **Confirm** to write. If something looks wrong afterward, hit **Restore last snapshot**.\r\n\r\n## Project structure\r\n\r\n```\r\nsrc/plugin/   UI only (toolbar, docked widgets) — thin, renders state, emits intents\r\nsrc/core/     logic: clients, safety (snapshot/diff/WriteGuard), retry/backoff, profileservice\r\nsrc/serde/    pure JSON encode/decode/validate + Luau<->JSON normalization (no Roblox deps)\r\ndocs/         README assets, design notes\r\nexamples/     sample DataStore + ProfileService fixtures (tests + manual QA)\r\n```\r\n\r\n`/src/plugin` never touches `DataStoreService` directly — all access goes through interfaces in `/src/core`, which keeps the logic testable and the Open Cloud split clean. Architecture and roadmap details live in [`masterplan.md`](masterplan.md).\r\n\r\n## Development\r\n\r\n```bash\r\nwally install          # dependencies\r\nstylua src tests       # format\r\nselene src tests       # lint\r\n# run the TestEZ specs with your runner of choice\r\n```\r\n\r\nCI runs StyLua + Selene + tests on every push.\r\n\r\n## Contributing\r\n\r\nIssues and PRs are welcome — bug reports for the free core especially. Please run StyLua, Selene, and the test suite before opening a PR. See `CONTRIBUTING.md`.\r\n\r\n## License\r\n\r\n[MIT](LICENSE). The Pro build and its modules are **not** covered by this license and are distributed separately.\r\n","readmeTruncated":false}