Audit · Oct 26 · main @ ffcc8085점검 · 10월 26일 · main @ ffcc8085

Copy audit카피 점검

Every toast, button, title, empty state and error string in the app on main (about 2,600), checked against DESIGN.md §7.6, §7.11 and §7.12: words that mean the same thing but differ, names left over from renames, raw errors, emoji, and the playful lines. The second half proposes playful words as content tokens, with a switch so people can turn them off.main의 앱에 있는 모든 토스트, 버튼, 제목, 빈 화면, 오류 문구(약 2,600개)를 DESIGN.md §7.6, §7.11, §7.12와 비교했어요: 같은 뜻의 다른 단어, 이름 변경 후 남은 이름, 날것의 오류, 이모지, 재치 있는 말. 뒷부분은 재치 있는 말을 콘텐츠 토큰으로 만들고, 끌 수 있는 스위치를 제안해요.

The five must-fix findings, both calls and the Playful words switch are in PR #395 ›필수 다섯 개, 결정 두 개, 재치 있는 말 스위치는 PR #395에 있어요 ›

12findings발견
5before the freeze동결 전
2calls for you결정 필요
17playful lines to tokenize토큰으로 만들 재치 있는 말
4puns hard-coded today지금 하드코딩된 말장난

Two calls, decided Oct 26결정 두 개, 10월 26일 확정

C1Log in or sign in?로그인: Log in 또는 Sign in?Today: Log in on the new intro, sign in in errors and setup, Sign out in the menu.지금: 새 인트로는 Log in, 오류와 설정은 sign in, 메뉴는 Sign out.✓ Decided: Log in / Log out
C2What is the sitter's daily write-up called?시터의 하루 기록 이름은?Today: Diary, report, daily note and page.지금: Diary, report, daily note, page.✓ Decided: a Diary page확정: 다이어리 페이지

Findings발견

#Priority우선순위What무엇Where (main)위치 (main)Fix고칠 것
C01Must · in #395
Words
Log in, sign in and sign out are mixed. The new intro says Log in; auth errors, setup and the session error say sign in; the menu and Settings say Sign out.login.tsx:94 index.tsx:48 authErrors.ts:25 owner-onboarding.tsx:232 HeaderMenu.tsx:288 settings.tsx:119Pick one pair (call C1). Recommended Log in / Log out: the intro you approved already says Log in; 11 strings change.
C02Must · in #395
Words
“Feed” is still on screen after the rename to Moments.FeedBrowser.tsx:205 FeedBrowser.tsx:158 privacy.tsx:20“Couldn't load Moments”, “Photo is back in Moments”, and Privacy says “photos shared in Moments”.
C03Must · in #395
Errors
Raw error text reaches the screen (DESIGN.md §7.11: never server text).profile.tsx:673 profile.tsx:709 FeedBrowser.tsx:205 useStartTrip.ts:32Say what happened and what to do: “Couldn't start the trip. Try again.” (The Moments hide, edit and delete toasts were fine after all: lib/feed.ts already writes those lines.)
C04Must · in #395
Confirms
Sign out still asks “Are you sure you want to sign out?” (U5 decided: no confirm).HeaderMenu.tsx:330 settings.tsx:125Sign out at once; the toast says “Signed out”.
C05Must · in #395
Playful
Puns are hard-coded and can't be turned off. “Paw-fect!” also shows on a cat's page.FeedBrowser.tsx:142 StickerScreen.tsx:182 SitterFeed.tsx:219 feed.tsx:164Move them to content tokens with plain, dog and cat versions, and add the Playful words switch (below).
C06Should
Words
One thing, four names: the sitter's daily write-up is the Diary (tab), a report (composer, “Daily report · Sent”), a daily note (README, Settings) and a page (trial).ReportComposer.tsx:281 ReportComposer.tsx:367 diaryApi.ts:188 settings.tsx:112Pick one (call C2). Recommended: the Diary holds pages; “Writing Max's page”, “Page sent to Robert”.
C07Should
Errors
“Could not” 13 times, “Couldn't” 102 times. Some reach the screen through the raw-error spots above.mediaNormalize.ts:66 cloudinary.ts:82 AddPhotoSheet.tsx:105 MediaPickerProvider.tsx:153Always “Couldn't”.
C08Should
Errors
“Something went wrong. Please try again.” and other “Please” lines in sign-in errors.authErrors.ts:10 authErrors.ts:34 index.tsx:29Name the problem when we know it; drop “Please”: “Too many tries. Wait a minute and try again.”
C09Should
Emoji
Emoji inside buttons and chips: handoff choices (🚗 🚙), “🔑 Add entry info”, “✏️ Note”, “📸 Photos of”. §7.6 allows a helpful emoji (📍 for current location, 🐶 / 🐱 for species), so this is a judgment call, not a rule break.HandoffPicker.tsx:43 MediaPicker.tsx PetForm.tsx:79 profile.tsx:147 SitterSearchBar.tsx AddPhotoSheet.tsxOptional: swap the ones that only decorate (🔑, ✏️, 📸, 🚗) for a Lucide icon + word; keep 📍 and 🐶 / 🐱.
C10Should
Emoji
Emoji at the end of status lines: “You're on the way 🚗”, “You've arrived 📍”, “Diary written 📖”, “Home safe 🏠”, “All done for today 🐾”, “Shared 📔”.ChatTripCard.tsx ActiveTripCard.tsx ChatCareCards.tsx ChatStayCard.tsx:74 TodayTasks.tsxIcons for status; keep 🐾 only for a finished day or stay, and make those playful tokens.
C11After the freeze
Style
Casing and punctuation: “What's New” (Settings) vs “What's new” (its screen); a title ending in a period (“You're all caught up.”); “Reading colors...”; “16–40 lbs”.settings.tsx:91 PetColorsSheet.tsx:78 questions.ts:73Sentence case everywhere (“What's new”), no period on titles, “…” not “...”, “16 to 40 lbs”.
C12After the freeze
Loading
Three screens say only “Loading…”.ReportComposer.tsx:327 TodayTasks.tsx:49 CareTasksSection.tsx:191Say what: “Loading today's tasks…” (and a skeleton after the freeze, U7).

Already consistent: Meet & Greet, Heads-up, Life Record, pick-up and drop-off, check-in, “Sent. Robert was told”, and “Try again”. Feature names in Title Case (Meet & Greet, Heads-up) are names, not a casing slip.이미 일관됨: Meet & Greet, Heads-up, Life Record, pick-up과 drop-off, check-in, “Sent. Robert was told”, “Try again”. Meet & Greet, Heads-up처럼 대문자로 쓴 건 기능 이름이에요.

Proposal제안

Playful words as content tokens재치 있는 말을 콘텐츠 토큰으로

Minsik decided “a little playful”: toasts, empty states, loading lines, a few titles and celebrations. Today the only puns are typed straight into four screens, so nobody can change one in one place, cats get “Paw-fect!”, and there's no way to turn them off. Tokens fix all three.민식님 결정은 “살짝 재치 있게”: 토스트, 빈 화면, 로딩 문구, 일부 제목과 축하. 지금은 말장난이 네 화면에 직접 쓰여 있어서 한 곳에서 바꿀 수 없고, 고양이도 “Paw-fect!”를 받고, 끌 방법이 없어요. 토큰이 셋 다 해결해요.

1 · One file of words1 · 단어 파일 하나frontend/content/words.ts: each line has a key, the surface it may appear on, and three versions: plain, dog and cat.frontend/content/words.ts: 줄마다 키, 나올 수 있는 자리, 세 가지 버전(기본, 강아지, 고양이).
2 · One hook picks2 · 훅 하나가 고름useWords() returns w(key, {{ pet }}): the plain line when Playful words is off or no single pet is in view, else the dog or cat line for that pet.useWords()가 w(key, {{ pet }})를 돌려줘요: 재치 있는 말이 꺼져 있거나 펫이 하나가 아니면 기본, 아니면 그 펫의 강아지/고양이 버전.
3 · A switch in Settings3 · 설정의 스위치“Playful words”, on by default. Kept on the device first (no backend change); it can move to the account with the notification switches later.“Playful words”, 기본 켜짐. 우선 기기에 저장(백엔드 변경 없음); 나중에 알림 스위치처럼 계정으로 옮길 수 있어요.
4 · Never playful4 · 절대 재치 금지The type only allows tokens on toasts, empty states, loading, titles, celebrations and notices, so safety, money, agreements, errors and buttons can't get a pun by accident.타입이 토스트, 빈 화면, 로딩, 제목, 축하, 알림에만 토큰을 허용해서 안전, 돈, 동의, 오류, 버튼에는 실수로도 말장난이 못 들어가요.
// frontend/content/words.ts
export const WORDS = {
  stickerSaved: { on: "toast", plain: "Saved to {pet}'s stickers",
    dog: "Paw-fect! Saved to {pet}'s stickers", cat: "Purr-fect! Saved to {pet}'s stickers" },
  emptyDiary:   { on: "empty", plain: "No page yet. Today's page comes tonight",
    dog: "The diary's still napping. Today's page comes tonight",
    cat: "The diary's still curled up. Today's page comes tonight" },
  // …
} satisfies Record<string, Word>;

// in a screen
const w = useWords();
toast.show(w("stickerSaved", { pet }));   // plain when Playful words is off

Settings

Playful wordsLittle puns in toasts and empty states. Safety, money and agreements always stay plain.
KeyWhere자리Shown now지금 보이는 말In the app앱 위치

Never playful절대 재치 금지

Safety · Don't feed this treatMoney · Pay $212.50 (demo)Agreements · I agree: Chloe may take Max to a vetErrors · Couldn't upload the photo. Try againButtons · Make a sticker

The lines come from Playful words (decided Oct 25). The two notification lines are written on the server, so they need Minsik or Seulgi.문구는 재치 있는 말(10/25 결정)에서 왔어요. 알림 두 줄은 서버에서 쓰니 민식님이나 슬기님이 필요해요.

Suggested order제안 순서

1. C1 and C2 decided (Oct 26). 2. #395: the five must-fix findings, the words file, useWords(), the Settings switch, and the four puns moved to tokens. DESIGN.md §7.6 and D20 record the rules. 3. After the freeze: the should and later findings, and the rest of the 17 lines as screens adopt them.1. C1, C2 확정(10/26). 2. #395: 필수 다섯 개, 단어 파일, useWords(), 설정 스위치, 말장난 네 개를 토큰으로. 규칙은 DESIGN.md §7.6과 D20. 3. 동결 이후: 권장과 이후 항목, 17줄의 나머지는 화면마다.