diff --git a/Docs/example_workflows/AF-Edit_Generated_Prompt.json b/Docs/example_workflows/AF-Edit_Generated_Prompt.json
new file mode 100644
index 0000000..b90b99c
--- /dev/null
+++ b/Docs/example_workflows/AF-Edit_Generated_Prompt.json
@@ -0,0 +1 @@
+{"id":"b2be4688-a078-42ef-bd09-bcd14a89bde2","revision":0,"last_node_id":49,"last_link_id":19,"nodes":[{"id":10,"type":"AF_Edit_Generated_Prompt","pos":[1414,410],"size":[930,390],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"input_text","name":"input_text","shape":7,"type":"STRING","link":18},{"localized_name":"generated_prompt","name":"generated_prompt","type":"STRING","widget":{"name":"generated_prompt"},"link":null},{"localized_name":"manual_or_paste_generated","name":"manual_or_paste_generated","type":"STRING","widget":{"name":"manual_or_paste_generated"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[19]}],"properties":{"aux_id":"alFrame/ComfyUI-AF-Pack-Prompt-Nodes","ver":"19497b5c8a39ac5aab32692a226489d40d32b2a0","Node name for S&R":"AF_Edit_Generated_Prompt","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":["No input connected","","","",""],"color":"#232","bgcolor":"#353"},{"id":49,"type":"PrimitiveStringMultiline","pos":[2396,410],"size":[590,250],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":19}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Output from AF - Edit Generated Prompt Node","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#232","bgcolor":"#353"},{"id":48,"type":"PrimitiveStringMultiline","pos":[772,410],"size":[590,250],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[18]}],"title":"Symbolic Node For Your LLM Setup","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":["This Here symbolizes your Ollama, or any other LLM input source."],"color":"#223","bgcolor":"#335"},{"id":13,"type":"MarkdownNote","pos":[180,410],"size":[550,580],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.4","input_ue_unconnectable":{}}},"widgets_values":["# AF - Edit Generated Prompt Node\n\n### This is a very simple setup using my Edit Prompt Node\n\nThe \"Symbolic Node For Your LLM Setup\" node here is symbolic for the LLM setup you might be running.\n\nI strongly suggest that you watch the tutorial by [Pixaroma](https://www.youtube.com/watch?v=eK6MXm7q37c), which explains in detail how to setup an LLM using Ollama in your workflows.
\n\n---\n\n### What it does and how it works\n\nThe basic concept is to plug an LLM connection to the input of the **AF - Edit Generated Prompt** node. \n\nThen you can either:\n\n- Pass on the prompt unedited
\n- Click the **Copy Generated Prompt for Editing** button, which will copy the received prompt to the lower field in the node, where you can edit it.
\n\n**NOTE**: If the editable field is empty, the unedited prompt will be passed on.\n\n---\n### Github Link to the node\nGet the node [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes) \nReport issues [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/issues) \n"],"color":"#432","bgcolor":"#653"}],"links":[[18,48,0,10,0,"STRING"],[19,10,0,49,0,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7597231976969298,"offset":[633.7978164256143,-13.869639263071651]},"ue_links":[],"links_added_by_ue":[]},"version":0.4}
\ No newline at end of file
diff --git a/Docs/example_workflows/AF-Save_and_Load_Prompt_History.json b/Docs/example_workflows/AF-Save_and_Load_Prompt_History.json
new file mode 100644
index 0000000..4da481f
--- /dev/null
+++ b/Docs/example_workflows/AF-Save_and_Load_Prompt_History.json
@@ -0,0 +1 @@
+{"id":"f6c33d4a-e896-427a-a008-f70876fb1df8","revision":0,"last_node_id":21,"last_link_id":9,"nodes":[{"id":4,"type":"PrimitiveStringMultiline","pos":[145,410],"size":[610,88],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[2]}],"title":"Global Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#322","bgcolor":"#533"},{"id":5,"type":"PrimitiveStringMultiline","pos":[145,540],"size":[610,88],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[3]}],"title":"Local Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#232","bgcolor":"#353"},{"id":16,"type":"PrimitiveStringMultiline","pos":[807,1130],"size":[710,88],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":6}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Global Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#322","bgcolor":"#533"},{"id":17,"type":"PrimitiveStringMultiline","pos":[807,1260],"size":[710,88],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":7}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Local Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#232","bgcolor":"#353"},{"id":18,"type":"PrimitiveStringMultiline","pos":[807,1390],"size":[710,88],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":8}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Local Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#322","bgcolor":"#533"},{"id":15,"type":"PrimitiveStringMultiline","pos":[807,1000],"size":[710,88],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":5}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Global Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#232","bgcolor":"#353"},{"id":3,"type":"PrimitiveStringMultiline","pos":[145,280],"size":[610,88],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[1]}],"title":"Global Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#232","bgcolor":"#353"},{"id":1,"type":"AF_Save_Prompt_History","pos":[807,441],"size":[710,166],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"global_positive","name":"global_positive","shape":7,"type":"STRING","link":1},{"localized_name":"global_negative","name":"global_negative","shape":7,"type":"STRING","link":2},{"localized_name":"local_positive","name":"local_positive","shape":7,"type":"STRING","link":3},{"localized_name":"local_negative","name":"local_negative","shape":7,"type":"STRING","link":4},{"localized_name":"directory","name":"directory","type":"STRING","widget":{"name":"directory"},"link":null},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"project","name":"project","type":"STRING","widget":{"name":"project"},"link":null}],"outputs":[{"localized_name":"global_positive","name":"global_positive","type":"STRING","links":null},{"localized_name":"global_negative","name":"global_negative","type":"STRING","links":null},{"localized_name":"local_positive","name":"local_positive","type":"STRING","links":null},{"localized_name":"local_negative","name":"local_negative","type":"STRING","links":null}],"properties":{"aux_id":"alFrame/ComfyUI-AF-Pack-Prompt-Nodes","ver":"19497b5c8a39ac5aab32692a226489d40d32b2a0","Node name for S&R":"AF_Save_Prompt_History","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":["Prompt-History","default","default"],"color":"#432","bgcolor":"#653"},{"id":2,"type":"AF_Load_Prompt_History","pos":[145,1000],"size":[610,480],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"directory","name":"directory","type":"STRING","widget":{"name":"directory"},"link":null},{"localized_name":"filename","name":"filename","type":"COMBO","widget":{"name":"filename"},"link":null},{"localized_name":"timestamp_index","name":"timestamp_index","type":"INT","widget":{"name":"timestamp_index"},"link":null},{"localized_name":"tip","name":"tip","type":"STRING","widget":{"name":"tip"},"link":null}],"outputs":[{"localized_name":"global_positive","name":"global_positive","type":"STRING","links":[5]},{"localized_name":"global_negative","name":"global_negative","type":"STRING","links":[6]},{"localized_name":"local_positive","name":"local_positive","type":"STRING","links":[7]},{"localized_name":"local_negative","name":"local_negative","type":"STRING","links":[8]},{"localized_name":"info","name":"info","type":"STRING","links":[9]}],"properties":{"aux_id":"alFrame/ComfyUI-AF-Pack-Prompt-Nodes","ver":"19497b5c8a39ac5aab32692a226489d40d32b2a0","Node name for S&R":"AF_Load_Prompt_History","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":["AF-PromptHistory","AF-Prompt-History",0,"💡 TIP: Connect 'info' output to Show Text node to see this selection guide!"],"color":"#223","bgcolor":"#335"},{"id":6,"type":"PrimitiveStringMultiline","pos":[145,670],"size":[610,88],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":null}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[4]}],"title":"Local Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#322","bgcolor":"#533"},{"id":20,"type":"MarkdownNote","pos":[-910,280],"size":[1000,610],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[],"title":"Info on \"AF - Save Prompt History\" Node","properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.4","input_ue_unconnectable":{}}},"widgets_values":["# AF - Save Prompt History Node\n\n### This is a very simple setup using my Save Prompt History Node\n\nThe group of nodes on the left side represent a prompting setup you might have in your workflow. The prompts can come from anywhere. Either form an LLM, or simple Prompt input boxes.\n\n**NOTE**: The input has to be in plain text !!\n\n---\n\n### What it does and how it works\n\nThe basic concept is:\n\n1. Plug your prompting text nodes to the **AF - Save Prompt History** node inputs. You can plug 1 to 4 prompt source, but not all have to be connected.\n\n2. Setup the directory you want to save your prompt history to, set a filename and add a project tag.\n\n**NOTE**: The project tag is mainly thought of as a mental note to yourself.\n\nIt can be various things like:\n- The actual project name\n- Status of the render (e.g. \"Test\", \"Layers\", \"Final\"\n- Or whatever you like.\n\n**IMPORTANT**: when you don't setup a folder, the prompts will be stored inside the custom nodes directory.\n- /YourComfyUIInstallDirectory/custom_nodes/ComfyUI-AF-Pack-Prompt-Nodes/Prompt-History/\n\n---\n### Github Link to the node\nGet the node [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes) \nReport issues [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/issues) "],"color":"#432","bgcolor":"#653"},{"id":21,"type":"MarkdownNote","pos":[-910,1000],"size":[1000,550],"flags":{},"order":6,"mode":0,"inputs":[],"outputs":[],"title":"Info on \"AF - Load Prompt History\" Node","properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.4","input_ue_unconnectable":{}}},"widgets_values":["# AF - Load Prompt History Node\n\n### This is a very simple setup using my Load Prompt History Node\n\nThe idea here is to reuse your hard earned prompts from an archive file, saved with the **AF - Save Prompt History** Node\n\n---\n\n### What it does and how it works\n\nThe basic concept is:\n\n1. Plug your prompting text nodes to the **AF - Save Prompt History** node inputs. You can plug 1 to 4 prompt source, but not all have to be connected.\n\n2. Setup the **directory** you want to save your prompt history to, set a **filename** and add a **project** tag.\n\n**NOTE**:\n- The directory path is root is your ComfyUI **output** folder !!\n- The project tag is mainly thought of as a mental note to yourself.\n\n**TIPS on Project Tags:**\n- The actual project name\n- Status of the render (e.g. \"Test\", \"Layers\", \"Final\", etc.)\n- Or whatever you like.\n\n---\n### Github Link to the node\nGet the node [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes) \nReport issues [here](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/issues) "],"color":"#432","bgcolor":"#653"},{"id":19,"type":"PrimitiveStringMultiline","pos":[807,1520],"size":[710,250],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"value","name":"value","type":"STRING","widget":{"name":"value"},"link":9}],"outputs":[{"localized_name":"STRING","name":"STRING","type":"STRING","links":[]}],"title":"Local Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.67","Node name for S&R":"PrimitiveStringMultiline","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.4"}},"widgets_values":[""],"color":"#233","bgcolor":"#355"}],"links":[[1,3,0,1,0,"STRING"],[2,4,0,1,1,"STRING"],[3,5,0,1,2,"STRING"],[4,6,0,1,3,"STRING"],[5,2,0,15,0,"STRING"],[6,2,1,16,0,"STRING"],[7,2,2,17,0,"STRING"],[8,2,3,18,0,"STRING"],[9,2,4,19,0,"STRING"]],"groups":[],"config":{},"extra":{"ue_links":[],"ds":{"scale":0.5797380319148937,"offset":[1579.2469303587684,-163.20453799978463]}},"version":0.4}
\ No newline at end of file
diff --git a/Docs/screenshots/AF-Edit_Generated_Prompt_Node.png b/Docs/screenshots/AF-Edit_Generated_Prompt_Node.png
new file mode 100644
index 0000000..73441ae
Binary files /dev/null and b/Docs/screenshots/AF-Edit_Generated_Prompt_Node.png differ
diff --git a/Docs/screenshots/AF-Edit_Generated_Prompt_Workflow_Example.png b/Docs/screenshots/AF-Edit_Generated_Prompt_Workflow_Example.png
new file mode 100644
index 0000000..45572d2
Binary files /dev/null and b/Docs/screenshots/AF-Edit_Generated_Prompt_Workflow_Example.png differ
diff --git a/Docs/screenshots/AF-Load_Prompt_History_Node.png b/Docs/screenshots/AF-Load_Prompt_History_Node.png
new file mode 100644
index 0000000..7e6777d
Binary files /dev/null and b/Docs/screenshots/AF-Load_Prompt_History_Node.png differ
diff --git a/Docs/screenshots/AF-Load_Prompt_History_Workflow_Example.png b/Docs/screenshots/AF-Load_Prompt_History_Workflow_Example.png
new file mode 100644
index 0000000..49b122b
Binary files /dev/null and b/Docs/screenshots/AF-Load_Prompt_History_Workflow_Example.png differ
diff --git a/Docs/screenshots/AF-Save_Prompt_History_Node.png b/Docs/screenshots/AF-Save_Prompt_History_Node.png
new file mode 100644
index 0000000..2d246ae
Binary files /dev/null and b/Docs/screenshots/AF-Save_Prompt_History_Node.png differ
diff --git a/Docs/screenshots/AF-Save_Prompt_History_Workflow_Example.png b/Docs/screenshots/AF-Save_Prompt_History_Workflow_Example.png
new file mode 100644
index 0000000..6d06961
Binary files /dev/null and b/Docs/screenshots/AF-Save_Prompt_History_Workflow_Example.png differ
diff --git a/README.md b/README.md
index 40a6f16..0a1b3bf 100644
--- a/README.md
+++ b/README.md
@@ -34,14 +34,14 @@ git clone https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes.git
- **Lower field** (editable): Manual input or edited version
- **Output priority**: Lower field → Upper field → Empty string
--
+-
### Typical Usage
```
[Ollama/LLM Node] → [AF - Edit Generated Prompt] → [CLIP Text Encode]
```
-
+
[Download example workflow](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/example_workflows/AF-Edit_Generated_Prompt.json)
@@ -53,7 +53,7 @@ git clone https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes.git
**Purpose:** Save up to 4 prompts per entry with automatic timestamps.
-
+
### Inputs
- `directory` - Folder name (default: "Prompt-History")
@@ -62,7 +62,7 @@ git clone https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes.git
- `global_positive/negative` - Main prompts (optional)
- `local_positive/negative` - Secondary prompts (optional)
-
+
[Download example workflow](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/example_workflows/AF-Save_and_Load_Prompt_History.json)
@@ -92,7 +92,7 @@ git clone https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes.git
**Purpose:** Load saved prompts using index-based time-travel through your history.
-
+
### Quick Reference
```
@@ -117,7 +117,7 @@ git clone https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes.git
- **Index selection** - Choose which timestamp to load (0 = newest)
- **Info output** - Shows selected prompt content and metadata
-
+
[Download example workflow](https://github.com/alFrame/ComfyUI-AF-Pack-Prompt-Nodes/example_workflows/AF-Save_and_Load_Prompt_History.json)
@@ -169,26 +169,19 @@ AF Load - ✓ Successfully loaded: ID: 126 | 2025-10-29 14:32:15
## 🔗 Common Workflow Patterns
-### Pattern 1: AI-Assisted with History Backup
+### AI-Assisted with History Backup with the "AF - Save Prompt History" Node
```
[LLM] → [Edit Prompt] ┬ → [CLIP Encode] → [KSampler]
└ → [Save History]
```
-### Pattern 2: Load & Compare Previous Prompts
+### "AF - Load Prompt History" Node, Compare Previous Prompts
```
[Load History: index=0] → [Edit] → [CLIP] ┐
[Load History: index=5] → [Edit] → [CLIP] ├→ [KSampler]
[Load History: index=10]→ [Edit] → [CLIP] ┘
```
-### Pattern 3: Multi-File Workflow
-```
-[Load: FileA.json] → [Edit Global+] → ┐
-[Load: FileB.json] → [Edit Local+] → ├→ [CLIP Encode]
-[Load: FileC.json] → [Edit Global-] → ┘
-```
-
---
## 🔧 Troubleshooting
@@ -211,7 +204,7 @@ AF Load - ✓ Successfully loaded: ID: 126 | 2025-10-29 14:32:15
- Look for error messages in console
### Directory not found
-- Use relative path from ComfyUI root: `AF-PromptHistory`
+- Use relative path from ComfyUI root e.g.: `AF-PromptHistory`
- Or absolute path: `/full/path/to/directory`
- Check folder exists and has read/write permissions
@@ -232,7 +225,7 @@ AF Load - ✓ Successfully loaded: ID: 126 | 2025-10-29 14:32:15
- ComfyUI (recent version recommended)
- No external dependencies required
-- Works with any LLM/text generation nodes
+- Works with any LLM/text generation nodes, or your manual prompting text nodes
---