FP Tabbed Text Area
Nine tabs of prompt in one node — FP Tabbed Text Area is the anti-clutter text box
- text
You know the workflow: one text node per prompt variant, a dozen nodes scattered across the canvas, and the one you actually want to edit is always at the bottom. FP Tabbed Text Area gives you one node with up to nine named tabs instead, like browser tabs for your prompts. Flip between a character sheet, a negative-tag draft, and three stylistic variants without touching any wires.
It ships in Folded Prompts (akawana/ComfyUI-Folded-Prompts), a small utility pack by akawana that also brings the FP Folded Prompt tree editor, FP Text Clean And Splitt, and a few editor keybindings. This node is the plainest member of the family: no parsing, no folders, just organized text. If you're the kind of person who keeps five drafts of a prompt in a notes file, this is that notes file, in-graph.
How it works
Nearly all of the logic lives in the frontend. The Python backend is a couple of string joins; the real machinery is a JavaScript widget that stores your tab texts inside the workflow's graph.extra - so the tabs and their contents travel with the saved JSON, not with the node's visible widgets. Two hidden inputs, node_data_json and __fp_text__, carry the internal state (mode, active tab, tab order) and the combined text to the backend. Leave them alone; they're managed by the JS and are hidden on the node.
You control behavior through node Properties → mode:
- Separate Tabs - only the active tab goes to the output.
- Chained Tabs - every tab, joined with newlines, in tab order.
- Separate Outputs - each tab gets routed to its own output, with
textstill carrying everything chained.
The output that's always there is text (STRING), which is what you wire into a CLIP Text Encode. Two optional inputs, before_text and after_text, get prepended and appended to whatever the mode produces - handy for pinning quality tags at the front and boilerplate at the back while you only ever edit the middle.
Install
No models, no heavy dependencies, nothing but stdlib Python plus the JS - it's why this takes ten seconds:
- ComfyUI Manager → Install, search Folded prompts, install, restart.
- Or manually:
then restart ComfyUI.cd ComfyUI/custom_nodes git clone https://github.com/akawana/ComfyUI-Folded-Prompts.git
Where people get burned
The mode setting is a node property, not a widget - a first-time user stares at the node looking for a dropdown and misses it. Open the right-click Properties panel.
Second, the tab texts live in the workflow file. If you type a bunch and don't save, it's gone like any ComfyUI state, but it's easy to blame the node. Also worth knowing the repo ships several .bak files of this exact JS - the frontend has been through fixes, so if tabs act up, git pull and restart before you debug your workflow. Honest verdict: this won't change your images, it just de-clutters the canvas. For someone juggling prompt variants constantly, that's a real win; for everyone else it's a nice-to-have.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| node_data_json | STRING | Internal metadata (mode/active_tab/tab_order). Managed by JS. | |
| __fp_text__ | STRING | Internal: combined text output. Managed by JS. | |
| before_textopt | STRING | Text prepended to the output. | |
| after_textopt | STRING | Text appended to the output. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |