v3.23.7: the proactive log survives a TERMINAL PROFILE re-send

Pressing the Phone tab's Send (or Rescue) re-sends the profile and starts a
new CAT session.  The log was cleared with the rest of the session state,
losing the only record of the card's proactive commands - a common
tweak-the-profile-and-resend loop wiped the history every time.

_resend_terminal_profile now calls _mark_proactive_session(
'terminal-profile') instead: the entries stay, _PROACTIVE_SESSION_START
restarts (so the new session's elapsed values begin at 0) and a boundary
marker entry is appended.  The PWA renders the marker as a
'- TERMINAL PROFILE re-sent - new CAT session -' divider (EN/RU).

Equip / disconnect keep the full clear (a card change); the pending-command
cancel, menu timeout and event list reset are unchanged.

Tests: the marker keeps the entries and restarts the timer, the reset still
clears, the re-send path pinned by source (Python) and the renderer's marker
branch (Node).  857 frontend + 842 Python; sw cache simple-v420.
This commit is contained in:
2026-10-08 00:20:06 +03:00
parent 9fb46b786f
commit c9ab15c392
8 changed files with 85 additions and 8 deletions
+9 -1
View File
@@ -1905,7 +1905,7 @@
// ===== Version =====
// Single source of truth for the PWA version: shown in the header and used
// by the server version check in pysimConnect().
const SIMPLE_VERSION = '3.23.6';
const SIMPLE_VERSION = '3.23.7';
document.getElementById('app-version').textContent = 'v' + SIMPLE_VERSION;
// ===== view history (the browser Back/Forward buttons) =====
@@ -16859,6 +16859,13 @@ async function pysimProactiveLogRender() {
}
let html = '';
log.forEach((e, i) => {
// a session boundary marker (a TERMINAL PROFILE re-send keeps the
// history): everything above is the previous CAT session
if (e.marker) {
html += '<div data-log-id="' + e.id + '" class="py-1 text-center text-xs text-gray-400 dark:text-slate-500">'
+ '\u2014 ' + esc(t('TERMINAL PROFILE re-sent \u2014 new CAT session')) + ' \u2014</div>';
return;
}
const name = CMD_NAMES[e.type_hex]
|| (e.type_name && e.type_name !== 'UNKNOWN' ? e.type_name : 'Cmd 0x' + e.type_hex.toUpperCase());
let qual = '';
@@ -23058,6 +23065,7 @@ const LANG_RU = {
'Text': 'Текст',
'id': 'id',
'text': 'текст',
'TERMINAL PROFILE re-sent \u2014 new CAT session': 'TERMINAL PROFILE отправлен заново \u2014 новая CAT-сессия',
'manual input': 'ручной ввод',
'Additional information (optional hex byte)': 'Дополнительная информация (необязательный hex-байт)',
'TERMINAL RESPONSE result must be two hex digits': 'Результат TERMINAL RESPONSE — ровно два hex-символа',