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와 비교했어요: 같은 뜻의 다른 단어, 이름 변경 후 남은 이름, 날것의 오류, 이모지, 재치 있는 말. 뒷부분은 재치 있는 말을 콘텐츠 토큰으로 만들고, 끌 수 있는 스위치를 제안해요.
| # | Priority우선순위 | What무엇 | Where (main)위치 (main) | Fix고칠 것 |
|---|---|---|---|---|
| C01 | Must · 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:119 | Pick one pair (call C1). Recommended Log in / Log out: the intro you approved already says Log in; 11 strings change. |
| C02 | Must · 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”. |
| C03 | Must · 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:32 | Say 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.) |
| C04 | Must · in #395 Confirms | Sign out still asks “Are you sure you want to sign out?” (U5 decided: no confirm). | HeaderMenu.tsx:330 settings.tsx:125 | Sign out at once; the toast says “Signed out”. |
| C05 | Must · 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:164 | Move them to content tokens with plain, dog and cat versions, and add the Playful words switch (below). |
| C06 | Should 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:112 | Pick one (call C2). Recommended: the Diary holds pages; “Writing Max's page”, “Page sent to Robert”. |
| C07 | Should 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:153 | Always “Couldn't”. |
| C08 | Should Errors | “Something went wrong. Please try again.” and other “Please” lines in sign-in errors. | authErrors.ts:10 authErrors.ts:34 index.tsx:29 | Name the problem when we know it; drop “Please”: “Too many tries. Wait a minute and try again.” |
| C09 | Should 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.tsx | Optional: swap the ones that only decorate (🔑, ✏️, 📸, 🚗) for a Lucide icon + word; keep 📍 and 🐶 / 🐱. |
| C10 | Should 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.tsx | Icons for status; keep 🐾 only for a finished day or stay, and make those playful tokens. |
| C11 | After 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:73 | Sentence case everywhere (“What's new”), no period on titles, “…” not “...”, “16 to 40 lbs”. |
| C12 | After the freeze Loading | Three screens say only “Loading…”. | ReportComposer.tsx:327 TodayTasks.tsx:49 CareTasksSection.tsx:191 | Say 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처럼 대문자로 쓴 건 기능 이름이에요.
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!”를 받고, 끌 방법이 없어요. 토큰이 셋 다 해결해요.
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: 줄마다 키, 나올 수 있는 자리, 세 가지 버전(기본, 강아지, 고양이).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 }})를 돌려줘요: 재치 있는 말이 꺼져 있거나 펫이 하나가 아니면 기본, 아니면 그 펫의 강아지/고양이 버전.// 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
| Key | Where자리 | Shown now지금 보이는 말 | In the app앱 위치 |
|---|
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 결정)에서 왔어요. 알림 두 줄은 서버에서 쓰니 민식님이나 슬기님이 필요해요.
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줄의 나머지는 화면마다.