diff --git a/README.md b/README.md
index 437786b..2e7bb07 100644
--- a/README.md
+++ b/README.md
@@ -1,121 +1,347 @@
-# 🎛️ AI Settings Manager for ComfyUI
+
+
+
-A 100% vibecoded, visual dashboard for managing, versioning, and batch-processing JSON configuration files used in AI video generation workflows (I2V, VACE).
+
+
+
+
+
+
-This tool consists of two parts:
-1. **Streamlit Web Interface:** A Dockerized editor to manage prompts, LoRAs, settings, and **branching history**.
-2. **ComfyUI Custom Nodes:** A set of nodes to read these JSON files (including custom keys) directly into your workflows.
+A visual dashboard for managing, versioning, and batch-processing JSON configuration files used in AI video generation workflows (I2V, VACE). Two parts:
-  
----
-
-## ✨ Features
-
-### 📝 Single File Editor
-* **Visual Interface:** Edit Prompts, Negative Prompts, Seeds, LoRAs, and advanced settings (Camera, FLF, VACE params) without touching raw JSON.
-* **🔧 Custom Parameters:** Add arbitrary key-value pairs (e.g., `controlnet_strength`, `my_custom_value`) that persist and can be read by ComfyUI.
-* **Conflict Protection:** Prevents accidental overwrites if the file is modified by another tab or process.
-* **Snippet Library:** Save reusable prompt fragments (e.g., "Cinematic Lighting", "Anime Style") and append them with one click.
-
-### 🚀 Batch Processor
-* **Sequence Management:** Create unlimited sequences within a single JSON file.
-* **Smart Import:** Copy settings from **any other file** or **history entry** into your current batch sequence.
-* **Custom Keys per Shot:** Define unique parameters for specific shots in a batch (e.g., Shot 1 has `fog: 0.5`, Shot 2 has `fog: 0.0`).
-* **Promote to Single:** One-click convert a specific batch sequence back into a standalone Single File.
-
-### 🕒 Visual Timeline (New!)
-* **Git-Style Branching:** A dedicated tab visualizes your edit history as a **horizontal node graph**.
-* **Non-Destructive:** If you jump back to an old version and make changes, the system automatically **forks a new branch** so you never lose history.
-* **Visual Diff:** Inspect any past version and see a "Delta View" highlighting exactly what changed (e.g., `Seed: 100 -> 555`) compared to your current state.
-* **Interactive Mode (WIP):** A zoomed-out, interactive canvas to explore complex history trees.
+1. **Streamlit Web Interface** — Dockerized editor for prompts, LoRAs, settings, and branching history
+2. **ComfyUI Custom Nodes** — Read JSON files directly into workflows, including a dynamic node that auto-discovers keys
---
-## 🛠️ Installation
+## Features
-### 1. Unraid / Docker Setup (The Manager)
-This tool is designed to run as a lightweight container on Unraid.
+
+
+
-1. **Prepare a Folder:** Create a folder on your server (e.g., `/mnt/user/appdata/ai-manager/`) and place the following files inside:
- * `app.py`
- * `utils.py`
- * `history_tree.py` (New logic engine)
- * `tab_single.py`
- * `tab_batch.py`
- * `tab_timeline.py`
- * `tab_timeline_wip.py`
-2. **Add Container in Unraid:**
- * **Repository:** `python:3.12-slim`
- * **Network:** `Bridge`
- * **WebUI:** `http://[IP]:[PORT:8501]`
-3. **Path Mappings:**
- * **App Location:** Container `/app` ↔ Host `/mnt/user/appdata/ai-manager/`
- * **Project Data:** Container `/mnt/user/` ↔ Host `/mnt/user/` (Your media/JSON location)
-4. **Post Arguments (Crucial):**
- Enable "Advanced View" and paste this command to install the required graph engines:
- ```bash
- /bin/sh -c "apt-get update && apt-get install -y graphviz && pip install streamlit opencv-python-headless graphviz streamlit-agraph && cd /app && streamlit run app.py --server.headless true --server.port 8501"
- ```
+
+
+Single File Editor
+
-### 2. ComfyUI Setup (The Nodes)
-1. Navigate to your ComfyUI installation: `ComfyUI/custom_nodes/`
-2. Create a folder named `ComfyUI-JSON-Loader`.
-3. Place the `json_loader.py` file inside.
-4. Restart ComfyUI.
+- Visual editing of Prompts, Seeds, LoRAs, Camera, FLF, VACE params
+- Custom key-value parameters that persist and flow to ComfyUI
+- Conflict protection against external file modifications
+- Snippet library for reusable prompt fragments
+
+
+
+
+
+
+Batch Processor
+
+
+- Unlimited sequences within a single JSON file
+- Import settings from any file or history entry
+- Per-shot custom keys (e.g. Shot 1: `fog: 0.5`, Shot 2: `fog: 0.0`)
+- Clone, reorder, and manage sequences visually
+
+
+
+
+
+
+
+
+Visual Timeline
+
+
+- Git-style branching with horizontal node graph
+- Non-destructive: forking on old-version edits preserves all history
+- Visual diff highlighting changes between any two versions
+- Restore any past state with one click
+
+
+
+
+
+
+Dynamic Node (New)
+
+
+- Auto-discovers all JSON keys and exposes them as outputs
+- No code changes needed when JSON structure evolves
+- Preserves connections when keys are added on refresh
+- Native type handling: `int`, `float`, `string`
+
+
+
+### Dynamic Node
+
+The **JSON Loader (Dynamic)** node reads your JSON file and automatically creates output slots for every key it finds. No code changes needed when your JSON structure evolves.
+
+**How it works:**
+1. Enter a `json_path` and `sequence_number`
+2. Click **Refresh Outputs**
+3. Outputs appear named after JSON keys, with native types preserved
+
+
+
+
+
+**Type handling:** Values keep their native Python type — `int` stays `int`, `float` stays `float`, booleans become `"true"`/`"false"` strings, everything else becomes `string`. The `*` (any) output type allows connecting to any input.
+
+**Refreshing is safe:** Clicking Refresh after adding new keys to your JSON preserves all existing connections. Only removed keys get disconnected.
+
+### Standard & Batch Nodes
+
+| Node | Outputs | Use Case |
+|:---|:---|:---|
+| **JSON Loader (Standard/I2V)** | prompts, flf, seed, paths | Single-file I2V workflows |
+| **JSON Loader (VACE Full)** | above + VACE integers | Single-file VACE workflows |
+| **JSON Loader (LoRAs Only)** | 6 LoRA strings | Single-file LoRA loading |
+| **JSON Batch Loader (I2V)** | prompts, flf, seed, paths | Batch I2V with sequence_number |
+| **JSON Batch Loader (VACE)** | above + VACE integers | Batch VACE with sequence_number |
+| **JSON Batch Loader (LoRAs)** | 6 LoRA strings | Batch LoRA loading |
+| **JSON Loader (Custom 1/3/6)** | 1, 3, or 6 string values | Manual key lookup by name |
+
+---
+
+## Web Interface Usage
-### The Web Interface
Navigate to your container's IP (e.g., `http://192.168.1.100:8501`).
-* **Custom Parameters:** Scroll to the bottom of the editor (Single or Batch) to find the "🔧 Custom Parameters" section. Type a Key (e.g., `strength`) and Value (e.g., `0.8`) and click "Add".
-* **Timeline:** Switch to the **Timeline Tab** to see your version history.
- * **Restore:** Select a node from the list or click on the graph (WIP tab) to view details. Click "Restore" to revert settings to that point.
- * **Branching:** If you restore an old node and click "Save/Snap", a new branch is created automatically.
+**Path navigation** supports case-insensitive matching — typing `/media/P5/myFolder` will resolve to `/media/p5/MyFolder` automatically.
-### ComfyUI Workflow
-Search for "JSON" in ComfyUI to find the new nodes.
-
-
-
-#### Standard Nodes
-| Node Name | Description |
-| :--- | :--- |
-| **JSON Loader (Standard/I2V)** | Outputs prompts, FLF, Seed, and paths for I2V. |
-| **JSON Loader (VACE Full)** | Outputs everything above plus VACE integers (frames to skip, schedule, etc.). |
-| **JSON Loader (LoRAs Only)** | Outputs the 6 LoRA strings. |
-
-#### Universal Custom Nodes (New!)
-These nodes read *any* key you added in the "Custom Parameters" section. They work for both Single files (ignores sequence input) and Batch files (reads specific sequence).
-
-| Node Name | Description |
-| :--- | :--- |
-| **JSON Loader (Custom 1)** | Reads 1 custom key. Input the key name (e.g., "strength"), outputs the value string. |
-| **JSON Loader (Custom 3)** | Reads 3 custom keys. |
-| **JSON Loader (Custom 6)** | Reads 6 custom keys. |
-
-#### Batch Nodes
-These nodes require an integer input (Primitive or Batch Indexer) for `sequence_number`.
-
-| Node Name | Description |
-| :--- | :--- |
-| **JSON Batch Loader (I2V)** | Loads specific sequence data for I2V. |
-| **JSON Batch Loader (VACE)** | Loads specific sequence data for VACE. |
-| **JSON Batch Loader (LoRAs)** | Loads specific LoRAs for that sequence. |
+- **Custom Parameters:** Scroll to "Custom Parameters" in any editor tab. Type a key and value, click Add.
+- **Timeline:** Switch to the Timeline tab to see version history as a graph. Restore any version, and new edits fork a branch automatically.
+- **Snippets:** Save reusable prompt fragments and append them with one click.
---
-## 📂 File Structure
+## JSON Format
-```text
-/ai-manager
-├── app.py # Main entry point & Tab controller
-├── utils.py # I/O logic, Config, and Defaults
-├── history_tree.py # Graph logic, Branching engine, Graphviz generator
-├── tab_single.py # Single Editor UI
-├── tab_batch.py # Batch Processor UI
-├── tab_timeline.py # Stable Timeline UI (Compact Graphviz + Diff Inspector)
-├── tab_timeline_wip.py # Interactive Timeline UI (Streamlit Agraph)
-└── json_loader.py # ComfyUI Custom Node script
+```jsonc
+{
+ "batch_data": [
+ {
+ "sequence_number": 1,
+ "general_prompt": "A cinematic scene...",
+ "negative": "blurry, low quality",
+ "seed": 42,
+ "flf": 0.5,
+ "camera": "pan_left",
+ "video file path": "/data/input.mp4",
+ "reference image path": "/data/ref.png",
+ "my_custom_key": "any value"
+ // ... any additional keys are auto-discovered by the Dynamic node
+ }
+ ]
+}
+```
+
+---
+
+## File Structure
+
+```
+ComfyUI-JSON-Manager/
+├── __init__.py # ComfyUI entry point, exports nodes + WEB_DIRECTORY
+├── json_loader.py # All ComfyUI node classes + /json_manager/get_keys API
+├── web/
+│ └── json_dynamic.js # Frontend extension for Dynamic node (refresh, show/hide)
+├── app.py # Streamlit main entry point & navigator
+├── utils.py # I/O, config, defaults, case-insensitive path resolver
+├── history_tree.py # Git-style branching engine
+├── tab_single.py # Single file editor UI
+├── tab_batch.py # Batch processor UI
+├── tab_timeline.py # Visual timeline UI
+├── tab_comfy.py # ComfyUI server monitor
+├── tab_raw.py # Raw JSON editor
+└── tests/
+ ├── test_json_loader.py
+ ├── test_utils.py
+ └── test_history_tree.py
+```
+
+---
+
+## License
+
+[Apache 2.0](LICENSE)