v1.4.0: STK menu browser, GP APDU builder fixes, response parser auto-populate

This commit is contained in:
2026-08-09 02:06:38 +03:00
parent 961befb3f3
commit e81fd3205f
2 changed files with 13 additions and 22 deletions
+3 -3
View File
@@ -16,7 +16,7 @@
<div class="max-w-7xl mx-auto px-6 py-4"> <div class="max-w-7xl mx-auto px-6 py-4">
<div class="flex items-center justify-between mb-6"> <div class="flex items-center justify-between mb-6">
<h1 class="text-2xl font-bold text-heading">OTAMan <span id="slogan" class="text-sm font-normal text-gray-500 dark:text-slate-400 ml-2" data-l10n="SIM OTA with a Human Face">SIM OTA with a Human Face</span> <span class="text-xs text-gray-400 dark:text-slate-500 ml-1">v1.3.2</span></h1> <h1 class="text-2xl font-bold text-heading">OTAMan <span id="slogan" class="text-sm font-normal text-gray-500 dark:text-slate-400 ml-2" data-l10n="SIM OTA with a Human Face">SIM OTA with a Human Face</span> <span class="text-xs text-gray-400 dark:text-slate-500 ml-1">v1.4.0</span></h1>
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<button id="install-btn" class="px-2 py-1 text-xs rounded border border-gray-300 dark:border-slate-600 hover:bg-gray-200 dark:hover:bg-slate-700" style="display:none">INSTALL PWA [for offline use]</button> <button id="install-btn" class="px-2 py-1 text-xs rounded border border-gray-300 dark:border-slate-600 hover:bg-gray-200 dark:hover:bg-slate-700" style="display:none">INSTALL PWA [for offline use]</button>
<a href="https://github.com/anttro/otaman" target="_blank" class="text-xs text-gray-400 hover:text-gray-600 dark:text-slate-500 dark:hover:text-slate-300">github</a> <a href="https://github.com/anttro/otaman" target="_blank" class="text-xs text-gray-400 hover:text-gray-600 dark:text-slate-500 dark:hover:text-slate-300">github</a>
@@ -918,7 +918,7 @@
<div class="bg-white dark:bg-slate-800 rounded-lg p-4 max-w-md w-full max-h-[80vh] flex flex-col"> <div class="bg-white dark:bg-slate-800 rounded-lg p-4 max-w-md w-full max-h-[80vh] flex flex-col">
<div class="flex justify-between items-center mb-3"> <div class="flex justify-between items-center mb-3">
<button id="stk-back-btn" onclick="stkMenuRespond('back')" class="px-3 py-1 text-xs rounded-full bg-gray-200 dark:bg-slate-700 text-gray-700 dark:text-slate-300 hover:bg-gray-300 dark:hover:bg-slate-600" style="display:none">← Back</button> <button id="stk-back-btn" onclick="stkMenuRespond('back')" class="px-3 py-1 text-xs rounded-full bg-gray-200 dark:bg-slate-700 text-gray-700 dark:text-slate-300 hover:bg-gray-300 dark:hover:bg-slate-600" style="display:none">← Back</button>
<span id="stk-menu-panel-title" class="font-bold text-sm"></span> <span id="stk-menu-panel-title" class="font-bold text-sm flex-1 text-center"></span>
<button onclick="stkMenuExit()" class="px-3 py-1 text-xs rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 hover:bg-red-200 dark:hover:bg-red-900/50">Exit</button> <button onclick="stkMenuExit()" class="px-3 py-1 text-xs rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 hover:bg-red-200 dark:hover:bg-red-900/50">Exit</button>
</div> </div>
<div id="stk-menu-panel-content" class="flex-1 overflow-auto"></div> <div id="stk-menu-panel-content" class="flex-1 overflow-auto"></div>
@@ -2837,7 +2837,7 @@ function stkMenuHandleResponse(data) {
backBtn.style.display = ''; backBtn.style.display = '';
btns.classList.remove('hidden'); btns.classList.remove('hidden');
} else { } else {
content.innerHTML = '<span class="text-gray-500 text-sm">Done</span>'; content.innerHTML = '<span class="text-gray-500 text-sm">SW: ' + esc(data.sw || '?') + '</span>';
stkSetPillsDisabled(false); stkSetPillsDisabled(false);
backBtn.style.display = 'none'; backBtn.style.display = 'none';
} }
+10 -19
View File
@@ -902,11 +902,6 @@ video {
border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
} }
.bg-amber-50 {
--tw-bg-opacity: 1;
background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
}
.bg-black\/50 { .bg-black\/50 {
background-color: rgb(0 0 0 / 0.5); background-color: rgb(0 0 0 / 0.5);
} }
@@ -1101,16 +1096,16 @@ video {
line-height: 1.625; line-height: 1.625;
} }
.text-amber-600 {
--tw-text-opacity: 1;
color: rgb(217 119 6 / var(--tw-text-opacity, 1));
}
.text-blue-600 { .text-blue-600 {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(37 99 235 / var(--tw-text-opacity, 1)); color: rgb(37 99 235 / var(--tw-text-opacity, 1));
} }
.text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity, 1));
}
.text-gray-400 { .text-gray-400 {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity, 1)); color: rgb(156 163 175 / var(--tw-text-opacity, 1));
@@ -1289,10 +1284,6 @@ video {
border-color: rgb(51 65 85 / var(--tw-border-opacity, 1)); border-color: rgb(51 65 85 / var(--tw-border-opacity, 1));
} }
.dark\:bg-amber-900\/30:is(.dark *) {
background-color: rgb(120 53 15 / 0.3);
}
.dark\:bg-blue-500:is(.dark *) { .dark\:bg-blue-500:is(.dark *) {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1)); background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
@@ -1317,16 +1308,16 @@ video {
background-color: rgb(15 23 42 / var(--tw-bg-opacity, 1)); background-color: rgb(15 23 42 / var(--tw-bg-opacity, 1));
} }
.dark\:text-amber-400:is(.dark *) {
--tw-text-opacity: 1;
color: rgb(251 191 36 / var(--tw-text-opacity, 1));
}
.dark\:text-blue-400:is(.dark *) { .dark\:text-blue-400:is(.dark *) {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(96 165 250 / var(--tw-text-opacity, 1)); color: rgb(96 165 250 / var(--tw-text-opacity, 1));
} }
.dark\:text-gray-600:is(.dark *) {
--tw-text-opacity: 1;
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
}
.dark\:text-green-400:is(.dark *) { .dark\:text-green-400:is(.dark *) {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(74 222 128 / var(--tw-text-opacity, 1)); color: rgb(74 222 128 / var(--tw-text-opacity, 1));