DOGMA Local Prompt v26.1 — Text Safe
DOGMA Local Prompt v26.1 — Text Safe
- prompt
- info
The single most damage-prone thing in a photo restoration pipeline is a letter. A model asked to sharpen a building will happily decide the shop name was SMITH & SONS and render it as SMITH & SON, or invent a logo, or "correct" a word it thinks is misspelled. Blurry text is the one region where a confident model is a liability.
v26.1 is the same sentence filter as v26, hardened for exactly that, and with a text lock that applies no matter what category you hand it.
What it is
A subclass of DOGMALocalPromptV26, so it inherits the cleaning, the length cap, the safe default and the per-category locks. It changes two things: the destructive filter gets a much wider vocabulary, and the appended lock is no longer category-dependent - every prompt gets a text-identity clause.
This is the node to use in any graph where signage, lettering, plates or logos are visible, which is nearly every street scene. The author paired it with a matching planner, DOGMASectorPlanV261, which simply refuses to route any text-bearing category into local generation at all. Two belts, one set of braces.
How it works
The regex is where the version earns its name. On top of remove/delete/erase/eliminate/discard/take away, it catches replace, rewrite, rename, respell and re-spell; "correct spelling" and "correct the text"; any phrasing of changing the text, wording, letters, lettering or logo; and inventing or generating new text, words, letters or logos. The sentence-level logic is unchanged - a sentence containing any of those is dropped entirely, survivors are rejoined, and if nothing survives you get the same safe default.
That vocabulary is a direct response to a specific failure mode: the VLM sees soft, unreadable lettering and reasonably concludes the repair is to render some. The filter's job is to make that conclusion unexpressible.
Then the lock, which is now unconditional. Every prompt ends with a clause pinning all visible text as fixed identity - same glyph shapes, same character sequence, same wording, same logo, same placement, size and perspective - and adding the crucial half-sentence: blurry or unreadable text stays blurry and ambiguous rather than becoming different words. Text-bearing pixels are not to be altered beyond incidental continuity at the feather edge. Category-specific clauses for people and vehicles are appended after it, so you get both.
Inputs and outputs
Two inputs, both forced STRING sockets: category and vlm_instruction. Identical signature to v26, which means you can swap the node in place without rewiring anything - a nice property in a pack where version mixing is otherwise a live hazard.
Two outputs: prompt (STRING), and info (STRING) reporting the category, the character count, and specifically that text-rewrite and destructive instructions were filtered. The info string also says TEXTSAFE, which is how you tell at a glance which of the two prompt nodes you're actually running.
Install
ComfyUI Manager → search DOGMA Nodes (publisher axior), install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
# restart ComfyUI
No external Python packages - a one-line requirements.txt stating there are none - and no model files. Pure string work.
Common issues
The honest limitation: this is prompt hygiene, not a mask. A model can ignore a preservation clause, and a mid-strength re-render at high denoise can still soften glyph edges into ambiguity that then gets "helpfully" resolved. If text matters, the guarantee you want is geometric - DOGMAGlobalRefineMaskV14 builds a refine mask that excludes signage pixels outright, which means no generator touches them at all. Use the prompt lock to reduce the odds and the mask to remove them.
The second is the cascade of filtering. Because whole sentences are dropped on a keyword, a well-intentioned VLM report can lose most of its content - this version bans more words than v26 and therefore drops more sentences. When a repair comes back looking timid, read info, and if the character count is suspiciously close to the length of the fallback sentence, the model's entire answer was filtered out. That's the filter working and the pipeline losing information at the same time; the fix is a better vlm_instruction, not a looser node.
Last, the family note: version soup is the pack's defining quirk, so if you're running a v26 pipeline, check which of the two nodes is sitting in your graph before you debug a prompt problem - the info output is the only visible difference.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| category | STRING | — | |
| vlm_instruction | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| info | STRING | — |