diff --git a/docs/api.md b/docs/api.md index e0f16b4..a28e21e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -54,7 +54,7 @@ Returns server version for compatibility checking. **Example response:** ```json -{"version": "1.9.6"} +{"version": "1.9.7"} ``` ### `GET /api/status` diff --git a/frontend/index.html b/frontend/index.html index f174b12..49efd97 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -18,7 +18,7 @@
-

OTAMan SIM OTA with a Human Face v1.9.6

+

OTAMan SIM OTA with a Human Face v1.9.7

github @@ -4085,12 +4085,12 @@ async function pysimSendOta() { } const sp = document.getElementById('sp-result').value.replace(/[^0-9a-fA-F]/g, '').toUpperCase(); if (!sp) { alert('No secured packet to send. Generate a secure packet first.'); return; } - const statusEl = document.getElementById('pysim-status'); const sendResultEl = document.getElementById('sp-send-result'); const porStatusEl = document.getElementById('sp-por-status'); - sendResultEl.classList.add('hidden'); + sendResultEl.classList.remove('hidden', 'text-red-600', 'text-green-600'); + sendResultEl.classList.add('text-gray-500'); + sendResultEl.textContent = t('Sending OTA...'); porStatusEl.classList.add('hidden'); - statusEl.innerHTML = '' + t('Sending OTA...') + ''; try { const data = await pysimFetch('/api/send-ota', { sp, ...spParams() }); if (data.success) { @@ -4125,23 +4125,20 @@ async function pysimSendOta() { rawLine.textContent = 'raw PoR: ' + por.raw; sendResultEl.appendChild(rawLine); } - sendResultEl.classList.remove('hidden', 'text-red-600'); + sendResultEl.classList.remove('hidden', 'text-red-600', 'text-gray-500'); sendResultEl.classList.add('text-green-600'); - statusEl.innerHTML = '' + esc(msg) + ''; } else { let msg = 'OTA failed'; if (data.error) msg += ': ' + data.error; if (data.sw) msg += (data.error ? ' | ' : ': ') + 'SW ' + data.sw; sendResultEl.textContent = msg; - sendResultEl.classList.remove('hidden', 'text-green-600'); + sendResultEl.classList.remove('hidden', 'text-green-600', 'text-gray-500'); sendResultEl.classList.add('text-red-600'); - statusEl.innerHTML = '' + esc(msg) + ''; } } catch (e) { sendResultEl.textContent = 'Error: ' + e.message; - sendResultEl.classList.remove('hidden', 'text-green-600'); + sendResultEl.classList.remove('hidden', 'text-green-600', 'text-gray-500'); sendResultEl.classList.add('text-red-600'); - statusEl.innerHTML = 'Error: ' + esc(e.message) + ''; } } diff --git a/frontend/sw.js b/frontend/sw.js index caf0d21..8c69078 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'otaman-v17'; +const CACHE = 'otaman-v18'; const URLS = [ 'index.html', 'help.html', diff --git a/pyproject.toml b/pyproject.toml index d9e89e5..16e428c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pysim-otaman-server" -version = "1.9.5" +version = "1.9.7" description = "HTTP REST server wrapping pysim for the OTAMan PWA" requires-python = ">=3.8" # pysim is a git-only dependency installed explicitly by setup.bat/setup.sh. diff --git a/pysim_otaman_server/server.py b/pysim_otaman_server/server.py index 104bc85..d343beb 100644 --- a/pysim_otaman_server/server.py +++ b/pysim_otaman_server/server.py @@ -18,7 +18,7 @@ from osmocom.construct import GsmOrUcs2Adapter from osmocom.tlv import BER_TLV_IE -VERSION = '1.9.6' +VERSION = '1.9.7' # Static file serving (the PWA lives in /frontend, served by this server