diff --git a/frontend/index.html b/frontend/index.html
index 2b25ad4..3696d42 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -6582,7 +6582,7 @@ function pysimCardStateUpdate(status) {
pysimSetConnected(false);
const statusEl = document.getElementById('pysim-status');
if (statusEl && statusEl.textContent.trim() !== '') {
- if (status.equipping || status.auto_equip) {
+ if (status.equipping || (status.card_present && status.auto_equip)) {
statusEl.innerHTML = '' + esc(t('Card inserted — initializing...')) + '';
} else if (status.card_present) {
statusEl.innerHTML = '' + esc(t('Card inserted — press Equip')) + '';
diff --git a/frontend/sw.js b/frontend/sw.js
index fa26800..36e885c 100644
--- a/frontend/sw.js
+++ b/frontend/sw.js
@@ -1,4 +1,4 @@
-const CACHE = 'otaman-v106';
+const CACHE = 'otaman-v107';
const URLS = [
'index.html',
'help.html',
diff --git a/frontend/tests/card_state.test.js b/frontend/tests/card_state.test.js
index bd7af8e..335a338 100644
--- a/frontend/tests/card_state.test.js
+++ b/frontend/tests/card_state.test.js
@@ -120,3 +120,10 @@ test('availability state and control gating follow server/card state', () => {
assert.strictEqual(pysimControlDisabled('card', 'card'), false);
assert.strictEqual(pysimControlDisabled('server', 'card'), false);
});
+
+test('no card with auto-equip enabled still shows the no-card message', () => {
+ const { el } = setup();
+ pysimCardStateUpdate(status({ connected: false, card_present: false, auto_equip: true }));
+ assert.ok(el.innerHTML.includes('No card detected'), el.innerHTML);
+ assert.ok(!el.innerHTML.includes('initializing'), el.innerHTML);
+});