From bba53e4548d0bc3d2eeb0f492ac99586e5b35684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?PontualTech=20/=20Karl=C3=A3o?= Date: Tue, 28 Apr 2026 18:04:59 -0300 Subject: [PATCH] =?UTF-8?q?feat(bms):=20vers=C3=A3o=20vis=C3=ADvel=20no=20?= =?UTF-8?q?diagn=C3=B3stico=20+=20MTU=20bump=20+=20connection=20HIGH=20v1.?= =?UTF-8?q?10.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Karlão reportou log v1.10.1 quando deveria ser v1.10.2 — usuário não sabia se atualização chegou. Adicionado: - "Shivao v1.10.X" mostrado no card BMS (status line) - Primeira linha do log: "📦 Shivao v1.10.3 · Probe iniciado" - requestConnectionPriority=HIGH antes do probe (alguns BMS exigem) - requestMtu(247) — Xiaoxiang BMS oficiais às vezes ignoram comandos enviados em MTU baixo (23 default), exigem 247 pra responder Próximo passo: usuário atualiza pra v1.10.3, primeira linha do log confirma versão. Se ainda zero RX, partiremos pra CCCD descriptor manual. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/diario-bordo.html | 18 +++++++++++++++--- mobile/android/app/build.gradle | 4 ++-- mobile/package.json | 2 +- server/public/index.html | 18 +++++++++++++++--- server/src/index.js | 2 +- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/app/diario-bordo.html b/app/diario-bordo.html index 896d975..a59c086 100644 --- a/app/diario-bordo.html +++ b/app/diario-bordo.html @@ -5998,6 +5998,16 @@ async function bmsProbeAndAttach(deviceId,deviceName){ if(backend!=='capacitor'){setBleDiag('Probe requer Capacitor (APK)','warn');return false} const ble=window.Capacitor.Plugins.BluetoothLe; try{ + setBleDiag(`📦 Shivao v${APP_VERSION} · Probe iniciado`,'info'); + // Tenta aumentar MTU pra 247 (alguns BMS exigem) + try{ + const r=await ble.requestConnectionPriority({deviceId,connectionPriority:'high'}); + setBleDiag('Connection priority HIGH ok','info'); + }catch(e){setBleDiag('connection priority skip','info')} + try{ + await ble.requestMtu({deviceId,mtu:247}); + setBleDiag('MTU bumped pra 247','info'); + }catch(e){setBleDiag('MTU bump skip','info')} setBleDiag('🔍 Enumerando characteristics...','info'); // Tenta serviços vendor: ff00, fff0 (Daly), ffe0 (JK), 0203 const VENDOR_SVCS=[ @@ -6244,14 +6254,16 @@ async function removeBluetoothDevice(id){ renderBluetoothCard(); } +const APP_VERSION='1.10.3'; function renderBluetoothCard(){ const el=document.getElementById('bt-list'); const supportEl=document.getElementById('bt-support'); if(!el)return; if(supportEl){ - supportEl.textContent=bleSupported() - ? 'Bluetooth disponível neste navegador.' - : 'Web Bluetooth indisponível (use Chrome no PC ou Android — iOS Safari não suporta).'; + const backendStr=bleBackend()==='capacitor'?'plugin nativo':'navegador web'; + supportEl.innerHTML=bleSupported() + ? `Shivao v${APP_VERSION} · Bluetooth via ${backendStr}.` + : `Shivao v${APP_VERSION} · Bluetooth indisponível.`; supportEl.style.color=bleSupported()?'var(--m-ok,#10b981)':'var(--m-warn,#f59e0b)'; } const devices=state.btDevices||[]; diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle index 4227dcb..d70726e 100644 --- a/mobile/android/app/build.gradle +++ b/mobile/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "br.com.pontualtech.shivao" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 18 - versionName "1.10.2" + versionCode 19 + versionName "1.10.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/mobile/package.json b/mobile/package.json index b00efc7..714331a 100644 --- a/mobile/package.json +++ b/mobile/package.json @@ -1,6 +1,6 @@ { "name": "shivao-mobile", - "version": "1.10.2", + "version": "1.10.3", "description": "Shivao app nativo (Capacitor wrapper Android/iOS)", "main": "index.js", "type": "module", diff --git a/server/public/index.html b/server/public/index.html index 896d975..a59c086 100644 --- a/server/public/index.html +++ b/server/public/index.html @@ -5998,6 +5998,16 @@ async function bmsProbeAndAttach(deviceId,deviceName){ if(backend!=='capacitor'){setBleDiag('Probe requer Capacitor (APK)','warn');return false} const ble=window.Capacitor.Plugins.BluetoothLe; try{ + setBleDiag(`📦 Shivao v${APP_VERSION} · Probe iniciado`,'info'); + // Tenta aumentar MTU pra 247 (alguns BMS exigem) + try{ + const r=await ble.requestConnectionPriority({deviceId,connectionPriority:'high'}); + setBleDiag('Connection priority HIGH ok','info'); + }catch(e){setBleDiag('connection priority skip','info')} + try{ + await ble.requestMtu({deviceId,mtu:247}); + setBleDiag('MTU bumped pra 247','info'); + }catch(e){setBleDiag('MTU bump skip','info')} setBleDiag('🔍 Enumerando characteristics...','info'); // Tenta serviços vendor: ff00, fff0 (Daly), ffe0 (JK), 0203 const VENDOR_SVCS=[ @@ -6244,14 +6254,16 @@ async function removeBluetoothDevice(id){ renderBluetoothCard(); } +const APP_VERSION='1.10.3'; function renderBluetoothCard(){ const el=document.getElementById('bt-list'); const supportEl=document.getElementById('bt-support'); if(!el)return; if(supportEl){ - supportEl.textContent=bleSupported() - ? 'Bluetooth disponível neste navegador.' - : 'Web Bluetooth indisponível (use Chrome no PC ou Android — iOS Safari não suporta).'; + const backendStr=bleBackend()==='capacitor'?'plugin nativo':'navegador web'; + supportEl.innerHTML=bleSupported() + ? `Shivao v${APP_VERSION} · Bluetooth via ${backendStr}.` + : `Shivao v${APP_VERSION} · Bluetooth indisponível.`; supportEl.style.color=bleSupported()?'var(--m-ok,#10b981)':'var(--m-warn,#f59e0b)'; } const devices=state.btDevices||[]; diff --git a/server/src/index.js b/server/src/index.js index 786aaab..3f444b2 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -347,7 +347,7 @@ app.get('/.well-known/assetlinks.json', (req, res) => { }); // Atalho: /apk redireciona pra última APK release no Forgejo -const LATEST_APK_URL = 'https://git.pontualtech.work/karlao/shivao-projeto/releases/download/v1.10.2/Shivao-v1.10.2.apk'; +const LATEST_APK_URL = 'https://git.pontualtech.work/karlao/shivao-projeto/releases/download/v1.10.3/Shivao-v1.10.3.apk'; app.get('/apk', (req, res) => res.redirect(302, LATEST_APK_URL)); // Página A4 imprimível com QR Code + instruções (cola no barco/marina)