Parameter History
A time machine for the knob you already twisted
- history_report
Every ComfyUI user has had this exact moment: you tweaked a slider three runs ago, the image got worse, and you have no idea which knob it was. ComfyUI's own UI doesn't keep a change log - the workflow in the PNG is the state at save time, not the trail of edits that got you there. Parameter History (MEC) is the pack's answer: it logs every parameter change you make into a SQLite database in the background and gives you a node to query it.
What it records
The mechanism is a JS extension plus a query node. While you work, a companion script tracks widget changes and writes them to a SQLite DB with a timestamp and the previous value; ParameterHistoryMEC then connects to that database and renders what it finds as a plain-text report. It's an observer, not an undo system - it can tell you what changed and when and from what to what, but it won't rewind anything for you. Frame it as the evidence trail that makes your own debugging sane.
The three modes
Three modes, picked by the mode dropdown:
all_history- recent parameter changes across all nodes. Defaultlast_n_runs = 5keeps it bounded.last_run_diff- what changed between the last two runs. This is the one you actually want mid-debug: run, tweak, run, and it shows you the delta in one glance.node_class_filter- history for one node class only (e.g.KSampler), so you can ignore everything else.
The optional run_a / run_b ints let you diff two specific runs instead of the auto-detected last pair (0 = auto). Output is a single history_report STRING - human-readable text, which is the right call for a diagnostic node; you read it in a text preview or a debugger, you don't wire it into anything.
Why it's quietly great
This is the kind of node that sounds useless until you've burned an hour hunting a stray value. It's part of the same Diagnostics family as the Model Metadata Extractor and the model browser routes, all under the pack's C2C/Utils and C2C/Diagnostics categories, and it costs you nothing at runtime - the logging is a background JS pass, not a model.
Install and caveats
Install: clone Code2Collapse/ComfyUI-CustomNodePacks into ComfyUI/custom_nodes (or ComfyUI Manager → "CustomNodePacks"), restart, and it's there. Two practical caveats from the design: the history lives in a local SQLite file, so it doesn't follow your workflows around between machines; and because it's widget-change tracking, programmatic changes (an API call, another node writing a value) may or may not land in the log depending on whether they went through the UI. For the everyday "what did I touch" case, neither matters. Wire it to a text display next to your KSampler and you'll never lose a good setting to a forgotten tweak again.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | all_history | all_history: show recent parameter changes across all nodes last_run_diff: show what changed between the last two runs node_class_filter: filter history to a specific node class |
| last_n_runs | INT | 51–100 | How many recent runs to include |
| node_class_filteropt | STRING | Node class name to filter by (e.g. 'KSampler') | |
| run_aopt | INT | 0 | First run number for diff mode (0 = auto-detect last two) |
| run_bopt | INT | 0 | Second run number for diff mode (0 = auto-detect last two) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| history_report | STRING | Human-readable parameter history report for the chosen mode. |