Lumina Text Area Append
The dumb-but-essential grid builder for Lumina composition
- prev_prompt
- lumina_area_prompt
LuminaTextAreaAppend is the least glamorous node in this pack and the one you'll reach for every time you want Lumina's composition mode to do anything. It doesn't load a model, it doesn't touch your GPU, it doesn't even touch your image. It's a pure data builder: it takes one prompt and remembers which grid cell it belongs to, then hands the result forward.
Here's the thing to understand: Lumina's composition mode doesn't take a list of prompts through a single wire. It needs a LUMINAAREAPROMPT - a list of {prompt, row, column} entries - and this node is how you build that list. One LuminaTextAreaAppend per region, chained together, then fed into LuminaGemmaTextEncodeArea and from there into the sampler.
How it works
Each instance appends one entry - prompt plus its row and column - to whatever came in on prev_prompt. Chain two nodes and you get a two-entry list. The prev_prompt input is optional; if you leave it empty, the node just starts a new list. That's the entire mechanism, and it's exactly why this node is easy to use and hard to mess up.
The inputs
prompt- the region's subject, as a multiline string. Keep it focused: "a red fox" not a full paragraph. Each region prompt gets encoded individually and folded into the global prompt, so wordiness multiplies.row/column- the grid position, each 1-8. This is how the sampler later figures out how many splits to do:LuminaT2ISamplercounts the unique rows and columns across all your area entries to derive the vertical and horizontal split numbers. Give two entries row 1 col 1 and row 2 col 2, and the model attends over a 2×2 grid even if only two cells are described.
Output: lumina_area_prompt, which you feed into the lumina_area_prompt input of LuminaGemmaTextEncodeArea (or into the next LuminaTextAreaAppend if you're still building the list).
The typical chain
LuminaTextAreaAppend (row 1, col 1, "a red fox")
LuminaTextAreaAppend (row 1, col 2, "a snowy pine forest") ──► LuminaGemmaTextEncodeArea ──► LuminaT2ISampler
LuminaTextAreaAppend (row 2, col 1, "a river") ──┘
Installing
Part of the same pack, installed once:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-LuminaWrapper
pip install -r requirements.txt
or via ComfyUI Manager (search "ComfyUI-LuminaWrapper"), then restart ComfyUI.
The gotchas, such as they are
Since the node is just bookkeeping, the mistakes are all upstream of it. The classic one: giving every entry the same row and column. If everything is row 1 col 1, the sampler sees one unique row and one unique column - one split - and your composition quietly becomes a plain image. Give each region its own cell. Second: rows and columns are 1-indexed, and the grid is up to 8×8; going outside that range isn't allowed by the node's limits. And third, remember this node does not care whether your workflow is connected correctly - if you wire lumina_area_prompt into the wrong encoder input, it just won't work, silently. Follow the chain above and you're fine.
Keep it simple: describe each region in a short phrase, place them in distinct cells, and let the encode node and sampler handle the rest. It's boring, it's essential, and it's the difference between "Lumina does cool compositions" and "Lumina made me a picture of a fox."
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| row | INT | 11–8 | — |
| column | INT | 11–8 | — |
| prev_promptopt | LUMINAAREAPROMPT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lumina_area_prompt | LUMINAAREAPROMPT | — |