Skip to content

Device checklists — the only checks that need a phone

Status: Active · Last reviewed: 2026-09-17 · Owner: the phone in hand; everything else in the QA ladder is machine-run (qa-automation.md).

Each list is scripted to take about fifteen minutes with nothing to decide: install or update, seed once, walk the rows, mark ✓ or ✗ on the page QA board (https://claude.ai/code/artifact/435ac449-870f-4717-a2dc-209830650ece, the page's own entry). A ✗ with one sentence is enough; Claude reproduces from the board.

Before any list

  1. Preview channel on the 0.8.0 Android build (2afd1b89); pull the latest OTA (background the app, reopen, or Dev panel → 업데이트 확인).
  2. Seed once from the dev panel or the terminal: node scripts/run-scenario.mjs full_qa (hosted QA bed; this overwrites the QA world — never on a database you called live). qa_showcase is the lighter chain when only cards and live surfaces matter.
  3. Log in as the dev account. Airplane mode is a separate list (offline behaviour is machine-tested; skip it here).

Legend: Route is what to open · Do is the gesture · Pass is what a Toss user would expect to see. Anything that needs a second person is marked (2p).


List 1 — Autonomous pass, wave 1 (after OTA of the 2026-09-17 decisions)

#RouteDoPass
1클럽 tablook at the headera text action "초대 코드" (no key icon); tapping opens the code screen
2클럽 tab, account with no clubsread the empty state"클럽 탐색" filled, "초대 코드로 가입" outlined under it; the bottom "클럽 만들기" band is outlined, not filled
3클럽 tab, account with a clublook at the bottom band"클럽 만들기" is filled again
4club detail as an officialheader"관리" text action next to ⋯; white over the banner, brand colour once collapsed; ⋯ holds only 공유 and 나가기
5club detail as a plain memberheaderno "관리"; ⋯ holds 공유 and 나가기
6club detail → 멤버 panescroll the headermember count line; "복식 파트너 추천" row for members; no 조 line when the club has one group; legend line + 조 lines when it has two or more
7관리 → 멤버 관리headerthe partner row is gone from here
8관리 → 회비 관리unpaid rowinline "납부 확인" and "면제" pills, no ⋯; tapping the row opens the note editor; paid current-month row shows "납부 취소"
9sametwo or more unpaid rows"전체 납부 확인" in the section header; confirm names the count and the total; one tap marks all; the toast counts them
10session detail → host tools → 참가비title and sectionstitle "참가비"; section "입금 현황"; cost-split sessions show "정산" and the one-sentence explainer with 1,000원 rounding
11same, pending rowpills"입금 확인" (not 납부) and "면제"
12세션 만들기 from a clubstep 3형식 is pre-selected with the club's format and still changeable; pickup wizard starts empty
13session edit (open session, nobody paid)fields참가비 row is editable; the lock note names 종목/로테이션/모집 마감 only
14session edit (a payment exists)fields참가비 row disabled with "입금이 시작되어…" caption
15scorecard rules stripbadgesa 듀스 or 노애드 badge next to tiebreak
16any listread secondary textdates/venues/fees are visibly larger (14px); nothing clips mid-word
17any card with a long venue nametitlewraps to two lines, never an ellipsis after one
18클럽 만들기 step 4 / 세션 만들기 step 3tier pickerplain 구력 lines; "자세히 보기" reveals the federation lines; tapping again collapses
19same steps구성 fieldone-line hint under the label; the "?" beside the tier label opens the tier sheet
20session detail → 정보로테이션 rowreads "N분마다 교대"
21홈 → 알림 filter chipslabels"대항전", no "인터클럽"
22설정 → 신뢰 등급 row · public profile trust celltapthe trust sheet opens, four tiers with plain requirements, mine highlighted
23설정 → 문의하기rows이메일 문의 only (no Kakao until the channel URL is configured); tapping opens the mail app

List 2 — Board device checks (three ack'd entries)

#RouteDoPass
1session detail with a participant whose photo URL is deadparticipants sectioninitials or silhouette, never a blank circle (board fb_…3jw0x1)
2코트 → saved courts, airplane mode on then offtilepin glyph while the map image fails, image once it loads (board fb_…k39ijx)
3메시지 → open a seeded DMheader while loading and afternever a bare "메시지" once the thread has loaded (board fb_…szile3)

List 3 — SessionCardV2 (owed since 2026-07)

Seed: card_showcase (or full_qa).

#RouteDoPass
1홈, 경기 tab, club 일정 pane, recordsscroll every feedevery session is the same V2 card; no old strip card anywhere
2any cardmap tiledistrict-scale tile with the red marker; no blank tile
3live session cardtopattention strip (live / closing) tinted, marks icon-only under it
4a saved sessionright of the weatherbookmark glyph filled; tap toggles
5a session you hostclosing rowcrown host mark
6scroll a 30+ card feed fastlook for blanksno blank cells (Fabric recycling class)

List 4 — ATP live-set cards (owed since 2026-08-27)

Seed: live_showcase.

#RouteDoPass
1세션 만들기 → match rulespick a multi-set formatfreeform steppers hide behind "형식이 세부 규칙을 정해요"
2match board on that sessionenter a scoreper-set rows appear progressively; tiebreak entry when the set reaches the spec
3session detail matchups card, spectator scorecardscoreboardN set cells, winner by sets won; single-set sessions unchanged
4session editfield rows코트 / 구성 / 실력 rows edit and save
5live session (2p)live paircurrent-set games update within a few seconds without pull-to-refresh

List 5 — Club home place surface (owed since 2026-08-23)

Seed: club_showcase.

#RouteDoPass
1club detailscrollalbum banner scrolls sideways; the top bar goes from ‹/⋯ over the banner to a solid bar with the title
2identity blockreadavatar beside the title, emoji-led chips (📍 🎾 📅), tagline
3mission cardnew member가입인사 → 첫 일정 참석 → 첫 일정 후기 with the right step lit
4schedule rowstap the top rowcollapses/expands; D-day, venue, one signal per row
5feedcategory chips전체 / 공지 / 자유 / 일정 후기 / 가입인사 (운영진방 for officials) filter the list
6a posttap 좋아요, open 답글counts update in place
7채팅 tablistthe club room first, then every DM; no compose button

List 6 — Flat layout device pass (F8, owed since 2026-09-07)

#RouteDoPass
1session detail, club detail, venue detail, profile, recordsscroll eachcanvas ground, no tinted card shells; one seam between sections, none inside a group
2any detail pageleft edgetext aligns at the 16px rail; nothing double-inset
3dark modesame five pagesborders one step above surface; no black-on-black rows
4tab barswitch tabs quicklyno elevation flicker on Android

List 7 — Keyboard controller (activation is an on-device OTA loop)

Do this only when Claude ships an activation OTA and asks; the library is dormant in the 0.8.0 binary.

#RouteDoPass
1세션 만들기 step with a text field at the bottomfocus itthe field rises above the keyboard without the whole screen jumping
2DM threadtypecomposer stays attached to the keyboard, no flicker on open/close
3참가비 결제 (PortOne WebView)openthe WebView still fills the screen (top inset regression check)

List 8 — Draft resume (owed since 2026-07)

#RouteDoPass
1클럽 만들기fill two steps, kill the app, reopen 클럽 만들기"이어서 작성할까요?" offer; accepting restores both steps
2세션 만들기samesame
3eitherdecline the offera clean wizard; the offer does not return

List 9 — Create-club step 4 chips (owed since 2026-07-30)

#RouteDoPass
1클럽 만들기 step 4format tilesone-line pills ("복식 · 4인 기준"), selection visible, 44pt tall

List 10 — Autonomous pass, waves 3/4 (OTA f3be020c, 2026-09-17)

Seed: live_showcase for rows 1–4, full_qa for the rest.

#RouteDoPass
1session detail of a live sessionlook under the heroone band: 진행 중 · elapsed time · 라운드 N/M · 코트 N; it updates without pull-to-refresh
2match board of the same sessiontop of the flowthe same band, same facts, first thing under the header
3spectator scorecard of the same sessionscroll the tabsthe band stays pinned above the tabs
4a cancelled sessionscrollno empty matches section, no doubled hairline
5클럽 만들기 step 1toggle "기본 설정으로 빠르게 만들기"off by default; on, the wizard runs name → where → when → review (four screens) and the progress dots match
6same, review stepread the rows구성 혼합 / 형식 복식 / 실력 무관 / 균형 / 게스트 허용 each carry a 기본값 badge and open for editing on tap
7클럽 설정 (club created via quick start)인원a 정원 stepper exists and saves
8클럽 설정 → 정보활동 지역 rowread-only district line with a link to 코트 관리; add a court in another district there and the line gains that district on return
9클럽 설정 → 갤러리uploadthe OS picker allows multi-select (up to 4); one toast counts the uploads; no per-photo toast
10club home, 전체 feedafter row 9"OO님이 사진 N장을 올렸어요" row with thumbnails and the 자동 marker; tap opens the album; the row is absent under 공지
11any picker with photo permission deniedpickone dialog everywhere: "권한 필요 / 사진 접근 권한이 필요해요" (settings logo/banner/gallery, post photo, profile avatar, DM photo, club logo tile)

When a list is done: move the page(s) to Done on the board. Claude reads the board, fixes ✗ items at the class level, and re-ships an OTA; the list is re-run only for the rows that changed.

Markdown remains the source of truth. Run yarn docs:check before handoff.