v1.8.3: Affichage version firmware dans la sidebar

Ajoute la version firmware sous le nom du capteur dans la sidebar, visible
sur toutes les pages. Permet d'identifier d'un coup d'oeil le chemin de
mise a jour disponible (online git pull vs offline ZIP upload >= v1.4.0).

- launcher.php: get_config_sqlite injecte firmware_version (lu depuis VERSION)
- sidebar.html: ajout d'un <small> sous sideBar_sensorName (statique)
- topbar-logo.js: peuple .sideBar_firmwareVersion via le fetch existant +
  MutationObserver (aucun nouveau fetch -> respecte la limite 6 connexions)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
PaulVua
2026-05-13 12:39:40 +02:00
parent 54283b8e3a
commit c593b152e8
5 changed files with 41 additions and 3 deletions

View File

@@ -1 +1 @@
1.8.2 1.8.3

View File

@@ -1,5 +1,23 @@
{ {
"versions": [ "versions": [
{
"version": "1.8.3",
"date": "2026-05-13",
"changes": {
"features": [
"Sidebar: affichage de la version firmware juste sous le nom du capteur (visible sur toutes les pages)"
],
"improvements": [
"launcher.php: get_config_sqlite renvoie maintenant firmware_version (lu depuis le fichier VERSION) — pas de nouveau endpoint, pas de nouveau fetch côté UI",
"topbar-logo.js: peuple .sideBar_firmwareVersion via le fetch config existant + MutationObserver (compatible avec le chargement asynchrone de sidebar.html)"
],
"fixes": [],
"compatibility": [
"Aucun risque sur les pages existantes: les handlers AJAX par page restent inchangés, seul launcher.php ajoute un champ dans la réponse JSON"
]
},
"notes": "Permet d'identifier d'un coup d'oeil la version firmware d'un capteur depuis n'importe quelle page de l'UI — utile pour decider du chemin de mise a jour (online git pull >= v0.x, offline ZIP upload >= v1.4.0) sans avoir a fouiller dans admin.html ou en SSH."
},
{ {
"version": "1.8.2", "version": "1.8.2",
"date": "2026-05-12", "date": "2026-05-12",

View File

@@ -37,7 +37,18 @@ document.addEventListener('DOMContentLoaded', () => {
} }
} }
// 2. Sidebar Screen Tab Logic - Use class since ID might be duplicated (desktop/mobile) // 2. Sidebar firmware version display
const versionElements = document.querySelectorAll('.sideBar_firmwareVersion');
if (versionElements.length > 0 && config.firmware_version) {
const versionText = 'v' + config.firmware_version;
versionElements.forEach(el => {
if (el.textContent !== versionText) {
el.textContent = versionText;
}
});
}
// 3. Sidebar Screen Tab Logic - Use class since ID might be duplicated (desktop/mobile)
const navScreenElements = document.querySelectorAll('.nav-screen-item'); const navScreenElements = document.querySelectorAll('.nav-screen-item');
if (navScreenElements.length > 0) { if (navScreenElements.length > 0) {
navScreenElements.forEach(navScreen => { navScreenElements.forEach(navScreen => {

View File

@@ -66,6 +66,14 @@ if ($type == "get_config_sqlite") {
$result[$key] = $parsed_value; $result[$key] = $parsed_value;
} }
// Inject firmware version (read from VERSION file, not from DB)
// Piggybacks on this existing fetch so the sidebar can show it without
// a separate AJAX call (avoids hitting the 6-connection browser limit).
$versionFile = '/var/www/nebuleair_pro_4g/VERSION';
$result['firmware_version'] = file_exists($versionFile)
? trim(file_get_contents($versionFile))
: 'unknown';
// Return JSON response // Return JSON response
header('Content-Type: application/json'); header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT); echo json_encode($result, JSON_PRETTY_PRINT);

View File

@@ -93,6 +93,7 @@
<div class="sidebar-footer text-center text-white"> <div class="sidebar-footer text-center text-white">
<hr> <hr>
<span class="sideBar_sensorName">NebuleAir</span> <span class="sideBar_sensorName">NebuleAir</span>
<small class="sideBar_firmwareVersion d-block" style="font-size: 0.7rem; opacity: 0.65;"></small>
<div class="sidebar-hotspot-badge mt-2" style="display:none;"> <div class="sidebar-hotspot-badge mt-2" style="display:none;">
<a href="wifi.html" class="text-decoration-none"> <a href="wifi.html" class="text-decoration-none">
<span class="badge text-bg-warning w-100 py-2" style="font-size: 0.75rem;"> <span class="badge text-bg-warning w-100 py-2" style="font-size: 0.75rem;">