Skip to content

Owner review 26 — rulings (2026-10-15) ​

Status: Active — the court-surface question it left open was closed in review 27 (the pin) · Date: 2026-10-15 · Answers the owner's six questions on 홈: when 할 일 and the alert summary show, whether to-dos belong in the Block or behind the bell, a join action in the FAB, map thumbnails, a court-surface cue on the map, and the 전체 보기 rule. Board: flat-v2-hub § 홈. Companion: review-5 rulings (the honor-system scoring that removed the dispute path).

1. When 할 일 and the alerts show ​

What the board drew, and why it confused.

  • Badge: the bell's count added unread news and open obligations together. The code does the same: deriveBellState in packages/app/src/domain/rules/alert-state.ts sets count = unread + obligations, amber when any obligation is open.
  • 할 일: only officials had a 할 일 section (IA flow 9, J1).
  • Scores: a Notice, "처리할 점수가 있어요", stood for scores.

So a member's bell showing 3, with nothing on 홈, meant three unread news items: a new session, an RSVP, a comment. That was correct, but the board never said so. The official frame was also off: its bell showed 5 while the page listed 8 items.

Scores. The owner is right for every match except each player's last.

  • The gate (library §10, D4) holds a player's next match until their earlier one is settled, so nothing goes unscored mid-session.
  • A session's last match has no successor to hold, so it can still wait. Its players can enter the score until 7 days after the session, then the host or an official can. After 30 days it becomes 기록 제외 (Result policy).

So 점수 입력 survives as a rare task. A notice that the session's scores need processing does not.

Disputes. The dispute path is gone (review 5). The host or an official who is not playing decides an appeal. As the owner suggested, that is a 할 일 Cell (점수 검토), not an alarm.

Ruling: the bell is news; 할 일 is what waits on you.

  • Anyone gets 할 일, not only officials. It sits between the Block and the sessions and is absent when empty. Each Cell is one kind with its count; the Cell names the club when several clubs are involved.
  • The bell counts unread news only. Obligations no longer add to its count, and its amber "attention" tone retires. When an obligation arrives, that is news, so it shows once as unread. Reading it leaves the Cell in place; doing the task clears it.
  • No Notice on 홈. The score Notice and the disputed-match danger Notice are retired. A payment due stays a row's Tag (입금 필요) and is also a Cell.
KindWhoAppearsClearsOpens
점수 검토the host or an official who is not playingan appeal is opendecided, withdrawn, or stands after 7 daysthe Host review sheet
점수 입력the match's players for 7 days after the session, then the host or an officiala match is still without a score (H2)entered, a stop outcome, or 기록 제외 at 30 daysScoreEntry
입금 확인the host or an official who manages dues (canManageDues)a reported transfer waitsconfirmed or waived참가비
가입 신청officialsa join requestapproved or declined멤버
회비 미납officialsdues overduepaid or waived회비
신고officialsan open reportresolved신고 관리
게스트officialsa guest applicationapproved or declined일정 관리
참가비 입금a member who joined a session with a feethe fee is duepaid or waived일정 상세, its payment
회비 납부a membertheir dues are duepaid or waived회비

2. To-dos in the Block, in a section, or behind the bell alone ​

Ruling: a section, as drawn.

  • The bell alone hides the work. Passive indicators are easily missed (NN/g, indicators, validations and notifications). A count cannot say what is owed. And mixing FYI with obligations buries the tasks. Peers split the two:
    • Linear added a Priority view to its Inbox on 2026-09-03 to separate "what needs your attention" (changelog).
    • Workday keeps My Tasks apart from notifications.
    • WooCommerce keeps action-required items out of its Inbox (guidelines).
  • Inside the Block would break the Block's grammar. The Block is one press target with one door (library D1, IA7), so a to-do line inside it would be a second target inside the first. Its job is "when do I play next", not "what do I owe". It is also the same height every day, while the tasks run from none to many.
  • A section costs nothing on the days with nothing to do, because it is absent. When there is work, it sits right under the Block, above the sessions.

3. A join action in the FAB ​

Ruling: no; the FAB only creates.

  • The FAB is the screen's one main action. Material describes it as creating something new. A Material 3 Expressive FAB menu (2 to 6 actions) would turn the one-tap create into two taps. No sports app was found whose FAB is "find or join".
  • Joining already lives on 홈. Every row with a count (4/8) is a club session the viewer has not answered; tapping it opens 일정 상세, then 참석. Pickups are one tab away (경기 › 번개 찾기).
  • The real gap is the empty week. For a member, the empty Block's door is now 번개 찾기 › ("다음 7일 · 일정 없음 · 클럽 일정이 올라오면 알려 드릴게요"). For an official it stays 일정 만들기 ›. The find path shows up exactly when there is nothing to play, and the FAB still makes one.

4. Map thumbnails ​

Done. Every 홈 row now draws the venue's static map, as the real app's VenueTile already does. The library's Thumb cascade is the venue's own photo, then the map, then the court tile only when there are no coordinates. The board had drawn the cascade's last resort everywhere.

The kit's map tile now has five street layouts, so a list of venues reads as different places. A venue keeps one layout on every board. The other boards (club home, library rows, forms, lists) get the same sweep.

5. A court-surface strip or border on the map ​

Recommendation: none. The board draws the three options under "Open question" (ring, band, pin) so they can be compared.

  • The owner removed a surface cue from this same tile before. On 2026-07-27, in card QA round 4, the corner surface chip came off because people could not decode it (venue-tile.tsx). A strip or a border says even less than the chip did.
  • Colour alone fails WCAG 1.4.1 (use of color) unless the surface is also written. It already is, where people choose: session detail ("코트 하드 4면") and venue rows ("하드, 코트 12면").
  • The ring reads as selected or focused, which is our selection and focus grammar. The band reads as a progress bar.
  • Both add a hue to every row, in a scheme that keeps colour for state (Tags) and the ball.
  • Surface is a venue constant. On 홈 the rows are the viewer's own sessions at venues they already know.
  • If the owner wants a cue anyway, the pin is the least noisy: the marker takes the surface colour and nothing is added.

6. When 전체 보기 shows, and how many rows ​

What existed. There was no rule for row sections, only the Shelf's (at most five, then a door card). The board was inconsistent: 내일 일정 showed 전체 보기 over two rows with nothing hidden, while 이번 주 never showed it.

Ruling: the preview law.

  • Three rows at most. A section on a hub page (홈, 클럽 홈, 기록, 프로필) shows at most three rows.
  • 전체 보기 only when rows are hidden. 전체 보기 › and the total (count suffix, "5개") appear only then. A section that shows everything has neither.
  • The same set. 전체 보기 opens the same set, with the same filter and order:
    • 할 일 › 알림, at its 할 일 band;
    • 오늘, 내일 and 이번 주 › 경기 › 내 경기, at that day.
  • No caps on lists. Pushed lists and tab panes never cap; they virtualise.
  • Why three. On the overflow frame at 390 × 844, the content ends at 712 of the 746 above the tab bar, so the first screen holds the Block, three tasks and three sessions without scrolling.

Follow-up for the 경기 pages. 내 경기 lists only the viewer's own sessions (useMyParticipatingSessions), while 홈 also lists their clubs' sessions they have not answered. To be the same set, 내 경기 should list both: the viewer's sessions plus their clubs' upcoming ones, the unanswered ones trailing their count. This is logged now and will be drawn when the pages pass reaches 경기.

Changes ​

  • Board (flat-v2-hub § 홈):
    • Maps: every row draws the venue's map.
    • New frames:
      • To do, member: 점수 입력, 참가비 입금.
      • Nothing this week: the door is 번개 찾기 ›.
      • Open question: the surface cue, as a ring, a band or a pin.
    • Overflow frame: now shows the cap, with three rows, the total and 전체 보기 on both 할 일 and 오늘 일정.
    • Removed: the score Notice frame.
    • Bell counts: news only.
    • Spec: a preview-law row, and new Reads, Taps and Rulings.
  • Kit: five map layouts picked per venue (fvkMapV); the empty Block takes an eyebrow and a meta; the surface-cue proposal props (cue) stay until this question is decided.
  • Library: Section head (the preview law), Badge (the 알림 count is news only), Thumb (a session row draws the map; no surface cue on it), Task Cell (anyone's pending work).
  • IA doc: J1 and the 홈 states row are marked as superseded by this review.
  • Code: none now. These changes come at the 홈 migration, with the build that waits for flat v2:
    • the bell stops adding obligations (deriveBellCountInputs, deriveBellState, use-notification-bell-state.ts);
    • the member kinds join the 할 일 source;
    • the dispute banner goes (home-disputed-alert-banner.tsx).

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