// src/welcome/copy.ts — single source-of-truth for welcome-page
// NON-TAGLINE copy.
//
// Plan 01-12 (landed first; SUMMARY 2026-05-20) migrated the two D-08
// tagline strings (welcomeHeroRu + welcomeHeroEn) to
// _locales/{en,ru}/messages.json. Those keys are read via
// chrome.i18n.getMessage in welcome.ts and intentionally NOT included
// in this map.
//
// The remaining keys are engineering-grade placeholders authored in
// Russian per D-03 Sober voice register; a future copy-iteration plan
// may migrate them to _locales/ for full operator-locale awareness.
//
// D-08 tagline reference (lives in _locales/, not here):
//   en/welcomeHeroEn → "Thirty seconds ago, always at hand."
//   ru/welcomeHeroRu → "Тридцать секунд назад, всегда под рукой."
//
// References:
//   - D-02 (welcome layout — Hero + Loom dial), brand-decisions-v1.md
//   - D-03 (Sober voice register), brand-decisions-v1.md
//   - D-08 (tagline), brand-decisions-v1.md
//   - D-16-toolbar (toolbar owns start path), 01-09-SUMMARY.md
//   - Plan 01-12 Wave 4 chrome.i18n fallback pattern (popup precedent)

/**
 * Plan 01-12 fallback-pattern constants for the welcomeHero keys.
 *
 * welcome.ts uses these as the `|| <en-const>` fallback when
 * chrome.i18n.getMessage returns empty string (Plan 01-10 RESEARCH
 * Pitfall 4 mitigation: chrome.i18n.getMessage returns '' for unknown
 * keys instead of throwing).
 *
 * Exported separately from COPY so the i18n populate path imports them
 * by name (clean import surface — COPY map stays free of tagline keys).
 */
export const WELCOME_HERO_RU_FALLBACK =
  'Тридцать секунд назад, всегда под рукой.';
export const WELCOME_HERO_EN_FALLBACK =
  'Thirty seconds ago, always at hand.';

/**
 * Non-tagline welcome-page copy. Keys are stable identifiers used by
 * `[data-mokosh-key='<key>']` attribute selectors in welcome.html;
 * populateCopy() in welcome.ts walks every element with the attribute
 * and writes textContent (or document.title for the <title> element).
 *
 * Russian phrasing per D-03 Sober voice — restrained, declarative,
 * no marketing inflection.
 */
export const COPY: Readonly<Record<string, string>> = Object.freeze({
  'welcome.page.title': 'Добро пожаловать в Mokosh',
  'welcome.hero.title': 'Mokosh',
  // Plan 01-10 must_have #9 path-A swap-in (landed 2026-05-20):
  // alt text for the canonical mark <img> populated by welcome.ts
  // populateMark(). The mark is decoratively presented (aria-hidden
  // is set on the img), so this alt is primarily for screen-reader
  // landmark identification when aria-hidden is overridden by future
  // accessibility work. Russian phrasing per D-03 Sober voice.
  'welcome.hero.mark.alt': 'Знак Mokosh',
  'welcome.body.explainer.line1':
    'Mokosh непрерывно записывает последние 30 секунд экрана и 10 минут '
    + 'логов вашего браузера.',
  'welcome.body.explainer.line2':
    'Когда возникает баг, вы одним кликом сохраняете архив для службы '
    + 'поддержки. Данные не отправляются никуда — только локально.',
  // Plan 01-12 D-07 brand-polish (2026-05-20, debug session
  // 01-12-stale-ai-call-recorder-references): operator sees the toolbar
  // tooltip "Mokosh — щёлкните, чтобы начать запись" (i18n key
  // `tooltipOff` in `_locales/ru/messages.json`); welcome CTA must
  // reference that same brand. Pre-D-07 this line read "иконку AI Call
  // Recorder" — propagation was missed during the Wave-3 manifest+locales
  // migration and corrected here.
  'welcome.body.cta.toolbar':
    'Чтобы начать запись, нажмите иконку Mokosh на панели '
    + 'инструментов браузера (правый верхний угол).',
  'welcome.footer.privacy':
    'Mokosh не отправляет данные на серверы. Архив создаётся '
    + 'локально по вашему запросу и остаётся на вашем компьютере.',
});
