feat(site): loop a faithful copy of the app's recording capsule in the hero

Replace the press-to-play demo and the "see how it works" button with an
example that keeps playing on the right: hold Right Alt, the capsule appears
with live wave bars, elapsed time and the partial transcript, releasing shows
the processing bar, and the cleaned sentence is pasted at the cursor of a
notes window. It cycles through two samples per language.

- Same numbers as apps/desktop recording-tip: 9 bars with cos weights, 100 ms
  updates, 0.5 smoothing, +/-35% jitter, 2-28 px, per-bar colours, 120 px
  progress bar min(95, (1 - 1/(1 + 1.5t)) * 100)%.
- WCAG 2.2.2: a pause button; stops when off screen or the tab is hidden.
  Reduced motion shows one still frame. The animation is aria-hidden with a
  text description for screen readers. Chinese and Japanese transcripts
  appear three characters at a time.
- Add 404.html so unknown paths stop falling back to the landing page, delete
  the duplicate accept-invite.html (/accept-invite/ is canonical) and link it
  straight to /#download, and move the legal pages off the retired orange
  accent (primary button contrast 5.2:1).
This commit is contained in:
Yun Chan 2026-09-26 15:49:08 +09:00
parent dc43884e3e
commit 92978607da
23 changed files with 707 additions and 467 deletions

View file

@ -27,23 +27,32 @@ export const ko: Translations = {
subtitle: '단축키를 누른 채 말하고 떼세요. 음성 인식과 문장 다듬기가 내 PC에서 실행되고, 결과는 지금 쓰고 있는 앱에 바로 입력됩니다.',
hotkeyKey: '오른쪽 Alt',
hotkeyAction: '누른 채 말하기',
secondaryCta: '작동 방식 보기',
trust: '무료로 시작 · 계정 없이 사용 · 모델을 받은 뒤에는 인터넷 없이 동작',
windowsOnly: '지금은 Windows용만 제공합니다. Windows PC에서 이 페이지를 열어 받아 주세요.',
},
demo: {
title: '예시 화면',
note: '실제로 녹음하지 않는 예시입니다.',
idle: '재생을 누르면 말이 글로 바뀌고 다듬어지는 과정을 보여 드립니다.',
listening: '듣는 중',
polishing: '다듬는 중',
done: '입력 완료',
label: '앱 동작 예시',
description: '오른쪽 Alt를 누른 채 말하면 화면 아래에 녹음 캡슐이 뜨고 말한 내용이 실시간으로 보입니다. 키를 떼면 문장을 다듬어 메모 창의 커서 자리에 입력합니다. 이 과정이 반복 재생됩니다.',
note: '실제 녹음이 아닌 예시 화면입니다.',
windowTitle: '메모',
docLine: '금요일 팀 회의 메모',
processing: '처리 중...',
stateIdle: '대기 중',
stateListening: '누른 채 말하는 중',
statePolishing: '키를 떼면 다듬기',
stateDone: '커서 자리에 입력됨',
pause: '예시 일시정지',
play: '예시 재생',
replay: '다시 재생',
rawLabel: '인식된 말',
cleanLabel: '입력된 문장',
sampleRaw: '어… 이번 배포는 그러니까 다음 주 금요일까지로 잡으면 될 것 같아요',
sampleClean: '이번 배포는 다음 주 금요일까지로 잡겠습니다.',
samples: [
{
raw: '어… 그러니까 이번 배포는 다음 주 금요일까지로 잡으면 될 것 같아요',
clean: '이번 배포는 다음 주 금요일까지로 잡겠습니다.',
},
{
raw: '회의록 정리해서 오늘 중으로 팀 채널에 올려 주세요 아 첨부 파일도 같이요',
clean: '회의록을 정리해 오늘 중으로 첨부 파일과 함께 팀 채널에 올려 주세요.',
},
],
},
features: {
title: '받아쓰기부터 회의 기록까지, 내 PC 안에서.',