diff --git a/frontend/index.html b/frontend/index.html
index bb365c6..be2f845 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -262,26 +262,33 @@
πΎ
- μ νλ νμ¨μ΄ μμ β μ λͺ©λ‘μμ μ ννμΈμ
+ μ νλ νμ¨μ΄ μμ β μ λͺ©λ‘μμ ν΄λ¦νμ¬ μ ννμΈμ
-
-
-
-
- β μ΄ λΈλΌμ°μ λ Web Serialμ μ§μνμ§ μμ΅λλ€ (Chrome/Edge νμ)
-
-
+
+
+
β
+
+ νμ¨μ΄λ₯Ό λ¨Όμ μ ννμΈμ.
+ μ λͺ©λ‘μμ νλμν νμ¨μ΄λ₯Ό ν΄λ¦νλ©΄ μ΄ λ²νΌμ΄ νμ±νλ©λλ€.
+
+
+
+
+
+
+
+
+ β μ΄ λΈλΌμ°μ λ Web Serialμ μ§μνμ§ μμ΅λλ€ (Chrome/Edge νμ)
+
+
+
β
diff --git a/frontend/js/app.js b/frontend/js/app.js
index 26bd558..2ee2312 100644
--- a/frontend/js/app.js
+++ b/frontend/js/app.js
@@ -288,6 +288,7 @@ uploadForm.addEventListener('submit', async e => {
});
await loadFirmwareList();
+ selectFirmware(data.id); // μ
λ‘λ μ§ν μλ μ ν
switchTab('tab-flash');
} catch (err) {
progressPct.textContent = `β ${err.message}`;
@@ -324,6 +325,8 @@ async function loadFirmwareList() {
const resp = await fetch(`${API}/api/firmware`);
state.firmwareList = await resp.json();
renderFwList();
+ // λͺ©λ‘ λ‘λ ν μλ μ ν μ μ© (μ νλ κ²μ΄ μμΌλ©΄ manifest μ¬μ€μ )
+ if (state.selectedFwId) selectFirmware(state.selectedFwId);
} catch (err) {
log(`β νμ¨μ΄ λͺ©λ‘ λ‘λ μ€ν¨: ${err.message}`, 'err');
}
@@ -340,6 +343,11 @@ function renderFwList() {
return;
}
+ // μ νλ νμ¨μ΄κ° μκ³ νλλ§ μμΌλ©΄ μλ μ ν
+ if (!state.selectedFwId && state.firmwareList.length === 1) {
+ state.selectedFwId = state.firmwareList[0].id;
+ }
+
fwListEl.innerHTML = '';
state.firmwareList.forEach(fw => {
const el = document.createElement('div');
@@ -379,10 +387,14 @@ function selectFirmware(id) {
const manifestUrl = `${location.origin}/api/firmware/${id}/manifest`;
installBtn.setAttribute('manifest', manifestUrl);
- $('#selected-fw-info').textContent = `μ νλ¨: ${state.firmwareList.find(f=>f.id===id)?.name}`;
- log(`β νλμ λμ μ ν: ${state.firmwareList.find(f=>f.id===id)?.name}`, 'ok');
- log(` Manifest: ${manifestUrl}`, 'info');
+ const fw = state.firmwareList.find(f => f.id === id);
+ $('#selected-fw-info').textContent = `μ νλ¨: ${fw?.name}`;
+ $('#flash-btn-wrap').style.display = 'block';
+ $('#no-fw-warning').style.display = 'none';
+
+ log(`β νλμ λμ μ ν: ${fw?.name}`, 'ok');
+ log(` Manifest URL: ${manifestUrl}`, 'info');
}
async function deleteFirmware(id) {
@@ -392,7 +404,9 @@ async function deleteFirmware(id) {
if (state.selectedFwId === id) {
state.selectedFwId = null;
installBtn.removeAttribute('manifest');
- $('#selected-fw-info').textContent = 'μ νλ νμ¨μ΄ μμ';
+ $('#selected-fw-info').textContent = 'μ νλ νμ¨μ΄ μμ β μ λͺ©λ‘μμ ν΄λ¦νμ¬ μ ννμΈμ';
+ $('#flash-btn-wrap').style.display = 'none';
+ $('#no-fw-warning').style.display = 'block';
}
await loadFirmwareList();
log(`β νμ¨μ΄ μμ μλ£`, 'ok');