v3.30.2: the batch RU wording sweep completed
The v3.30.1 review follow-up. The sweep fixed the two batch-state strings but two more shared (kind-independent) batch strings were still install-specific, so a delete/reinstall batch started under an "install" label: - 'Start batch' was «Запустить пакетную установку» - the ram-batch-start button starts every kind - now «Запустить пакетную операцию» (aligning with the optgroup «Пакетные операции (по картам)»). - the shared panel hint's «...перезапустите пакетную установку» is now «...перезапустите пакетную операцию» (the EN was already neutral). The RU help quoted the old button label: its install row now says «Запустить пакетную операцию не требует карты», and the row's other generic "the batch" statements (never retries, the test-run exclusion) are neutral too; the genuinely install-specific ones (the workflow, the shared install form) stay. The v3.30.1 notes were corrected: the counts labels do follow the last run's kind after a clear (the values stay zero) - the AGENTS entry and the _ramBatchLastKind/ramBatchRender comments say so now. The cleared-title test seeds the state before opening the modal (no reliance on the previous test's sandbox leftovers). 930 frontend + 945 Python; sw cache simple-v452.
This commit is contained in:
File diff suppressed because one or more lines are too long
+7
-6
@@ -1932,7 +1932,7 @@
|
|||||||
// ===== Version =====
|
// ===== Version =====
|
||||||
// Single source of truth for the PWA version: shown in the header and used
|
// Single source of truth for the PWA version: shown in the header and used
|
||||||
// by the server version check in pysimConnect().
|
// by the server version check in pysimConnect().
|
||||||
const SIMPLE_VERSION = '3.30.1';
|
const SIMPLE_VERSION = '3.30.2';
|
||||||
document.getElementById('app-version').textContent = 'v' + SIMPLE_VERSION;
|
document.getElementById('app-version').textContent = 'v' + SIMPLE_VERSION;
|
||||||
|
|
||||||
// ===== view history (the browser Back/Forward buttons) =====
|
// ===== view history (the browser Back/Forward buttons) =====
|
||||||
@@ -10192,8 +10192,8 @@ let _ramBatchSummary = null; // /api/status.ram_batch
|
|||||||
let _ramBatchProgress = null; // /api/status.ram_progress
|
let _ramBatchProgress = null; // /api/status.ram_progress
|
||||||
let _ramBatchModalShown = false; // the batch status modal is open (v3.30.0)
|
let _ramBatchModalShown = false; // the batch status modal is open (v3.30.0)
|
||||||
let _ramBatchLastKind = null; // the last seen run kind: a cleared report
|
let _ramBatchLastKind = null; // the last seen run kind: a cleared report
|
||||||
// (kind: null) keeps the modal's title right
|
// (kind: null) keeps the modal's title and the
|
||||||
// (v3.30.1)
|
// counts labels on that kind (v3.30.1)
|
||||||
// A fetch that never settled must not block the report forever (v3.28.7).
|
// A fetch that never settled must not block the report forever (v3.28.7).
|
||||||
const RAM_BATCH_FETCH_STALE_MS = 10000;
|
const RAM_BATCH_FETCH_STALE_MS = 10000;
|
||||||
|
|
||||||
@@ -10351,7 +10351,8 @@ function ramBatchRender() {
|
|||||||
const phase = st.phase || (active ? 'waiting_card' : 'idle');
|
const phase = st.phase || (active ? 'waiting_card' : 'idle');
|
||||||
// The success labels follow the operation (v3.29.0): the counts bucket is
|
// The success labels follow the operation (v3.29.0): the counts bucket is
|
||||||
// 'installed' for every kind - "the operation succeeded". The last seen
|
// 'installed' for every kind - "the operation succeeded". The last seen
|
||||||
// kind is remembered for the modal's title (v3.30.1).
|
// kind is remembered for the modal's title and these labels, so a cleared
|
||||||
|
// report keeps the run's kind (v3.30.1).
|
||||||
if (st.kind) _ramBatchLastKind = st.kind;
|
if (st.kind) _ramBatchLastKind = st.kind;
|
||||||
const kind = st.kind || _ramBatchLastKind || 'install-cap';
|
const kind = st.kind || _ramBatchLastKind || 'install-cap';
|
||||||
const okLabel = kind === 'delete' ? t('Deleted')
|
const okLabel = kind === 'delete' ? t('Deleted')
|
||||||
@@ -24681,7 +24682,7 @@ const LANG_RU = {
|
|||||||
'Delete the package before installing (with its applications)': 'Удалить пакет перед установкой (с его приложениями)',
|
'Delete the package before installing (with its applications)': 'Удалить пакет перед установкой (с его приложениями)',
|
||||||
'AID must be 5-16 bytes of hex': 'AID должен быть 5-16 байт hex',
|
'AID must be 5-16 bytes of hex': 'AID должен быть 5-16 байт hex',
|
||||||
'not found': 'не найдено',
|
'not found': 'не найдено',
|
||||||
'Start batch': 'Запустить пакетную установку',
|
'Start batch': 'Запустить пакетную операцию',
|
||||||
'Stopping...': 'Остановка…',
|
'Stopping...': 'Остановка…',
|
||||||
'Batch stopped': 'Пакетная операция остановлена',
|
'Batch stopped': 'Пакетная операция остановлена',
|
||||||
'Batch finished': 'Пакетная операция завершена',
|
'Batch finished': 'Пакетная операция завершена',
|
||||||
@@ -24696,7 +24697,7 @@ const LANG_RU = {
|
|||||||
'Skipped': 'Пропущено',
|
'Skipped': 'Пропущено',
|
||||||
'attempts': 'попыток',
|
'attempts': 'попыток',
|
||||||
'No cards processed yet.': 'Карты ещё не обрабатывались.',
|
'No cards processed yet.': 'Карты ещё не обрабатывались.',
|
||||||
'The preset, keyset and counter come from each card\'s own preset (matched by ICCID). A card is attempted once per run: re-equipping it reports it as already processed - restart the batch to retry. Stop finishes the current card first.': 'Пресет, keyset и счётчик берутся из пресета каждой карты (совпадение по ICCID). Карта обрабатывается один раз за запуск: повторная установка карты отмечается как уже обработанная — для повтора перезапустите пакетную установку. «Остановить» завершает работу после окончания обработки карты.',
|
'The preset, keyset and counter come from each card\'s own preset (matched by ICCID). A card is attempted once per run: re-equipping it reports it as already processed - restart the batch to retry. Stop finishes the current card first.': 'Пресет, keyset и счётчик берутся из пресета каждой карты (совпадение по ICCID). Карта обрабатывается один раз за запуск: повторная установка карты отмечается как уже обработанная — для повтора перезапустите пакетную операцию. «Остановить» завершает работу после окончания обработки карты.',
|
||||||
'Do not close or reload this window while the operation is running.': 'Не закрывайте и не перезагружайте окно, пока операция выполняется.',
|
'Do not close or reload this window while the operation is running.': 'Не закрывайте и не перезагружайте окно, пока операция выполняется.',
|
||||||
'Working...': 'Выполняется...',
|
'Working...': 'Выполняется...',
|
||||||
'APDU hex': 'APDU (hex)',
|
'APDU hex': 'APDU (hex)',
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const CACHE = 'simple-v451';
|
const CACHE = 'simple-v452';
|
||||||
const URLS = [
|
const URLS = [
|
||||||
'index.html',
|
'index.html',
|
||||||
'help.html',
|
'help.html',
|
||||||
|
|||||||
@@ -578,10 +578,11 @@ test('a cleared report keeps the run kind in the modal title (v3.30.1)', () => {
|
|||||||
setModalEls();
|
setModalEls();
|
||||||
setPanelEls();
|
setPanelEls();
|
||||||
app.setSummary(null);
|
app.setSummary(null);
|
||||||
app.ramBatchModalOpen();
|
// the state is seeded before the window opens: no reliance on the sandbox
|
||||||
|
// leftovers of the previous test (the modal opens into the run's kind)
|
||||||
app.setLast({ kind: 'delete', active: false, phase: 'finished', attempts: [],
|
app.setLast({ kind: 'delete', active: false, phase: 'finished', attempts: [],
|
||||||
counts: { installed: 2 }, attempts_total: 2 });
|
counts: { installed: 2 }, attempts_total: 2 });
|
||||||
app.ramBatchRender();
|
app.ramBatchModalOpen();
|
||||||
assert.strictEqual(els['ram-op-title'].textContent, 'Batch delete (per card)');
|
assert.strictEqual(els['ram-op-title'].textContent, 'Batch delete (per card)');
|
||||||
// Clear empties the state (kind: null): the title must not flip to install
|
// Clear empties the state (kind: null): the title must not flip to install
|
||||||
app.setLast({ kind: null, active: false, phase: 'idle', attempts: [],
|
app.setLast({ kind: null, active: false, phase: 'idle', attempts: [],
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "pysim-simple-server"
|
name = "pysim-simple-server"
|
||||||
version = "3.30.1"
|
version = "3.30.2"
|
||||||
description = "HTTP REST server wrapping pysim for the SIMple PWA"
|
description = "HTTP REST server wrapping pysim for the SIMple PWA"
|
||||||
requires-python = ">=3.8"
|
requires-python = ">=3.8"
|
||||||
# pysim is a git-only dependency installed explicitly by setup.bat/setup.sh.
|
# pysim is a git-only dependency installed explicitly by setup.bat/setup.sh.
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ from osmocom.tlv import BER_TLV_IE
|
|||||||
from osmocom.utils import rpad
|
from osmocom.utils import rpad
|
||||||
|
|
||||||
|
|
||||||
VERSION = '3.30.1'
|
VERSION = '3.30.2'
|
||||||
|
|
||||||
MAX_ENVELOPE_SEGMENTS = 5 # max SMS segments for outgoing C-APDU in ENVELOPE
|
MAX_ENVELOPE_SEGMENTS = 5 # max SMS segments for outgoing C-APDU in ENVELOPE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user