fix: shelve recorder card picker for plain typed card entry

The tap picker wasn't working in practice. Replace it with simple text inputs for
hero/board/shown cards: case-insensitive, accepts 'ah kh' / 'AhKh' / '7d2c5h' /
'10h'. parseCards() tokenizes; the server's normalize_structured() canonicalizes
(case, 10->T, completeness). Also adds per-action remove (✕) in the street log.
Picker UI + bottom-sheet CSS removed; tap picker deferred to V2 (docs/RECORDER.md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-27 04:35:13 +00:00
parent 2bd5b7fd26
commit 4fd7eff7e9
2 changed files with 83 additions and 224 deletions
+9 -32
View File
@@ -58,24 +58,17 @@
background: var(--bg-elev, #0e0e0e); border: 1px solid var(--border, #2a1d12);
color: var(--text-main, #e8e8e8); font-family: inherit; font-size: .85rem;
}
.rec-seat-cards { display: flex; gap: 5px; }
.rec-rm { background: none; border: none; color: var(--text-fade, #8a8a8a); font-size: .9rem; padding: 4px; }
/* cards */
.rec-card {
display: inline-flex; align-items: center; justify-content: center;
min-width: 30px; height: 40px; padding: 0 5px; border-radius: 6px;
background: #f4f4f4; color: #111; font-weight: 700; font-size: 1rem; line-height: 1;
/* typed card entry */
.rec-field { display: block; margin-top: 10px; }
.rec-cards {
width: 100%; padding: 10px 11px; border-radius: 8px;
background: var(--bg-elev, #0e0e0e); border: 1px solid var(--border, #2a1d12);
color: var(--text-main, #e8e8e8); font-family: inherit; font-size: .95rem;
letter-spacing: 1px; box-sizing: border-box;
}
.rec-card .rs { font-size: .8rem; margin-left: 1px; }
.rec-card.spade, .rec-card.club { color: #111; }
.rec-card.heart { color: #d11; }
.rec-card.diamond { color: #1463d1; }
.rec-card.empty { background: var(--bg-elev, #0e0e0e); color: var(--text-fade, #8a8a8a); border: 1px dashed var(--border-bright, #4a2f15); }
.rec-card.empty.active { border-color: var(--accent, #ff7a00); color: var(--accent, #ff7a00); }
.rec-card.unknown { background: #2a2a2a; color: #aaa; }
.rec-board { display: flex; gap: 6px; margin: 8px 0; }
.rec-cards.sm { width: 88px; flex: none; padding: 8px 9px; font-size: .85rem; }
.rec-street-tabs { display: flex; gap: 6px; margin-bottom: 8px; }
.rec-tab {
@@ -105,23 +98,7 @@
.rec-save { width: 100%; padding: 14px; border-radius: 10px; background: var(--accent, #ff7a00); color: #111; border: none; font-weight: 700; font-size: 1rem; }
.rec-save:disabled { opacity: .6; }
/* card picker bottom sheet */
.rec-picker-wrap { position: fixed; inset: 0; background: rgba(0,0,0,.5); display: flex; align-items: flex-end; z-index: 1100; }
.rec-picker { width: 100%; background: var(--bg-elev, #0e0e0e); border-top: 1px solid var(--border-bright, #4a2f15); border-radius: 16px 16px 0 0; padding: 14px; }
.rec-picker-head { display: flex; align-items: center; justify-content: space-between; font-size: .85rem; color: var(--text-fade, #8a8a8a); margin-bottom: 12px; }
.rec-pk-x { background: var(--border-bright, #4a2f15); color: #fff; border: none; border-radius: 8px; padding: 6px 12px; font-weight: 600; }
.rec-suits { display: flex; gap: 8px; margin-bottom: 12px; }
.rec-suit { flex: 1; height: 52px; border-radius: 10px; font-size: 1.6rem; background: #f4f4f4; border: 2px solid transparent; }
.rec-suit.spade, .rec-suit.club { color: #111; }
.rec-suit.heart { color: #d11; }
.rec-suit.diamond { color: #1463d1; }
.rec-suit.x { background: #2a2a2a; color: #aaa; font-size: 1.1rem; font-weight: 700; }
.rec-suit.on { border-color: var(--accent, #ff7a00); box-shadow: 0 0 0 2px var(--accent, #ff7a00); }
.rec-ranks { display: grid; grid-template-columns: repeat(7, 1fr); gap: 7px; }
.rec-rank { height: 46px; border-radius: 9px; font-size: 1.05rem; font-weight: 700; background: var(--bg-dark, #070707); color: var(--text-main, #e8e8e8); border: 1px solid var(--border, #2a1d12); }
.rec-rank.on { background: var(--accent, #ff7a00); color: #111; border-color: var(--accent, #ff7a00); }
.rec-pk-foot { display: flex; justify-content: space-between; margin-top: 12px; }
.rec-pk-foot button { background: var(--bg-dark, #070707); color: var(--text-fade, #8a8a8a); border: 1px solid var(--border, #2a1d12); border-radius: 8px; padding: 9px 14px; font-size: .85rem; }
.rec-undo { background: none; border: none; color: var(--text-fade, #8a8a8a); font-size: .75rem; padding: 0 4px; }
/* The Record tab swaps in for Mind in the bottom bar, but only in poker (cash) mode.
body.cash-mode is toggled on mode change in index.html. */