# Proposal ## Why Пользователь загружает сферические 360-панорамы, но просмотрщик показывает их как обычное плоское фото — искажённую equirect-развёртку. Нужен режим обзора панорамы по тегу `pano360`. ## What Changes - **Детект по тегу.** Фото считается 360-панорамой, если среди его тегов есть `pano360` (без учёта регистра и пробелов по краям). Теги персональные, поэтому на публичных share-страницах и у других участников 360 не включается — фолбэк на плоский просмотр. - **Мини-WebGL вьюер.** В просмотре появляется equirect-обзор на ``: перетаскивание — осмотр, колесо — угол обзора (FOV), `Space` — сброс вида. Стрелки и лента по-прежнему переключают фото, `f` — полный экран. Без сторонних библиотек. - **Источник изображения.** Грузится оригинал с даунскейлом до `min(4096, MAX_TEXTURE_SIZE)`; при неудаче — `preview`. Новый вариант на бэкенде не заводится. - **Фолбэк.** Нет WebGL или сбой загрузки/декодирования — показывается обычное плоское фото. - **Индикация.** В топбаре просмотра виден признак «360»; на плитке сетки — бейдж «360». ## Capabilities ### New Capabilities Нет. ### Modified Capabilities - `ui-workspace`: добавляется требование «Просмотр 360-панорамы» (детект по тегу, сферический обзор, управление, фолбэк, ограничение на share-страницах). ## Impact - **Frontend:** новый `lib/pano.ts` (детект тега) и `lib/components/PanoViewer.svelte` (WebGL equirect); правки `lib/components/Viewer.svelte` (переключение режима, клавиши, фолбэк, индикатор) и `lib/components/PhotoGrid.svelte` (бейдж). Возможна новая иконка в `lib/icons/registry.ts`. - **Backend:** не затрагивается. - **Совместимость:** поведение плоского просмотра сохраняется; 360 — дополнительный режим.