textmachine/frontend
2026-09-10 19:03:12 +03:00
..
docs Refresh the frontend zone's note on its stale anchors with the addresses they carry today. 2026-09-10 19:03:12 +03:00
public Accept and land the S3 data layer: contract 0.2.0 in the zone copy, revision gate composed with structural sharing, per-chapter notes, and a seventh partial-failure route 2026-08-08 02:24:06 +03:00
scripts Land the accepted frontend S4 pack: book upload and run start on contract 0.2.3, library at scale, the nine S3.7 findings closed 2026-08-15 19:25:25 +03:00
src Land the accepted frontend S4 pack: book upload and run start on contract 0.2.3, library at scale, the nine S3.7 findings closed 2026-08-15 19:25:25 +03:00
.gitignore Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
.npmrc Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
.prettierignore Accept and land the S3 data layer: contract 0.2.0 in the zone copy, revision gate composed with structural sharing, per-chapter notes, and a seventh partial-failure route 2026-08-08 02:24:06 +03:00
.prettierrc.json Land frontend S1: pinned Vite/React/TS scaffold, five-step check with verified colour gate, no-sudo Playwright shot loop, measured tokens.css, showcase converged with Fleet reference 2026-08-02 15:07:34 +03:00
.spectral.yaml Land S3 contract work: OpenAPI 3.1 spec with generated types and drift test, provenance companion, zone journal rename, contract gate in check battery 2026-08-04 13:03:10 +03:00
eslint.config.js Land the accepted frontend S4 pack: book upload and run start on contract 0.2.3, library at scale, the nine S3.7 findings closed 2026-08-15 19:25:25 +03:00
index.html Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
package-lock.json Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
package.json Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
README.md Second cut pass in the frontend zone: restore what the review found lost, and take the sediment the first pass left behind 2026-09-02 11:49:09 +03:00
stylelint.config.js Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
tsconfig.json Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00
vite.config.ts Land frontend S3.7 debt pack: data-layer fixes with failing-first tests, contract 0.2.2 sense required, i18n catalogue with place-based lint gate, full English code sweep; acceptance record included 2026-08-13 21:48:22 +03:00

frontend — веб-интерфейс

Зона записи сессий «Фронт». Статус этапов, что построено и решения владельца по продукту — docs/frontend-PROGRESS.md (единственный носитель; здесь его копии намеренно нет, она отставала). Что впереди — docs/BACKLOG.md, Ф-1.

Как запустить

npm install
npm run dev          # http://localhost:5173/showcase
npm run check        # prettier → eslint → stylelint → contract → tsc → vitest
npm run check:full   # + сборка + скриншоты
npm run shot         # снимки в .shots/ — открыть и посмотреть глазами
npm run scenes       # сценарии интеракций: клик → кадр → проверка состояния

Маршрут выбирает мир фикстур, и снимаются все. Список маршрутов выводится из src/api/scenarios.ts (src/routes.tsx), второй его экземпляр держит scripts/shot.mjs, и расхождение двух списков падает тестом src/routes.test.ts. Прозаической копии списка здесь нет намеренно: она отставала на этап, а два списка кода замкнуты друг на друга.

Два ключа снимка стоит знать: --size 1280x764 даёт вьюпорт референса для прямого наложения, --dpr 1 снимает то, что видит владелец на своём мониторе (при дефолтных 2x полупиксель CSS ложится в целый пиксель устройства, и мыло на штрихах иконок в кадр не попадает вовсе). Замер кадра — .tooling/py/bin/python scripts/measure.py references/fleet.png .shots/showcase.png (окружение запинено в scripts/requirements.txt, ставится одной строкой из его шапки).

Для скриншот-цикла нужен Chromium Playwright и локальные библиотеки в .tooling/ (ставятся без sudo, процедура — docs/FRONTEND_PLAN.md §4).

npm install заодно ставит pre-commit хук (scripts/githooks/): коммит с frontend-путями не проходит без зелёного npm run check; смесь frontend/ с чужой зоной и файлы «никогда не коммитить» блокируются для всех (D39.88). Обход — git commit --no-verify.

Что здесь будет

Веб-приложение поверх ../platform/. MVP — не IDE, а дашборд + читалка: библиотека книг, наблюдение за прогоном, подпись банка памяти, сравнение оригинала с переводом, добавление главы. Редактирование перевода прямо в интерфейсе — ПОЗЖЕ (тогда появится редактор текста; в MVP не нужен).

Десктоп — то же самое приложение в окне (Tauri), отдельной логики не имеет. В MVP не делается.

Документы

  • docs/FRONTEND_SESSION_PROMPT.md — нормы зоны (не задание): референсы с измеренными значениями, продуктовый сценарий экранов, жёсткие ограничения владельца, порядок работы и критерий сравнения с референсом.
  • docs/STACK_DECISIONS.md — пины версий, ловушки и список того, что достраивается в движке. Источник: многоагентное исследование 02.08.2026.
  • docs/FRONTEND_PLAN.md — как пишется фронт: сверенные пины, карта src/, слои каскада, правила поддерживаемости в проверяемой форме, протокол скриншот-цикла, перепроверенные замеры референса и границы гейтов.
  • docs/frontend-PROGRESS.md — журнал зоны: текущее состояние, решения владельца по продукту, открытые вопросы, хроника сессий. Имя с префиксом frontend- намеренно: журнал оркестратора называется docs/PROGRESS.md, и одноимённые файлы путали ссылки. Прогресс фронта пишут сюда все, включая оркестратора (слово владельца 04.08).
  • docs/BACKLOG.md — зонный бэклог фронта.
  • docs/API_CONTRACT_INPUT.md — ⚠ исполнено, не поддерживается: вход в контракт, написанный до него; остаётся аудиторским следом. Условия переноса в архив — в его собственном баннере.
  • docs/api-contract/openapi.yaml — зонная копия контракта v0 (OpenAPI 3.1), из неё генерится src/api/schema.ts и её линтует spectral шагом npm run check. ⚠ Не черновик и НЕ норматив: контракт ратифицирован (D39.99), нормативен ТОЛЬКО канон docs/architecture/14-api-contract/ (0.9.0), а копия стоит на 0.2.3 — байт-равенства сегодня НЕТ (D39.142 п.5). Синк cmp + перегенерация типов — первое касание зоны при разморозке; правит копию фронт-сессия, переносит в канон диффом оркестратор.
  • docs/API_CONTRACT_DRAFT.md — ⚠ исполнено: зонный указатель на канон спутника docs/architecture/14-api-contract/README.md. Провенанс каждого решения, обоснования, зависимости и К-вопросы живут ТАМ; при расхождении по форме побеждает спека.
  • references/ — скриншоты-референсы (Fleet, Antigravity), в git не едут: кладёт владелец.

Язык кода и язык интерфейса — разные вещи

Исходники зоны английские: комментарии, имена тестов, сообщения ошибок и логи скриптов. Русский в src/ живёт ровно в двух местах, и оба — данные: каталог сообщений src/i18n/ru.ts (слова интерфейса, переводится файлом) и фикстуры src/mock/ (проза книги, которая стоит вместо настоящей). Держат это два гейта с РАЗНЫМИ правилами, и почему именно так — docs/STACK_DECISIONS.md §1.

Источник внешнего вида — один

Замеры референсов, зафиксированные в tokens.css. Промежуточных дизайн-макетов нет: инструменты проектирования макетов не используются (решение владельца 02.08). Палитра и геометрия сняты замером, а не подобраны; действующие числа, способ их повторить и то, что отвергнуто, — docs/FRONTEND_PLAN.md §5.1. Их берут как данность, а не выводят заново.