From 48ce8c8fa2c228cb4e3d06d47bc974ec6a547abc Mon Sep 17 00:00:00 2001
From: Nigdzie <46287652+Nigdzie@users.noreply.github.com>
Date: Thu, 25 Dec 2025 15:50:43 +0100
Subject: [PATCH 01/12] Update docs and workflows
---
.github/workflows/esp32c5-build-master.yml | 1 +
docs/flipper_fap.html | 8 ++++----
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/esp32c5-build-master.yml b/.github/workflows/esp32c5-build-master.yml
index daac280..5920f60 100644
--- a/.github/workflows/esp32c5-build-master.yml
+++ b/.github/workflows/esp32c5-build-master.yml
@@ -115,6 +115,7 @@ jobs:
cd FLIPPER/sdk
[ -f flipper-z-f7-sdk-unlshd-083.zip ] || curl -L -o flipper-z-f7-sdk-unlshd-083.zip https://github.com/DarkFlippers/unleashed-firmware/releases/download/unlshd-083/flipper-z-f7-sdk-unlshd-083.zip
[ -f flipper-z-f7-sdk-mntm-011.zip ] || curl -L -o flipper-z-f7-sdk-mntm-011.zip https://github.com/Next-Flip/Momentum-Firmware/releases/download/mntm-011/flipper-z-f7-sdk-mntm-011.zip
+ [ -f flipper-z-f7-sdk-mntm-dev-22408e4c.zip ] || curl -L -o flipper-z-f7-sdk-mntm-dev-22408e4c.zip https://up.momentum-fw.dev/builds/firmware/dev/flipper-z-f7-sdk-mntm-dev-22408e4c.zip
- name: Build Flipper FAP
run: |
diff --git a/docs/flipper_fap.html b/docs/flipper_fap.html
index 6890593..d01437b 100644
--- a/docs/flipper_fap.html
+++ b/docs/flipper_fap.html
@@ -182,7 +182,7 @@
Control
@@ -267,8 +267,8 @@ How to
const normalized = fapParam.trim().toLowerCase();
if(normalized === "momentum") {
ui.trackSelect.value = "momentum";
- } else if(normalized === "momentumdev" || normalized === "momentum dev" || normalized === "momentum-dev") {
- ui.trackSelect.value = "momentum dev";
+ } else if(normalized === "momentumdev" || normalized === "momentum dev" || normalized === "momentum-dev" || normalized === "momentum_dev") {
+ ui.trackSelect.value = "momentum_dev";
} else if(normalized === "unleashed") {
ui.trackSelect.value = "unleashed";
}
@@ -466,7 +466,7 @@ How to
const trackMatchesName = (name, track) => {
const lower = name.toLowerCase();
- if (track === "momentum dev") {
+ if (track === "momentum_dev") {
return /momentum[-_ ]dev/.test(lower);
}
if (track === "momentum") {
From 6fd8cd177b52797589777d6abbeb69bd8a98e3c1 Mon Sep 17 00:00:00 2001
From: OyczE <46287652+OyczE@users.noreply.github.com>
Date: Thu, 1 Jan 2026 12:10:20 +0100
Subject: [PATCH 02/12] Update janos_flash.html
---
docs/janos_flash.html | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/docs/janos_flash.html b/docs/janos_flash.html
index 3515a6e..c24f99e 100644
--- a/docs/janos_flash.html
+++ b/docs/janos_flash.html
@@ -323,9 +323,11 @@ Browser support
latestRelease: null,
files: [],
port: null,
+ onDisconnect: null,
transport: null,
esploader: null,
chip: null,
+ connected: false,
isFlashing: false,
autoFlash: false,
autoFlashTriggered: false,
@@ -465,12 +467,24 @@ Browser support
const connect = async () => {
ensureSupport();
+ if (state.connected) {
+ await disconnect();
+ return;
+ }
ui.connectBtn.disabled = true;
ui.flashBtn.disabled = true;
setStatus("Requesting serial port");
log("Requesting port access");
try {
state.port = await navigator.serial.requestPort({});
+ state.onDisconnect = () => {
+ log("Device disconnected.");
+ disconnect().catch(() => {});
+ setStatus("Device disconnected. Reconnect to flash.", "error");
+ };
+ try {
+ state.port.addEventListener("disconnect", state.onDisconnect);
+ } catch {}
const baud = parseInt(ui.baud.value, 10);
state.transport = new Transport(state.port, true);
const loaderOptions = {
@@ -487,8 +501,10 @@ Browser support
setStatus("Syncing with chip (hold BOOT + RESET to enter ROM)");
log("Syncing with chip");
state.chip = await state.esploader.main();
+ state.connected = true;
ui.chip.style.display = "inline-flex";
ui.chip.textContent = `Chip ${state.chip}`;
+ ui.connectBtn.textContent = "Disconnect";
setStatus(`Connected to ${state.chip}. Ready to flash.`);
log(`Connected: ${state.chip}`);
ui.flashBtn.disabled = false;
@@ -603,6 +619,9 @@ Browser support
};
const disconnect = async () => {
+ if (state.port && state.onDisconnect) {
+ try { state.port.removeEventListener("disconnect", state.onDisconnect); } catch {}
+ }
try {
if (state.transport) {
await state.transport.disconnect();
@@ -611,11 +630,14 @@ Browser support
}
} catch {}
state.port = null;
+ state.onDisconnect = null;
state.transport = null;
state.esploader = null;
state.chip = null;
+ state.connected = false;
ui.chip.style.display = "none";
ui.flashBtn.disabled = true;
+ ui.connectBtn.textContent = "Connect";
setStatus("Disconnected.");
};
From 67817f4f4c8d57ff560ebe12a4ad286d2dbcd630 Mon Sep 17 00:00:00 2001
From: OyczE <46287652+OyczE@users.noreply.github.com>
Date: Thu, 1 Jan 2026 12:14:34 +0100
Subject: [PATCH 03/12] Update janos_flash.html
---
docs/janos_flash.html | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/docs/janos_flash.html b/docs/janos_flash.html
index c24f99e..94be2d4 100644
--- a/docs/janos_flash.html
+++ b/docs/janos_flash.html
@@ -299,7 +299,8 @@ Browser support