- Enhanced tests to ensure consistent messageId generation for legacy inbox rows lacking a messageId. - Updated test descriptions for better clarity regarding the new messageId handling. - Adjusted test expectations to align with the updated behavior of relaying legacy inbox rows with generated messageIds.
4.7 KiB
4.7 KiB
Итерация 00 — фиксация требований и источников данных
Цель
Согласовать “что именно делаем”, чтобы не переписывать UX/архитектуру на ходу.
Входные решения (обязательные)
- Карусель скриншотов: Swiper Vue (
https://swiperjs.com/vue), на десктопе видно несколько скринов одновременно. - Download Section:
- Автоопределение ОС.
- Если не определили — показываем все ОС.
- Для macOS — учёт Apple Silicon vs Intel (если детект не точный — дать выбор пользователю).
- Privacy:
- Локальное хранение API ключей.
- Опциональное использование собственных API ключей.
- Нет облачного хранилища транскрипций.
- Open Source: да, часть компонентов/модулей будет open-source (маркетинг/доверие).
- Статистика загрузок: не делаем.
- Аналитика: GA4 + события скачивания и ключевых действий.
- Деплой: Render, SSG.
- State management: Pinia (общее состояние не размазываем по компонентам).
- Code quality: ESLint (
@nuxt/eslint) + Prettier. - Структура: добавляем
landing/data,landing/types,landing/utils+ правилоcomposables/vsutils/.
Важно про SSG (чтобы не было сюрпризов в конце)
- Лендинг остаётся статическим: без собственного backend на каждый запрос.
- Поэтому IP-геолокацию на сервере не делаем (в чистом SSG её просто негде исполнять).
- Автовыбор языка: cookie/localStorage (если пользователь выбирал) → настройки браузера → fallback на
en. Всё остальное (гео, Accept-Language на сервере) — только если появится отдельный runtime/edge, но это уже другая задача.
Решения/данные, которые нужно получить от владельца проекта
- Релизы/артефакты: где лежат ссылки на
.dmg/.exe/.msi/.deb/.AppImage, как формируется URL (GitHub Releases / отдельный CDN). - macOS артефакты: есть ли separate сборки
arm64иx64или один universal. - GA4:
- Measurement ID вида
G-XXXXXXXXXX(и подтверждение, что GA4 property уже создан). - Список обязательных событий/параметров (если есть требования маркетинга).
- Measurement ID вида
Контракт по загрузкам (нужно согласовать один раз)
- Источник правды: GitHub Releases (рекомендуется) или статичный список в
landing/data/downloads.ts(если релизы ведутся вручную). - Нейминг ассетов: как минимум, чтобы можно было однозначно сопоставить
os + arch + extension(напримерVoiceToText-1.2.3-mac-arm64.dmg). - Страница /download: откуда берём “версия/размер/дата” (из релиза или руками в data).
- Проверки: если есть sha256/подпись — решаем, показываем ли это пользователю (желательно да).
Критерии готовности
- Все пункты выше подтверждены.
- Есть источник правды по ссылкам загрузок и форматам релизов.
- Определены обязательные GA4 события и параметры.
- Подтверждено, что лендинг действительно деплоится как статик (SSG), без server runtime.
Чеклист перепроверки (прогнать 2–3 раза)
- Нет “опциональных” фич, которые фактически обязательны.
- Нет скрытых зависимостей (например, server API для статистики).
- SSG и Render не конфликтуют с выбранными модулями.