Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/docs-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Documentation Pages

on:
push:
branches: [main]
paths:
- "docs/**"
- "mkdocs.yml"
- "requirements-docs.txt"
- "scripts/build-docs.ps1"
- ".github/workflows/docs-pages.yml"
pull_request:
paths:
- "docs/**"
- "mkdocs.yml"
- "requirements-docs.txt"
- "scripts/build-docs.ps1"
- ".github/workflows/docs-pages.yml"

# Publication runs to completion instead of being cancelled by a later merge,
# so a half-written deploy never replaces a good site. Pull-request builds get
# their own group, so a merge never queues behind review feedback.
concurrency:
group: docs-pages-${{ github.ref }}
cancel-in-progress: false

permissions:
contents: read

jobs:
build:
name: Build the documentation site
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: '3.12'

- name: Build the site (strict)
shell: pwsh
run: pwsh -NoProfile -File scripts/build-docs.ps1

- name: Upload the built site
uses: actions/upload-pages-artifact@v5
with:
path: site

# The repository's Pages source is already GitHub Actions, so the first push
# to main that touches documentation publishes the site. No Unity, no
# credentials, and no generated content beyond the strict build.
deploy:
name: Publish to GitHub Pages
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy
id: deployment
uses: actions/deploy-pages@v5
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ agents.config.json
agents.config.json.meta
opencode.json.meta

# Documentation site build output and its virtual environment
/site/
/site.meta
.docs-venv/

# Unity MCP bridge artifacts (editor state, registry, captures, generated images)
.artifacts/
GOAL.md*
Expand Down
112 changes: 112 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Getting started

This page takes you from an empty project to an edited asset. It covers the
first session only. The
[README](https://github.com/wallstop/DataVisualizer#readme) documents the full
feature set, including themes, processors, and extension points.

## Requirements

- Unity 2021.3 or newer. `package.json` declares that floor, and the window is
developed and tested on Unity 6. The 2021.3 editor is not part of the local
validation yet, which
[#86](https://github.com/wallstop/DataVisualizer/issues/86) tracks.
- No additional package dependencies.

## Install the package

1. Open **Window → Package Manager**.
2. Select **+**, then **Add package from git URL**.
3. Enter `https://github.com/wallstop/DataVisualizer.git` and select **Add**.

Unity imports the package, and the menu item appears.

## Open the window

Select **Tools → Wallstop Studios → Data Visualizer**, then dock it next to the
Inspector. The window has three panels:

- **Namespaces and types** (left) lists your ScriptableObject types by C#
namespace. Expand a namespace, then select a type to load its instances.
- **Objects** (center) lists every instance of the selected type. One row is
selected at a time.
- **Inspector** (right) shows the full inspector for the selected asset,
including custom editors and Odin Inspector integration.

## Add your types

Three controls above the namespace panel fill the catalog:

- **Search Types** queries the ScriptableObject types Unity knows about. Add
single types or a whole namespace in one action.
- **Scan Asset Folder** crawls a folder and registers the types and existing
assets it finds. Use it to adopt a project that already has data.
- **Scan Scripts Folder** registers types from source folders, which is the
right choice before you create any assets.

Removing a type or namespace only stops Data Visualizer from tracking it. Your
assets stay on disk.

## Edit your first asset

1. Select a type in the left panel.
2. Select an instance in the middle panel.
3. Edit a field in the right panel. The change saves immediately, as in Unity's
own Inspector.

Use the buttons above the object list to manage the selection: **Clone** writes
a copy with a `Clone` suffix beside the original, **Rename** renames the asset
on disk, **Move** retargets it to another folder, and **Delete** removes it
after you confirm.

## Create an asset

Select **Create** to add a new instance of the active type. The asset lands in
your **Data Folder**, which you set under **Settings**. Clones always stay
beside their original, whatever the Data Folder is.

## Filter and search

- The filter field above the namespace list narrows the type rows by display
name, without case sensitivity. Namespace headers stay visible.
- The search box above the object list searches the text of all loaded
instances, so you can jump to an asset by its contents.
- Drag labels from **Available** into the **AND:** or **OR:** rows to show only
assets that carry them. The **AND &&** and **OR ||** toggle switches between
matching every dragged label and matching any of them.

## Keep your arrangement

Pane widths, ordering, tracked types, and your selection persist between
sessions. Under **Settings**, choose where that state lives:

- **Persist state in user settings** (default) stores it in your local user
cache, so each developer keeps a private arrangement and version control
stays free of layout churn.
- The project settings asset stores the state in the repository, which suits a
team that wants one shared arrangement.

**Select active object** mirrors your Data Visualizer selection in Unity's
Inspector, and **Data Folder** sets where new assets are created.

## While the editor is playing

Entering Play Mode pauses package-driven work. The window keeps the last loaded
view and shows *Package editing is paused during Play Mode*. While it is paused:

- **Create**, the add-type controls, and the inspector are disabled, and the
inspector shows read-only content.
- Asset operations are refused: clone, rename, move, delete, and label changes.
- Selecting another type does not load its instances, and the catalog does not
change.

Everything resumes when you leave Play Mode.

## Next steps

- Themes: pick Classic, Nord, Dracula, Compact, or Minimal under **Settings →
Theme**, or author your own.
- Extensibility: derive from `BaseDataObject`, implement the lifecycle
interfaces, and return your own UI Toolkit content from `BuildGUI`.
- The [README](https://github.com/wallstop/DataVisualizer#readme) documents
every control, the theme tokens, and the runtime extension points.
7 changes: 7 additions & 0 deletions docs/getting-started.md.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 48 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Data Visualizer

Data Visualizer is a Unity editor window for ScriptableObject-heavy projects.
It gathers your data in one place: a catalog of your ScriptableObject types
organized by namespace, a list of every instance of the selected type, and the
inspector for the asset you picked. You edit, reorder, and batch-process data
without moving between the Project panel and the Inspector.

Data Visualizer is free forever. There are no subscriptions, no paid upgrades,
and no feature-gated tiers. The full source is MIT-licensed, and every
capability described here ships in the free package.

## What it does

| Task | What the window gives you |
| --- | --- |
| Find | Search your ScriptableObject types by name, add a whole namespace at once, or scan a folder for assets you already have. |
| Inspect | Edit the selected asset in the inspector you already know, including custom editors and Odin Inspector integration. |
| Organize | Reorder namespaces, types, and instances, filter by label, and keep the arrangement across sessions. |
| Edit | Clone, rename, move, delete, and create assets in place, then run processors over one type or all of its instances. |

## Requirements

- Unity 2021.3 or newer, the floor declared in `package.json`. The window is
developed and tested on Unity 6.
- No additional package dependencies.

## Install

1. Open **Window → Package Manager**.
2. Select **+**, then **Add package from git URL**.
3. Enter `https://github.com/wallstop/DataVisualizer.git` and select **Add**.

Open the window with **Tools → Wallstop Studios → Data Visualizer**.
[Getting started](getting-started.md) walks through the first session.

!!! note

Data Visualizer is alpha software. It was built for wallstop studios'
internal use, there is no support commitment yet, and breaking changes can
arrive in any release. Feel free to use it, and report what breaks.

## Where to go next

- [Getting started](getting-started.md) — install the package, open the window, and edit your first asset.
- [README](https://github.com/wallstop/DataVisualizer#readme) — the full feature guide, including themes, search, filtering, persistence, and extension points.
- [Video walkthrough](https://youtu.be/3oUxUSKNyhw) — a visual tour of the window.
- [Issues](https://github.com/wallstop/DataVisualizer/issues) — known problems and feature requests.
7 changes: 7 additions & 0 deletions docs/index.md.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 56 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Documentation site configuration. The site is built into site/, which is
# gitignored and excluded from the UPM and npm package payloads.
site_name: Data Visualizer
site_description: Find, inspect, organize, and edit ScriptableObject data in one Unity editor window.
site_url: https://wallstop.github.io/DataVisualizer/
repo_url: https://github.com/wallstop/DataVisualizer
edit_uri: edit/main/docs/

docs_dir: docs
site_dir: site
strict: true

# admonition backs the `!!! note` callouts; tables and fenced code are already
# MkDocs defaults.
markdown_extensions:
- admonition

# The README screenshots stay out of the site until the offscreen capture path
# paints every element (issue #114). The README links to them from
# raw.githubusercontent.com, so they stay in the repository. Unity's .meta
# companions are importer bookkeeping and must not be published either.
exclude_docs: |
images/
*.meta

theme:
name: material
features:
- navigation.sections
- navigation.top
- search.highlight
- search.suggest
palette:
- media: "(prefers-color-scheme: light)"
scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode

nav:
- Home: index.md
- Getting started: getting-started.md

validation:
nav:
omitted_files: warn
not_found: warn
links:
not_found: warn
absolute_links: relative_to_docs
unrecognized_links: warn
7 changes: 7 additions & 0 deletions mkdocs.yml.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions requirements-docs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Documentation build dependencies. Development only: neither this file nor
# the built site is part of the UPM or npm package payload.
mkdocs==1.6.1
mkdocs-material==9.7.7
7 changes: 7 additions & 0 deletions requirements-docs.txt.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading