Spaces:
Running
Running
| # Почему на Hugging Face «умирали» все кнопки (версии с прогресс-баром) | |
| По **фактам из консоли** (не гипотезы): | |
| ## 1. `SES_UNCAUGHT_EXCEPTION: SyntaxError: missing : in conditional expression` | |
| На странице Space подключается **SES lockdown** (`lockdown-install.js`). Его парсер/конвейер для кода страницы **не эквивалентен** последнему движку Firefox/Chrome в части синтаксиса ES2020+. | |
| - Операторы **`??` (nullish coalescing)** и **`?.` (optional chaining)** в **одном исходнике** с большим inline-`<script>` давали ошибку разбора, интерпретируемую как **сломанный тернарный `? … :`** → *missing ':'*. | |
| - После этой ошибки **весь** клиентский скрипт приложения **не выполняется** → не регистрируются **ни** `onclick`, **ни** делегирование `data-app-action` → кажется, что «сломались все кнопки». | |
| **Исправление:** не использовать `??` / `?.` в коде приложения; вместо них — функция `nv(v, d)` и проверки `obj && obj.prop`. | |
| ## 2. Глобальный `#loader` | |
| Если на время оптимизатора включать полноэкранный оверлей и по какой-то причине не снять `display` в `finally`, **все клики** уходят в оверлей. Это уже не SES, а логика UI. | |
| **Исправление:** во время LLM-оптимизации **не** трогать `#loader`; прогресс только в **локальной панели** под кнопками. | |
| ## 3. Строки CSP про `inpage.js`, Stripe, `content.js` | |
| В логе часто идут **расширения браузера** и iframe HF, а не ваш `index.html`. На диагностику кнопок приложения они обычно не влияют. | |
| ## Текущая схема (после правок) | |
| - Логика UI в **`/static/js/app.js`** (отдельный файл, не гигантский inline). | |
| - Прогресс оптимизатора: **панель с `<pre>`-логом** + тонкая полоса; **без** блокировки всего экрана. | |
| - Поток **`/api/v1/optimizer/run-stream`** (SSE) + **`/api/v1/optimizer/cancel`** для остановки с частичным результатом. | |