{
  "slug": "browser-extension",
  "meta": {
    "title": "Browser Extension | ChromVoid",
    "description": "Localhost autofill, copy и TOTP без хранения в браузере."
  },
  "hero": {
    "label": "Browser Extension",
    "title": "Заполняй пароли, а не облака.",
    "description": "Браузерный shell общается с Desktop Gateway через localhost. Секреты остаются в desktop-приложении, а не в профиле браузера.",
    "audience": "Для browser-first workflow, в которых секреты должны оставаться вне профиля браузера."
  },
  "useCases": {
    "title": "Когда это подходит",
    "intro": "Расширение удобно, когда нужен быстрый browser-side доступ без переноса доверия в профиль.",
    "cards": [
      {
        "title": "Автозаполнение активного сайта",
        "body": "Заполняет логин, пароль и OTP из короткоживущего grant для текущей страницы."
      },
      {
        "title": "Копирование по требованию",
        "body": "Копирует значения из popup, не создавая хранения в браузере."
      },
      {
        "title": "Наружу выходит только нужное",
        "body": "Текущую операцию получает только активный сайт, поэтому расширение остаётся тонким shell."
      }
    ]
  },
  "howItWorks": {
    "title": "Путь запроса",
    "intro": "Действие из popup проходит через service worker и localhost, прежде чем Core решает, что раскрывать.",
    "steps": [
      {
        "title": "Откройте popup",
        "body": "Пользователь начинает из popup расширения, а не из внедрённых в форму контролов."
      },
      {
        "title": "Проксируйте через localhost",
        "body": "Запрос идёт через service worker и Desktop Gateway на 127.0.0.1."
      },
      {
        "title": "Верните короткоживущий grant",
        "body": "Core обрабатывает запрос и только затем заполняет, копирует или показывает OTP."
      }
    ],
    "diagrams": [
      {
        "src": "/assets/diagrams/browser-extension-flow.svg",
        "alt": "Путь запроса browser extension",
        "title": "Поток browser extension",
        "description": "Popup, service worker, Desktop Gateway и Core на одном пути."
      }
    ]
  },
  "security": {
    "title": "Проверка границ",
    "cards": [
      {
        "title": "Без browser vault",
        "body": "Расширение не становится вторым хранилищем секретов внутри профиля браузера."
      },
      {
        "title": "Только localhost",
        "body": "Все привилегированные запросы идут через локальную границу Desktop Gateway."
      },
      {
        "title": "Короткоживущие grants",
        "body": "Аутентификационные действия быстро истекают и не переживают lock или revoke."
      }
    ]
  },
  "limitations": {
    "title": "Ограничения и scope",
    "intro": "Страница честно показывает, чего расширение не пытается делать.",
    "items": [
      "Нужен запущенный desktop app, доступный на localhost.",
      "Секреты не хранятся в extension storage и не синхронизируются через профиль браузера.",
      "Это не замена полноценному browser password manager."
    ],
    "notTitle": "Не browser vault",
    "notBody": "Расширение - только browser-side shell для локальной выдачи секретов."
  },
  "cta": {
    "title": "Используйте browser extension вместе с desktop Core.",
    "body": "Landing demo показывает browser shell, popup и localhost boundary вместе."
  },
  "ui": {
    "generic": {
      "audience": "Для кого",
      "useCases": "Сценарии",
      "how": "Как это работает",
      "security": "Безопасность",
      "limitations": "Ограничения",
      "threatModel": "Модель угроз",
      "download": "Скачать",
      "backHome": "На главную",
      "technicalDiagram": "Техническая диаграмма",
      "badges": {
        "inDevelopment": "В разработке",
        "pro": "PRO"
      }
    },
    "browserExtension": {
      "desktop": {
        "runtimeProof": "Контракт среды",
        "runtimeTitle": "Браузер получает UX, но не получает секреты.",
        "runtimeIntro": "Эта страница объясняет, почему расширение выглядит как привычный autofill-инструмент, но не становится вторым хранилищем доверия.",
        "flow": "Поток запроса",
        "flowTitle": "Один маршрут, одна localhost-граница, один источник решений.",
        "flowIntro": "Любой запрос проходит одинаковый путь: страница и popup идут через service worker, Desktop Gateway брокерит обращение, Core решает, можно ли выдать короткоживущий grant.",
        "boundary": "Граница доверия",
        "boundaryTitle": "Что живёт в браузере, а что остаётся вне его.",
        "boundaryIntro": "Разделение ролей важнее маркетингового «secure by default». Здесь у каждого слоя свой узкий контракт, и browser не может его расширить сам.",
        "browserEyebrow": "Browser",
        "gatewayEyebrow": "Desktop Gateway",
        "coreEyebrow": "Core",
        "browserTitle": "UI-граница",
        "gatewayTitle": "Локальный брокер",
        "coreTitle": "Политика и секреты",
        "browserBody": "Расширение живёт в контексте браузера, поэтому его роль предельно узкая: показать интерфейс, отправить запрос, отрисовать ответ.",
        "gatewayBody": "Desktop Gateway остаётся единственной точкой входа на `127.0.0.1`. Он принимает все запросы от service worker и не даёт браузеру открыть обходной путь.",
        "coreBody": "Core остаётся единственным местом, где находятся секреты, политики и решение о grant. Браузер не узнаёт лишнего даже на ошибках.",
        "browserHighlights": [
          "Хранит только метаданные сопряжения и grant с явным TTL.",
          "Показывает popup, autofill и TOTP без локального vault.",
          "Не может обратиться к облаку, WebRTC или телефону напрямую."
        ],
        "gatewayHighlights": [
          "Брокерит весь трафик через localhost.",
          "Отдельно проверяет доступность сессии и соединения.",
          "Теряет доступ сразу после lock, revoke или истечения grant."
        ],
        "coreHighlights": [
          "Проверяет origin, состояние vault и подтверждение пользователя.",
          "Выдаёт scope: session, site или single-action.",
          "Нормализует ошибки, чтобы браузер не доказывал существование секрета."
        ],
        "audienceHighlight": "Для кого это",
        "audienceTitle": "Заполняй пароли, а не облака.",
        "audienceCopy": "Подходит тем, кому нужен browser-native workflow, но не нужен второй vault, скрытый sync cache или облачный аккаунт как источник истины.",
        "metrics": [
          {
            "label": "Transport",
            "value": "127.0.0.1",
            "copy": "Расширение знает только локальный Desktop Gateway."
          },
          {
            "label": "Storage",
            "value": "Zero cache",
            "copy": "Пароли и ключи не оседают в storage расширения."
          }
        ],
        "diagramBadge": "Техническая диаграмма",
        "diagramSupportBadge": "Жизненный цикл grant",
        "browserWindow": {
          "browserWindow": "Browser runtime",
          "popupLabel": "Popup",
          "popupTitle": "ChromVoid Extension",
          "popupTag": "Без browser vault",
          "pageLabel": "Форма сайта",
          "pageTitle": "Форма остаётся на странице. Действие приходит из popup.",
          "pageCopy": "Расширение находит поля логина, пароля и OTP, но команды запускаются из popup ChromVoid. Контролы расширения не внедряются в DOM формы.",
          "username": "Логин",
          "password": "Пароль",
          "otp": "TOTP",
          "pageState": "Действие запускается из popup",
          "pageStateFilled": "Popup уже подставил данные в форму сайта",
          "pageStateReady": "Форма на сайте готова к отправке",
          "pageAction": "Войти",
          "popupState": "OTP готов",
          "fillCredentials": "Заполнить данные входа",
          "fillOtp": "Заполнить поле OTP",
          "copyAction": "Копировать",
          "protocolIntro": "Пользователь работает через popup: расширение показывает запись для текущего сайта и отдельно запускает автозаполнение, OTP или копирование по короткоживущему grant."
        }
      },
      "mobile": {
        "heroLead": "Автозаполнение работает через popup, а секреты остаются в Core на desktop. Расширение не хранит vault и не кэширует пароли.",
        "heroNoteTitle": "Не vault. Не sync cache.",
        "heroNoteBody": "Расширение запрашивает короткоживущий grant у Desktop Gateway на 127.0.0.1. После revoke или lock данные исчезают из браузера.",
        "heroFacts": [
          "Transport · 127.0.0.1",
          "Storage · Zero cache"
        ],
        "summaryTitle": "Что важно понять до установки",
        "summaryAudience": "Для кого",
        "summaryOutcome": "Что получаете",
        "summaryAfterRevoke": "После revoke",
        "diagramSummary": "Показать техническую диаграмму"
      },
      "protocolNodes": [
        {
          "title": "Browser",
          "body": "Заполнить данные входа"
        },
        {
          "title": "Service Worker",
          "body": "Действие запускается из popup"
        },
        {
          "title": "127.0.0.1",
          "body": "Без browser vault"
        },
        {
          "title": "Core",
          "body": "Заполнить поле OTP"
        }
      ],
      "stage": {
        "demo": {
          "username": "alex@chromvoid.dev",
          "password": "Tr0ub4dor&3",
          "passwordMask": "••••••••••••",
          "otp": "431 982",
          "otpOptionLabel": "Authenticator"
        }
      }
    }
  }
}
