Skip to content

Autonomous Sweep Log - 2026-04-24

Status: Archived

Scope

Follow-up sweep after the UI/UX, i18n, and performance refactors. The goal was to make autonomous, low-risk improvements that protect perceived speed and consistency before device testing.

Research

  • Reviewed the local best-practice references for performance, networking/cache behavior, and state architecture.
  • Scanned app and feature code for TODO/FIXME markers, ad hoc loading/error patterns, hardcoded user-facing copy, and query hooks likely to create repeated network work.
  • Prioritized issues that affect first-hop tabs, records/profile-style data views, or shared app grammar without changing data models or business rules.

Changes Made

  • useHeadToHead now batch-fetches matches and profiles:
    • Replaced per-session matches.findBySession calls with matches.findBySessions.
    • Replaced per-opponent profiles.findById calls with profiles.findByIds.
    • Added TanStack Query placeholderData: keepPreviousData so cached head-to-head results stay visible while filters or refetches resolve.
  • Email login copy now goes through i18n:
    • Removed hardcoded Korean strings from LoginScreen.
    • Added Korean and English auth copy using the current friendly Korean tone and concise English tone.
    • Stopped exposing raw auth error messages in login alerts; user-facing failures now use localized copy.

Deferred Findings

  • Terms and privacy screens still need final legal policy content. I did not invent legal copy.
  • The largest create flows still have broad inline form logic. They are candidates for future extraction, but touching them during this sweep would create more regression risk than benefit.
  • Achievement checking still contains some per-session repository calls in application-layer orchestration. It is less directly tied to screen navigation latency than the fixed head-to-head path, so it should be handled in a dedicated batch-query pass.

Verification

  • yarn workspace @twomore/app typecheck passed.
  • yarn workspace @twomore/app test --runInBand initially caught the forbidden Korean vocabulary 모임 in the new login subtitle. The copy was corrected to 테니스 클럽의 시작, and the targeted i18n test passed.
  • yarn check passed.
  • yarn workspace @twomore/web build passed.
  • yarn workspace @twomore/mobile preflight passed using Expo's local dependency map because networking was disabled.
  • yarn workspace @twomore/mobile expo export --platform ios --output-dir /tmp/twomore-export-ios passed.
  • yarn workspace @twomore/mobile expo export --platform android --output-dir /tmp/twomore-export-android passed.
  • Web smoke test passed for /records, /records/leaderboard, /records/week, /records/month, /ranking, /leaderboard, /clubs, /clubs/discover, /clubs/my, /activity, /activity/matches, /activity/pickups, /profile, /settings, /home, and /login.
  • git diff --check passed.

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