Spaces:
Running
Running
improve env-builder UX, and harden runtime/browser startup
Browse files- env-builder.js +16 -3
- start.sh +3 -0
env-builder.js
CHANGED
|
@@ -458,10 +458,10 @@ const FIELDS = [
|
|
| 458 |
"g": "Core",
|
| 459 |
"icon": "⚡",
|
| 460 |
"k": "OPENCLAW_VERSION",
|
| 461 |
-
"lbl": "Pin OpenClaw version",
|
| 462 |
"type": "text",
|
| 463 |
"ph": "latest",
|
| 464 |
-
"tag": "
|
| 465 |
},
|
| 466 |
{
|
| 467 |
"g": "Plugins",
|
|
@@ -2293,7 +2293,7 @@ function applyObj(obj, replace = false) {
|
|
| 2293 |
addCustomRow(key, val, true);
|
| 2294 |
}
|
| 2295 |
}
|
| 2296 |
-
markSelected(); filter(); refresh();
|
| 2297 |
}
|
| 2298 |
|
| 2299 |
function autoCheck(key) {
|
|
@@ -2398,6 +2398,16 @@ function sortSection(cardEl) {
|
|
| 2398 |
[...checked, ...rest].forEach(c => cards.appendChild(c));
|
| 2399 |
}
|
| 2400 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2401 |
function bindFieldEvents() {
|
| 2402 |
document.querySelectorAll('[data-check]').forEach(el => el.addEventListener('change', () => { sortSection(el.closest('[data-row]')); markSelected(); refresh(); }));
|
| 2403 |
document.querySelectorAll('[data-key]').forEach(el => el.addEventListener('input', refresh));
|
|
@@ -2458,16 +2468,19 @@ refresh();
|
|
| 2458 |
$('search').oninput = filter;
|
| 2459 |
$('selectCommon').onclick = () => {
|
| 2460 |
document.querySelectorAll('[data-common="1"]').forEach(c => c.checked = true);
|
|
|
|
| 2461 |
markSelected();
|
| 2462 |
refresh();
|
| 2463 |
};
|
| 2464 |
$('selectVisible').onclick = () => {
|
| 2465 |
document.querySelectorAll('.sec:not(.sec-hidden) [data-row]:not(.hidden) [data-check]').forEach(c => c.checked = true);
|
|
|
|
| 2466 |
markSelected();
|
| 2467 |
refresh();
|
| 2468 |
};
|
| 2469 |
$('clearAll').onclick = () => {
|
| 2470 |
clearForm();
|
|
|
|
| 2471 |
markSelected();
|
| 2472 |
filter();
|
| 2473 |
refresh();
|
|
|
|
| 458 |
"g": "Core",
|
| 459 |
"icon": "⚡",
|
| 460 |
"k": "OPENCLAW_VERSION",
|
| 461 |
+
"lbl": "Pin OpenClaw version (build-time; rebuild required)",
|
| 462 |
"type": "text",
|
| 463 |
"ph": "latest",
|
| 464 |
+
"tag": "build"
|
| 465 |
},
|
| 466 |
{
|
| 467 |
"g": "Plugins",
|
|
|
|
| 2293 |
addCustomRow(key, val, true);
|
| 2294 |
}
|
| 2295 |
}
|
| 2296 |
+
sortAllSections(); markSelected(); filter(); refresh();
|
| 2297 |
}
|
| 2298 |
|
| 2299 |
function autoCheck(key) {
|
|
|
|
| 2398 |
[...checked, ...rest].forEach(c => cards.appendChild(c));
|
| 2399 |
}
|
| 2400 |
|
| 2401 |
+
function sortAllSections() {
|
| 2402 |
+
document.querySelectorAll('.cards').forEach(cards => {
|
| 2403 |
+
const all = [...cards.querySelectorAll('[data-row]')];
|
| 2404 |
+
const checked = all.filter(c => c.querySelector('[data-check]')?.checked);
|
| 2405 |
+
const rest = all.filter(c => !c.querySelector('[data-check]')?.checked);
|
| 2406 |
+
rest.sort((a, b) => Number(a.dataset.origIdx) - Number(b.dataset.origIdx));
|
| 2407 |
+
[...checked, ...rest].forEach(c => cards.appendChild(c));
|
| 2408 |
+
});
|
| 2409 |
+
}
|
| 2410 |
+
|
| 2411 |
function bindFieldEvents() {
|
| 2412 |
document.querySelectorAll('[data-check]').forEach(el => el.addEventListener('change', () => { sortSection(el.closest('[data-row]')); markSelected(); refresh(); }));
|
| 2413 |
document.querySelectorAll('[data-key]').forEach(el => el.addEventListener('input', refresh));
|
|
|
|
| 2468 |
$('search').oninput = filter;
|
| 2469 |
$('selectCommon').onclick = () => {
|
| 2470 |
document.querySelectorAll('[data-common="1"]').forEach(c => c.checked = true);
|
| 2471 |
+
sortAllSections();
|
| 2472 |
markSelected();
|
| 2473 |
refresh();
|
| 2474 |
};
|
| 2475 |
$('selectVisible').onclick = () => {
|
| 2476 |
document.querySelectorAll('.sec:not(.sec-hidden) [data-row]:not(.hidden) [data-check]').forEach(c => c.checked = true);
|
| 2477 |
+
sortAllSections();
|
| 2478 |
markSelected();
|
| 2479 |
refresh();
|
| 2480 |
};
|
| 2481 |
$('clearAll').onclick = () => {
|
| 2482 |
clearForm();
|
| 2483 |
+
sortAllSections();
|
| 2484 |
markSelected();
|
| 2485 |
filter();
|
| 2486 |
refresh();
|
start.sh
CHANGED
|
@@ -42,6 +42,9 @@ try:
|
|
| 42 |
continue
|
| 43 |
if str(key) in {"HUGGINGCLAW_ENV_BUNDLE", "ENV_BUNDLE"}:
|
| 44 |
continue
|
|
|
|
|
|
|
|
|
|
| 45 |
if os.environ.get(str(key), ""):
|
| 46 |
continue
|
| 47 |
if value is None or isinstance(value, (dict, list)):
|
|
|
|
| 42 |
continue
|
| 43 |
if str(key) in {"HUGGINGCLAW_ENV_BUNDLE", "ENV_BUNDLE"}:
|
| 44 |
continue
|
| 45 |
+
if str(key) == "OPENCLAW_VERSION":
|
| 46 |
+
print("Warning: OPENCLAW_VERSION from env bundle is ignored (build-time only; set HF Variable and rebuild).", file=sys.stderr)
|
| 47 |
+
continue
|
| 48 |
if os.environ.get(str(key), ""):
|
| 49 |
continue
|
| 50 |
if value is None or isinstance(value, (dict, list)):
|