dsh-comfyui-rp 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/CHANGELOG.md +7 -0
- package/lib/client.js +67 -6
- package/lib/meta.js +1 -1
- package/package.json +1 -1
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# 更新记录
|
|
2
2
|
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
- **LoRA 强度可以填负数**:工作台「连续图」的档位、LoRA 页每条的强度都允许 `-5 ~ 5`(反相 LoRA 用)。
|
|
6
|
+
- 这两个输入框在输入过程中不再被强制夹取:打「-」「-.5」这种中间态会先留在文本框里,**失焦或按回车**才夹到范围内并写回。
|
|
7
|
+
- 工作台的分辨率宽高也是同样规则(这条从 0.2.1 起就是)。
|
|
8
|
+
- 连续图说明里补了一句「强度可以填负数(反相),范围 -5 ~ 5」。
|
|
9
|
+
|
|
3
10
|
## 0.2.1 — 首个公开发布
|
|
4
11
|
|
|
5
12
|
第一个放到 npm / 插件市场里的版本,功能面就是 README 里描述的这一整套:
|
package/lib/client.js
CHANGED
|
@@ -6561,6 +6561,8 @@ window.__ModuleLoader__.load({
|
|
|
6561
6561
|
})();
|
|
6562
6562
|
var [contCount, setContCount] = useState(initialStrengths.count);
|
|
6563
6563
|
var [contStrengths, setContStrengths] = useState(initialStrengths.values);
|
|
6564
|
+
// 连续图档位的输入原文:允许先打「-」「-.5」,离开输入框才兜底。
|
|
6565
|
+
var [contText, setContText] = useState({});
|
|
6564
6566
|
var cfgTimer = useRef(null);
|
|
6565
6567
|
var wfSkip = useRef(!!draft);
|
|
6566
6568
|
|
|
@@ -6786,12 +6788,37 @@ window.__ModuleLoader__.load({
|
|
|
6786
6788
|
setContCount(n);
|
|
6787
6789
|
saveContinuous({ count: n, strengths: contStrengths }, true);
|
|
6788
6790
|
};
|
|
6791
|
+
// 档位允许负数(反相 LoRA):输入期间保留原文(「-」「-.5」这种中间态),
|
|
6792
|
+
// 失焦 / 回车才夹到 -5..5 并落库。夹取范围和 lib/config.js 的服务端归一化一致。
|
|
6789
6793
|
var setStrength = function (i, value) {
|
|
6790
6794
|
var next = contStrengths.slice();
|
|
6791
|
-
next[i] = clamp(value,
|
|
6795
|
+
next[i] = Math.round(clamp(value, -5, 5) * 100) / 100;
|
|
6792
6796
|
setContStrengths(next);
|
|
6793
6797
|
saveContinuous({ strengths: next }, false);
|
|
6794
6798
|
};
|
|
6799
|
+
var editContStrength = function (i, raw) {
|
|
6800
|
+
setContText(function (old) {
|
|
6801
|
+
var n = Object.assign({}, old);
|
|
6802
|
+
n[i] = String(raw);
|
|
6803
|
+
return n;
|
|
6804
|
+
});
|
|
6805
|
+
var v = Number(raw);
|
|
6806
|
+
if (String(raw).trim() !== "" && isFinite(v)) {
|
|
6807
|
+
var next = contStrengths.slice();
|
|
6808
|
+
next[i] = v;
|
|
6809
|
+
setContStrengths(next);
|
|
6810
|
+
saveContinuous({ strengths: next }, false);
|
|
6811
|
+
}
|
|
6812
|
+
};
|
|
6813
|
+
var commitContStrength = function (i, raw) {
|
|
6814
|
+
setContText(function (old) {
|
|
6815
|
+
var n = Object.assign({}, old);
|
|
6816
|
+
delete n[i];
|
|
6817
|
+
return n;
|
|
6818
|
+
});
|
|
6819
|
+
if (String(raw === undefined || raw === null ? "" : raw).trim() === "") return;
|
|
6820
|
+
setStrength(i, raw);
|
|
6821
|
+
};
|
|
6795
6822
|
|
|
6796
6823
|
var loraOptions = [];
|
|
6797
6824
|
(loraStacks || []).forEach(function (st) {
|
|
@@ -6939,11 +6966,15 @@ window.__ModuleLoader__.load({
|
|
|
6939
6966
|
h("div", { className: "ac-strengthrow" },
|
|
6940
6967
|
contStrengths.slice(0, contCount).map(function (v, i) {
|
|
6941
6968
|
return h(Field, { key: i, label: "档位" + (i + 1) }, h(NumInput, {
|
|
6942
|
-
step: "0.05",
|
|
6969
|
+
step: "0.05", min: "-5", max: "5",
|
|
6970
|
+
value: contText[i] !== undefined ? contText[i] : String(v),
|
|
6971
|
+
onChange: function (e) { editContStrength(i, e.target.value); },
|
|
6972
|
+
onBlur: function (e) { commitContStrength(i, e.target.value); },
|
|
6973
|
+
onKeyDown: function (e) { if (e.key === "Enter") e.currentTarget.blur(); },
|
|
6943
6974
|
}));
|
|
6944
6975
|
}),
|
|
6945
6976
|
),
|
|
6946
|
-
h("div", { className: "ac-hint" }, "支持 LoRA 堆、单 LoRA、Power / Stacker / Tag
|
|
6977
|
+
h("div", { className: "ac-hint" }, "支持 LoRA 堆、单 LoRA、Power / Stacker / Tag 节点;仅影响最后一组提示词,按设置张数用不同强度连续生图。强度可以填负数(反相),范围 -5 ~ 5。"),
|
|
6947
6978
|
),
|
|
6948
6979
|
),
|
|
6949
6980
|
|
|
@@ -7783,6 +7814,9 @@ window.__ModuleLoader__.load({
|
|
|
7783
7814
|
var dropRef = useRef(null);
|
|
7784
7815
|
// 点 LoRA 名字就地改名:输入期间只改本地草稿,回车 / 失焦才写进 loraState。
|
|
7785
7816
|
var [nameEdit, setNameEdit] = useState(null);
|
|
7817
|
+
// 强度输入:输入期间只改文本框(允许「-」「-.5」这种中间态),失焦 / 回车才夹到 -5..5 写回。
|
|
7818
|
+
// 以前每按一次键就 Number(),"-" 会变成 NaN 被弹回去,负数根本打不进去。
|
|
7819
|
+
var [numText, setNumText] = useState({});
|
|
7786
7820
|
var nameEditRef = useRef(null);
|
|
7787
7821
|
var applyTimer = useRef(null);
|
|
7788
7822
|
// 所有临时覆盖串行发送:保存到工作流时先等已发出的覆盖落地,
|
|
@@ -7850,6 +7884,29 @@ window.__ModuleLoader__.load({
|
|
|
7850
7884
|
};
|
|
7851
7885
|
if (immediate) send(); else applyTimer.current = setTimeout(send, 260);
|
|
7852
7886
|
};
|
|
7887
|
+
var numKey = function (stackId, idx) { return stackId + ":" + idx; };
|
|
7888
|
+
// 强度:输入时先别夹、也别丢原文;失焦 / 回车才落到 -5..5。
|
|
7889
|
+
var editStrength = function (stackId, idx, raw) {
|
|
7890
|
+
setNumText(function (old) {
|
|
7891
|
+
var n = Object.assign({}, old);
|
|
7892
|
+
n[numKey(stackId, idx)] = String(raw);
|
|
7893
|
+
return n;
|
|
7894
|
+
});
|
|
7895
|
+
var v = Number(raw);
|
|
7896
|
+
if (String(raw).trim() !== "" && isFinite(v)) {
|
|
7897
|
+
updateEntry(stackId, idx, { strength: v, clipStrength: v });
|
|
7898
|
+
}
|
|
7899
|
+
};
|
|
7900
|
+
var commitStrength = function (stackId, idx, raw) {
|
|
7901
|
+
setNumText(function (old) {
|
|
7902
|
+
var n = Object.assign({}, old);
|
|
7903
|
+
delete n[numKey(stackId, idx)];
|
|
7904
|
+
return n;
|
|
7905
|
+
});
|
|
7906
|
+
if (String(raw === undefined || raw === null ? "" : raw).trim() === "") return;
|
|
7907
|
+
var v = Math.round(clamp(raw, -5, 5) * 100) / 100;
|
|
7908
|
+
updateEntry(stackId, idx, { strength: v, clipStrength: v });
|
|
7909
|
+
};
|
|
7853
7910
|
var updateEntry = function (stackId, idx, patch, immediate) {
|
|
7854
7911
|
if (!data) return;
|
|
7855
7912
|
var next = JSON.parse(JSON.stringify(data));
|
|
@@ -8106,9 +8163,13 @@ window.__ModuleLoader__.load({
|
|
|
8106
8163
|
onClick: function () { if (!taken) beginNameEdit(st.nodeId, i, e.label || e.name); },
|
|
8107
8164
|
}, e.label || e.name),
|
|
8108
8165
|
h("input", {
|
|
8109
|
-
type: "number", step: "0.05",
|
|
8110
|
-
|
|
8111
|
-
|
|
8166
|
+
type: "number", step: "0.05", min: "-5", max: "5",
|
|
8167
|
+
value: numText[numKey(st.nodeId, i)] !== undefined ? numText[numKey(st.nodeId, i)] : e.strength,
|
|
8168
|
+
disabled: taken,
|
|
8169
|
+
title: taken ? "连续图接管中:强度按连续图档位,这里不生效" : "强度,可用负数;范围 -5 ~ 5",
|
|
8170
|
+
onChange: function (ev) { editStrength(st.nodeId, i, ev.target.value); },
|
|
8171
|
+
onBlur: function (ev) { commitStrength(st.nodeId, i, ev.target.value); },
|
|
8172
|
+
onKeyDown: function (ev) { if (ev.key === "Enter") ev.currentTarget.blur(); },
|
|
8112
8173
|
}),
|
|
8113
8174
|
canSort ? h("button", {
|
|
8114
8175
|
className: "ac-btn sm", disabled: taken,
|
package/lib/meta.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export const PACKAGE_NAME = 'dsh-comfyui-rp';
|
|
8
8
|
export const PLUGIN_NAME = 'dsh-comfyui-rp';
|
|
9
|
-
export const VERSION = '0.2.
|
|
9
|
+
export const VERSION = '0.2.2';
|
|
10
10
|
|
|
11
11
|
/** 对外路由前缀。不能带尾斜杠(dsh-host-webserver 的 prefix 匹配规则)。 */
|
|
12
12
|
export const ROUTE_PATH = '/__airp_comfy';
|
package/package.json
CHANGED