Files
wiki/memory/2026-05-05.md
2026-05-05 23:40:01 +03:00

82 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-05-05 — Дневник
## Enduro Trails — работа над прототипом
### Кнопка «Поделиться» → «Скачать GPX»
- Слава попросил убрать кастомный диалог «Поделиться» (Telegram/WhatsApp)
- Оставить только скачивание GPX через `downloadGPX()`
- Иконка заменена на download-стрелку (стрелка вниз + линия) в том же стиле что и другие кнопки header
- HTML уже обновлён: `onclick="downloadGPX()"`, иконка download
- Из app.js удалены функции: `shareRoute`, `closeShareDialog`, `shareTelegram`, `shareWhatsApp`, `shareNative`
- Из app.css удалены стили: `.share-dialog`, `.sd-*`, `#share-dialog`
### Drag-and-drop для точек маршрута
- Слава попросил добавить иконку «перетаскивания» (grip) в каждый wl-item
- Дев-агент добавил grip SVG (6 кружков) и touch-drag логику
- Логика вынесена в `_initWaypointDragHandles(list)` с общими функциями `startDrag/moveDrag/endDrag`
- **Проблема:** на десктопе не работало — дев сделал только touch-события
- **Фикс:** добавлены mouse-события (mousedown/mousemove/mouseup) с `document`-level listeners для корректного завершения drag за пределами списка
### Баг: «Добавить точку» не работала в баре маршрутов
- Причина: `addWaypointMode()` не устанавливала `routeMode = true`
- При закрытом/свайпнутом sheet `routeMode` мог быть `false`
- Клик на карте проверяет `if (!routeMode) return` — и игнорировал добавление
- Фикс: в `addWaypointMode()` добавить `routeMode = true` перед установкой `addingWaypoint = true`
## Технические заметки
- Web Share API требует HTTPS — на HTTP молча падает, даже на Android Chrome
- Кастомные диалоги через DOM работают всегда, но Слава предпочёл простоту (только скачать)
- Mouse drag: важно вешать mousemove/mouseup на `document`, а не на `list` — иначе drag ломается при выходе курсора за пределы элемента
# 2026-05-05 — Дневник
## Enduro Trails — работа над прототипом
### Кнопка «Поделиться» → «Скачать GPX»
- Слава попросил убрать кастомный диалог «Поделиться» (Telegram/WhatsApp)
- Оставить только скачивание GPX через `downloadGPX()`
- Иконка заменена на download-стрелку (стрелка вниз + линия) в том же стиле что и другие кнопки header
- HTML уже обновлён: `onclick="downloadGPX()"`, иконка download
- Из app.js удалены функции: `shareRoute`, `closeShareDialog`, `shareTelegram`, `shareWhatsApp`, `shareNative`
- Из app.css удалены стили: `.share-dialog`, `.sd-*`, `#share-dialog`
### Drag-and-drop для точек маршрута
- Слава попросил добавить иконку «перетаскивания» (grip) в каждый wl-item
- Дев-агент добавил grip SVG (6 кружков) и touch-drag логику
- Логика вынесена в `_initWaypointDragHandles(list)` с общими функциями `startDrag/moveDrag/endDrag`
- **Проблема:** на десктопе не работало — дев сделал только touch-события
- **Фикс:** добавлены mouse-события (mousedown/mousemove/mouseup) с `document`-level listeners для корректного завершения drag за пределами списка
### Баг: «Добавить точку» не работала в баре маршрутов
- Причина: `addWaypointMode()` не устанавливала `routeMode = true`
- При закрытом/свайпнутом sheet `routeMode` мог быть `false`
- Клик на карте проверяет `if (!routeMode) return` — и игнорировал добавление
- Фикс: в `addWaypointMode()` добавить `routeMode = true` перед установкой `addingWaypoint = true`
### Расстояние по маршруту между точками
- Слава попросил показывать расстояние по маршруту (не по прямой) для каждого сегмента
- Бэкенд не возвращает `legs` — только общий `distance_m`
- Решение: функция `getRouteSegmentDistances()` — snap waypoints к геометрии маршрута, суммировать haversine по точкам геометрии
- Проблема 1: сумма сегментов не совпадала с `route.distance_m` из-за неточного snap
- Решение: масштабировать сегменты пропорционально чтобы сумма = `route.distance_m`
- Проблема 2: при смене варианта маршрута расстояния не обновлялись
- Фикс: добавить `renderWaypointsList()` в `selectRoute()` и `selectMiniRoute()`
### Дублированные сообщения в Telegram
- Слава заметил что от меня приходят дублированные сообщения
- Анализ: `streaming.mode: "partial"` + возможный конфликт с block streaming
- Решение: переключить на `streaming.mode: "progress"` — статус во время генерации, финальный ответ одним сообщением
- Конфиг обновлён, hot-reload должен применить автоматически
### voice-tts скилл — дублированные сообщения
- `send_voice.sh` пытался отправить через `openclaw message send` И через `MEDIA:` директиву одновременно
- Результат: в Telegram приходило сообщение с путём к файлу + голосовое
- Фикс: убрать блок `openclaw message send` из скрипта, оставить только генерацию OGG
- Доставка только через `MEDIA:` директиву в ответе ассистента
## Технические заметки
- Web Share API требует HTTPS — на HTTP молча падает, даже на Android Chrome
- Кастомные диалоги через DOM работают всегда, но Слава предпочёл простоту (только скачать)
- Mouse drag: важно вешать mousemove/mouseup на `document`, а не на `list` — иначе drag ломается при выходе курсора за пределы элемента
- OSRM бэкенд не возвращает `legs` — только общий `distance_m`. Сегменты считаем на фронте через snap к геометрии
- `streaming.mode: "progress"` — лучший режим для Telegram: нет промежуточных сообщений, только финальный ответ