mirror of
https://github.com/TaterTotterson/microWakeWord-Trainer-Nvidia-Docker.git
synced 2026-06-12 20:10:19 -06:00
cache update
This commit is contained in:
@@ -1356,9 +1356,10 @@
|
|||||||
<span class="firmwareStepBadge">3</span>
|
<span class="firmwareStepBadge">3</span>
|
||||||
<div>
|
<div>
|
||||||
<h3>Device Settings</h3>
|
<h3>Device Settings</h3>
|
||||||
<p>These values come from the selected YAML substitutions and are saved for the next flash.</p>
|
<p>Each build fetches the latest YAML, then applies the saved substitutions for this target device.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<button id="saveFirmwareSettingsBtn" type="button">Save settings</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="firmwareFields" class="firmwareFields stack">
|
<div id="firmwareFields" class="firmwareFields stack">
|
||||||
<div class="emptyState">Firmware template settings will appear here.</div>
|
<div class="emptyState">Firmware template settings will appear here.</div>
|
||||||
@@ -2435,6 +2436,7 @@
|
|||||||
$("clearNegativeBtn").disabled = uiState.reviewBusy || negativeCount === 0;
|
$("clearNegativeBtn").disabled = uiState.reviewBusy || negativeCount === 0;
|
||||||
$("refreshSamplesBtn").disabled = uiState.reviewBusy || uiState.uploadBusy;
|
$("refreshSamplesBtn").disabled = uiState.reviewBusy || uiState.uploadBusy;
|
||||||
$("refreshFirmwareBtn").disabled = uiState.firmwareBusy;
|
$("refreshFirmwareBtn").disabled = uiState.firmwareBusy;
|
||||||
|
$("saveFirmwareSettingsBtn").disabled = uiState.firmwareBusy || !firmwareHost || !firmwareTemplate;
|
||||||
$("cleanFirmwareBtn").disabled = uiState.firmwareBusy;
|
$("cleanFirmwareBtn").disabled = uiState.firmwareBusy;
|
||||||
$("openFirmwareConsoleBtn").disabled = false;
|
$("openFirmwareConsoleBtn").disabled = false;
|
||||||
$("flashFirmwareBtn").disabled = uiState.firmwareBusy || !firmwareHost || !firmwareTemplate;
|
$("flashFirmwareBtn").disabled = uiState.firmwareBusy || !firmwareHost || !firmwareTemplate;
|
||||||
@@ -2787,6 +2789,28 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
$("flashFirmwareBtn").addEventListener("click", startFirmwareFlash);
|
$("flashFirmwareBtn").addEventListener("click", startFirmwareFlash);
|
||||||
|
$("saveFirmwareSettingsBtn").addEventListener("click", async () => {
|
||||||
|
const host = ($("firmwareHost").value || "").trim();
|
||||||
|
const template = ($("firmwareTemplate").value || "").trim();
|
||||||
|
if (!template) {
|
||||||
|
alert("Choose a firmware template first.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!host) {
|
||||||
|
alert("Enter the device IP or hostname first so settings can be saved for this device.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
setPill($("firmwareStatus"), "Saving device settings...", "warn");
|
||||||
|
await saveFirmwareProfileNow({ quiet: true });
|
||||||
|
setPill($("firmwareStatus"), "Device settings saved", "ok");
|
||||||
|
} catch (error) {
|
||||||
|
setPill($("firmwareStatus"), "Settings save failed", "err");
|
||||||
|
alert("Settings save failed: " + error.message);
|
||||||
|
} finally {
|
||||||
|
syncButtons();
|
||||||
|
}
|
||||||
|
});
|
||||||
$("cleanFirmwareBtn").addEventListener("click", async () => {
|
$("cleanFirmwareBtn").addEventListener("click", async () => {
|
||||||
try {
|
try {
|
||||||
setPill($("firmwareStatus"), "Cleaning build files...", "warn");
|
setPill($("firmwareStatus"), "Cleaning build files...", "warn");
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ WAKE_SOUND_CATALOG_CACHE_TTL_SECONDS = int(os.environ.get("WAKE_SOUND_CATALOG_CA
|
|||||||
FIRMWARE_PLATFORMIO_DIR = FIRMWARE_CACHE_DIR / "platformio"
|
FIRMWARE_PLATFORMIO_DIR = FIRMWARE_CACHE_DIR / "platformio"
|
||||||
FIRMWARE_HOME_DIR = FIRMWARE_CACHE_DIR / "home"
|
FIRMWARE_HOME_DIR = FIRMWARE_CACHE_DIR / "home"
|
||||||
FIRMWARE_XDG_CACHE_DIR = FIRMWARE_CACHE_DIR / "cache"
|
FIRMWARE_XDG_CACHE_DIR = FIRMWARE_CACHE_DIR / "cache"
|
||||||
|
FIRMWARE_ESPHOME_DATA_DIR = FIRMWARE_CACHE_DIR / "esphome_data"
|
||||||
FIRMWARE_PROFILE_FILE = Path(
|
FIRMWARE_PROFILE_FILE = Path(
|
||||||
os.environ.get("FIRMWARE_PROFILE_FILE", str(FIRMWARE_CACHE_DIR / "profiles.json"))
|
os.environ.get("FIRMWARE_PROFILE_FILE", str(FIRMWARE_CACHE_DIR / "profiles.json"))
|
||||||
).resolve()
|
).resolve()
|
||||||
@@ -1985,7 +1986,7 @@ def _render_firmware_config(
|
|||||||
|
|
||||||
session_dir = FIRMWARE_CACHE_DIR / "configs" / session_id
|
session_dir = FIRMWARE_CACHE_DIR / "configs" / session_id
|
||||||
session_dir.mkdir(parents=True, exist_ok=True)
|
session_dir.mkdir(parents=True, exist_ok=True)
|
||||||
config_path = session_dir / f"{str(spec.get('key') or template_key)}.yaml"
|
config_path = session_dir / f"{build_path.parent.name}__{build_path.name}.yaml"
|
||||||
config_path.write_text(yaml.dump(config, Dumper=_FirmwareYamlDumper, sort_keys=False, allow_unicode=True), encoding="utf-8")
|
config_path.write_text(yaml.dump(config, Dumper=_FirmwareYamlDumper, sort_keys=False, allow_unicode=True), encoding="utf-8")
|
||||||
normalized_host, normalized_port = _firmware_profile_target(host, port)
|
normalized_host, normalized_port = _firmware_profile_target(host, port)
|
||||||
if normalized_host:
|
if normalized_host:
|
||||||
@@ -2042,11 +2043,13 @@ def _firmware_runner_env(*, include_esphome_pythonpath: bool = False) -> Dict[st
|
|||||||
FIRMWARE_HOME_DIR.mkdir(parents=True, exist_ok=True)
|
FIRMWARE_HOME_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
FIRMWARE_XDG_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
FIRMWARE_XDG_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
FIRMWARE_PLATFORMIO_DIR.mkdir(parents=True, exist_ok=True)
|
FIRMWARE_PLATFORMIO_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
|
FIRMWARE_ESPHOME_DATA_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
env.pop("PYTHONPATH", None)
|
env.pop("PYTHONPATH", None)
|
||||||
env["PYTHONUNBUFFERED"] = "1"
|
env["PYTHONUNBUFFERED"] = "1"
|
||||||
env["HOME"] = str(FIRMWARE_HOME_DIR)
|
env["HOME"] = str(FIRMWARE_HOME_DIR)
|
||||||
env["XDG_CACHE_HOME"] = str(FIRMWARE_XDG_CACHE_DIR)
|
env["XDG_CACHE_HOME"] = str(FIRMWARE_XDG_CACHE_DIR)
|
||||||
|
env["ESPHOME_DATA_DIR"] = str(FIRMWARE_ESPHOME_DATA_DIR)
|
||||||
env["PLATFORMIO_CORE_DIR"] = str(FIRMWARE_PLATFORMIO_DIR)
|
env["PLATFORMIO_CORE_DIR"] = str(FIRMWARE_PLATFORMIO_DIR)
|
||||||
env["PLATFORMIO_CACHE_DIR"] = str(FIRMWARE_PLATFORMIO_DIR / "cache")
|
env["PLATFORMIO_CACHE_DIR"] = str(FIRMWARE_PLATFORMIO_DIR / "cache")
|
||||||
if include_esphome_pythonpath:
|
if include_esphome_pythonpath:
|
||||||
@@ -2900,7 +2903,7 @@ def firmware_clean():
|
|||||||
return JSONResponse({"ok": False, "error": f"Wait for active firmware session(s) to finish: {', '.join(active[:3])}."}, status_code=400)
|
return JSONResponse({"ok": False, "error": f"Wait for active firmware session(s) to finish: {', '.join(active[:3])}."}, status_code=400)
|
||||||
|
|
||||||
removed = []
|
removed = []
|
||||||
for child in ("configs", "builds", "platformio", "home", "cache"):
|
for child in ("configs", "builds", "platformio", "home", "cache", "esphome_data"):
|
||||||
path = FIRMWARE_CACHE_DIR / child
|
path = FIRMWARE_CACHE_DIR / child
|
||||||
if path.exists():
|
if path.exists():
|
||||||
shutil.rmtree(path, ignore_errors=True)
|
shutil.rmtree(path, ignore_errors=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user