먼저, 귀 기울이기
+
+ 에스의 안내와 소음 속 문장을 들어요.
+
한 라운드 동안 같은 난이도로 들어요.
+
RUN v5.0.4 /home/hermes/worktrees/find-word-v0.2.5 ❯ tests/assets.test.ts (2 tests | 1 failed) 429ms ❯ 저장한 한국어 neural 음성 자산 (2) × 0.2.5 neural provider·voice·prosody와 실측 도구 버전을 기록한다 16ms ❯ tests/neural-release.test.ts (4 tests | 3 failed) 100ms × 0.2.5 버전을 package·lock·UI·index·문서에 일치시킨다 75ms × 현재 문서·manifest·CHANGELOG는 0.2.5 동작과 역사 보존을 설명한다 15ms × README는 현재 리뷰 증거 경로와 정확한 라운드 보너스를 안내한다 4ms ❯ tests/audio.test.ts (13 tests | 3 failed) 393ms ❯ 오디오 재생 수명과 믹서 (8) × intro와 목표 실제 fetch URL에 같은 명시적 cache-busting 버전을 붙인다 59ms × intro 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 35ms × target 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 61ms ❯ tests/App.test.tsx (23 tests | 1 failed) 4544ms ❯ 시작부터 결과까지 사용자 흐름 (13) × 브랜드·버전·크레딧을 보여주며 직접 시작하기 전에는 재생하지 않는다 53ms ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 8 ⎯⎯⎯⎯⎯⎯⎯ FAIL tests/App.test.tsx > 시작부터 결과까지 사용자 흐름 > 브랜드·버전·크레딧을 보여주며 직접 시작하기 전에는 재생하지 않는다 TestingLibraryElementError: Unable to find an element with the text: v0.2.5. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style [36m
[39m [36m[39m [36m[39m [0m 귀를 기울이면, 발견하는 즐거움[0m [36m
[39m [36m[39m
[0m도시의 소리 사이에 에스가 숨겨 둔 단어.[0m
[36m
[39m
[0m조금 더 귀 기울여, 오늘의 행운을 찾아보세요.[0m
[36m
+ {describeSnr(selectedSnr)} 범위 −12~+12 dB · 1 dB 간격. 양수는 음성이 더 + 크게, 0은 같게, 음수는 더 작게 들려요. 변경은 다음 재생·재청취부터 + 적용돼요. +
++ 귀를 기울이면, 발견하는 즐거움 +
+
+ 도시의 소리 사이에 에스가 숨겨 둔 단어.
+
+ 조금 더 귀 기울여, 오늘의 행운을 찾아보세요.
+
+ 한 단계에서 세 문제를 풀고, 완료 후 다음 단계에 도전해요. +
++ {ENVIRONMENTS.find((e) => e.id === environment) + ?.description ?? + "길거리부터 비 오는 거리까지, 매번 다른 공간을 만나요."} +
++ 편안한 작은 음량으로 시작해 + 보세요. +
+ +
+ 에스의 안내와 소음 속 문장을 들어요.
+
한 라운드 동안 같은 난이도로 들어요.
+
+ 소리가 끝나면 질문이 나타나요.
+
+ 보기에서 고르거나 직접 입력해요.
+
+ 세 문제 뒤 나의 결과를 확인해요.
+
+ 놓쳤다면 언제든 다시 들어도 좋아요.
+
+ {game.endedEarly + ? "답한 문제만 모아 결과를 보여 드려요." + : "이번 단계의 결과를 확인하고 다음 도전을 이어 가세요."} +
++ 응답 {result.answered}문항 · 정답 {result.correct}문항 +
+| 난이도 | +SNR | +맞힌 문제 | +
|---|---|---|
| {row.level}단계 | ++ {[ + ...new Set( + game.answers + .filter((a) => a.level === row.level) + .map((a) => a.db), + ), + ] + .map(formatSnr) + .join(", ") || formatSnr(LEVELS[row.level - 1]!.db)} + | ++ {row.total ? `${row.correct} / ${row.total}` : "미진행"} + | +
+ 정답마다 단계 × 100점 + 연속 정답 보너스 (문항별 최대{" "} + {Math.min(ROUND_SIZE - 1, 4) * 10}점, 라운드 합계 최대{" "} + {Array.from( + { length: ROUND_SIZE }, + (_, i) => Math.min(i, 4) * 10, + ).reduce((sum, bonus) => sum + bonus, 0)} + 점) +
+ {!game.endedEarly && ( + + )} + ++ {question.mode === "choice" + ? "가장 또렷하게 기억나는 단어를 골라 주세요." + : "기억나는 단어 하나를 입력해 주세요."} +
+ {question.mode === "choice" ? ( ++ 숨겨진 단어는 {question.word.answer} +
+{question.sentence}+
+ 내 답: {game.answers.at(-1)!.input} · + + {game.answers.at(-1)!.points}점 +
+ +
+ 문장이 끝나면 질문이 나타나요.
+
+ 작은 단어 하나를 기억해 주세요.
+
+ {game.phase === "loading" + ? "소리를 준비하고 있어요…" + : game.phase === "playing" + ? "에스의 목소리를 듣고 있어요…" + : "준비되면 문장 듣기를 눌러 주세요."} +
+{game.error}
+ +