Files
Claude 857369b18b fix(plans): загрузка плана по HTTP, предел 8 МБ проверяется до отправки (#617)
План уходил base64 в WebSocket-кадре: файл больше ~3 МиБ давал кадр больше
4 МиБ, HA закрывал сокет до обработчика, и обещанные 8 МБ были недостижимы.

- бэкенд: HouseplanPlanUploadView (POST /api/houseplan/plans/upload), потоковый
  предел MAX_PLAN_BYTES (read_bounded), общий writer store_plan_upload для view
  и ws_plan_set (контракт WS без изменений);
- карточка: stagePlanFile/uploadPlanFile/renderPlanBackdropGuard в
  backdrop-pick.ts для обоих рантаймов; PlanFilePayload хранит Blob вместо b64;
  SVG больше предела — тост при выборе, растр — диалог #39 только с уменьшенной
  копией, копия больше предела не попадает в staging, 413 называет предел;
- i18n toast.plan_too_large, backdrop.over_limit_body (en/ru/de/fr);
  USER-GUIDE ru/en, CHANGELOG ru/en, docs/testing-notes (#617);
- тесты: test/plan-upload-limit.test.mjs, tests_backend/test_plan_upload.py,
  test_ha_upload.py (#617), smoke_plan_upload_limit.mjs; три смока переведены
  с b64/plan/set на blob/fetchWithAuth; мутанты plan-upload-*;
- база монолита: hostRefs +3 (общий хелпер плана вместо двух копий в рантаймах,
  новый тост уменьшенной копии).

Issue: #617
User-Visible: yes
2026-09-24 19:57:41 +03:00
..

Приложения к TESTING.md — индекс

Ручные чек-листы по поверхностям и приложения по отдельным issue, перенесённые из docs/TESTING.md дословно (#634). Действующие правила и гейты — в самом TESTING.md. Искать по номеру issue или теме: grep -n "#293" docs/testing-notes/README.md. Полноту индекса и каждую ссылку сверяет test/testing-notes-index.test.mjs: раздел без строки здесь — красный тест.

Ручной чек-лист по поверхностям

Диалоги, формы и сводная панель

Устройства и маркеры

Геометрия: стены, проёмы, комнаты, холст

Декор, подложка, мебель, слои

Живые слои и интеграции

Инфраструктура тестов и съёмки

История прогонов и партий