Commit Graph

  • b3f4529376 fix(offline): presence-вызовы не попадают в офлайн-очередь и молча дропаются из конфликтов main origin/main origin/HEAD Ильяс Султанов 2026-10-01 11:50:57 +03:00
  • 8eff527259 MCP: api_get — read-only GET к API CRM для проверки эндпоинтов и структур ответов Ильяс Султанов 2026-09-30 17:51:22 +03:00
  • 49b7732a24 Custom pages: флажок «скрыть шапку страницы» (миграция 0089) Ильяс Султанов 2026-09-30 15:42:52 +03:00
  • 06a2794090 refactor(chat): общие ChatComposer и useChatScroll для чата задачи и мессенджера Ильяс Султанов 2026-09-30 14:37:31 +03:00
  • d5d95e2f53 feat(chat): меню трёх точек в композере обычного чата — как в чате задачи Ильяс Султанов 2026-09-30 14:10:40 +03:00
  • 5aebcd1308 MCP: validate_custom_page_code — статическая проверка кода страницы до сохранения Ильяс Султанов 2026-09-30 00:35:12 +03:00
  • 67b71ffd0e Внешние БД: пустой список таблиц = доступ ко всем (allowlist опционален) Ильяс Султанов 2026-09-30 00:16:36 +03:00
  • 98499ca9d4 MCP custom pages: show_in_sidebar + постоянная ссылка для закладок Ильяс Султанов 2026-09-30 00:04:10 +03:00
  • 59bd802bf7 Песочница отчётов для ИИ: recharts в custom pages + внешние БД с read-only шлюзом Ильяс Султанов 2026-09-29 22:50:40 +03:00
  • 9827b5df33 fix(chat): cross-tab lock реплея офлайн-очереди + идемпотентность мессенджера (conv_messages) Ильяс Султанов 2026-09-29 20:31:59 +03:00
  • af4850bd6d fix(chat): идемпотентность сообщений по clientMessageId — защита от дублей при повторной отправке Ильяс Султанов 2026-09-29 17:40:47 +03:00
  • f6e391d588 НДС в DI2: порядок тултипа графика, компактный виджет контроля квартала Ильяс Султанов 2026-09-29 16:11:40 +03:00
  • 4d1dc2b6f9 fix(users): fieldValues в реальном обработчике /api/users/list + горизонтальный скролл таблицы Ильяс Султанов 2026-09-29 15:32:47 +03:00
  • c0011b49a3 feat(users): выбор колонок в реестре пользователей + кликабельная Оценка и доработанный график истории Ильяс Султанов 2026-09-29 15:09:22 +03:00
  • c56ec26b49 НДС в DI2: линии начислено/вычет на графике, таблицы с прокруткой Ильяс Султанов 2026-09-29 12:02:58 +03:00
  • 6ef0621d63 НДС в DI2: трекер авансовых УПД, доработка графика и виджета «Контроль квартала» Ильяс Султанов 2026-09-29 11:35:30 +03:00
  • 5fe0e30ea0 fix(files): get_task_file отдаёт внешний presigned-URL через прокси приложения вместо внутреннего minio:9000 Ильяс Султанов 2026-09-29 11:04:02 +03:00
  • 0b4324c23d fix(files): принадлежность файла задаче — дозаполнение task_id/field_id + MCP-проверка с сериализацией значений Ильяс Султанов 2026-09-29 10:50:34 +03:00
  • 102f5410b1 fix(files): backfill — regexp_replace вместо substring FROM (возвращал префикс, а не ключ) + удаление мусорных ключей со слэшами Ильяс Султанов 2026-09-29 10:41:53 +03:00
  • 4bac21ff71 fix(files): бот может скачивать файлы — API-ключ на /api/files и /uploads + трекинг абсолютных URL Ильяс Султанов 2026-09-29 10:36:41 +03:00
  • 2ac9da7220 НДС в DI2: KPI-карточки показывают текущий квартал (начислено/вычет/к уплате) Ильяс Султанов 2026-09-29 09:39:17 +03:00
  • b9ef0b2152 НДС в DI2: дефолтный период — вся история витрины, KPI «К уплате» — за квартал Ильяс Султанов 2026-09-29 09:15:43 +03:00
  • de9bbfe17a НДС в DI2: вкладка «Расчёты → НДС» переведена на декларационную витрину 1С Ильяс Султанов 2026-09-29 07:49:23 +03:00
  • c0b8910094 fix(gps): плавное движение маркеров при зуме — позиции обновляются напрямую в DOM на actiontick (без React-рендера), кластеры перестраиваются на actionend/zoomchange Ильяс Султанов 2026-09-24 21:36:48 +03:00
  • 69039e14a1 fix(gps): маркеры Яндекса — собственный DOM-слой поверх карты (клики React, пиксельная кластеризация); отказ от Clusterer/ObjectManager с их багами кастомных макетов Ильяс Султанов 2026-09-24 16:36:34 +03:00
  • 0409a547fc diag(gps): тестовый объект со стандартной иконкой в ObjectManager — разделение рендер vs layout Ильяс Султанов 2026-09-24 08:37:12 +03:00
  • d54d2db351 diag(gps): перехват ошибки загрузки маркеров в ObjectManager Ильяс Султанов 2026-09-23 15:09:39 +03:00
  • 4b532540be fix(gps): формат объектов ObjectManager — GeoJSON Feature с coordinates [lng,lat] Ильяс Султанов 2026-09-23 14:49:27 +03:00
  • 39c8d61a04 fix(gps): типизация geoObjects кластера ObjectManager Ильяс Султанов 2026-09-23 14:34:44 +03:00
  • e9f072c0c3 fix(gps): слой маркеров Яндекса переведён с Clusterer на ObjectManager — кастомные макеты в Clusterer теряли кликабельность (известный баг), ObjectManager лишён этой болезни Ильяс Султанов 2026-09-23 14:33:49 +03:00
  • a231f64837 fix(gps): iconShape задан от точки привязки маркера (anchor), а не от угла — активная область перекрывает маркер Ильяс Султанов 2026-09-23 13:41:07 +03:00
  • 345c34730f fix(gps): iconShape у кастомных маркеров Яндекса — без него hit-test не находил метку, клики уходили в events-pane Ильяс Султанов 2026-09-23 13:07:13 +03:00
  • 1353b23c7d feat(gps): совпадающие точки задач раскидываются веером (~30 м) — кластер из одной координаты раскрывается зумом Ильяс Султанов 2026-09-23 12:52:18 +03:00
  • a1e05c4cdb diag(gps): временные логи доставки клика на Яндексе (container/placemark) для точной диагностики Ильяс Султанов 2026-09-23 12:48:34 +03:00
  • 3964d861ae fix(gps): yandexMapDisablePoiInteractivity — отключены POI-хотспоты Яндекса (403 search/v2, вмешательство в клики по маркерам) Ильяс Султанов 2026-09-23 10:58:19 +03:00
  • 5c68d84cff fix(csp): разрешён core-renderer-tiles.maps.yandex.net (script-src) — Яндекс.Карты 2.1 грузит JSONP hit-test объектов с него, блокировка CSP ломала клики по маркерам Ильяс Султанов 2026-09-23 10:25:27 +03:00
  • d238b005f4 fix(gps): двойной путь доставки клика по маркеру — data-gps-action на корне (capture-делегирование) + placemark.events Ильяс Султанов 2026-09-23 10:04:06 +03:00
  • dadd49c15f fix(gps): свои панели вместо попапов карт — клик по точке показывает карточку задачи, клик по кластеру — вертикальный список (устранена ненадёжность balloon/popup) Ильяс Султанов 2026-09-23 09:16:55 +03:00
  • 6c1cea39b4 fix(gps): клик по точке открывает попап с названием (делегирование только по data-gps-action); спайдерфай кластеров в одной координате на max zoom Ильяс Султанов 2026-09-23 08:49:15 +03:00
  • 27a14ec513 feat(gps): клик по точке объекта показывает название (попап + «Открыть задачу»); точки объектов кластеризуются, список кластера вертикальный Ильяс Султанов 2026-09-22 22:11:38 +03:00
  • dfedb3ebfa feat(gps): настройки слоя «Объекты» сохраняются (форма/поле/названия), подписи в две строки: объект / заказчик Ильяс Султанов 2026-09-22 21:39:27 +03:00
  • fe174535b7 feat(gps): кнопка «Названия» для слоя объектов (по умолчанию скрыты); подписи сокращены до «объект · заказчик» (≤40 символов) Ильяс Султанов 2026-09-22 21:15:31 +03:00
  • 42894aaf8f feat(gps): на вкладке «Карта» слой задач формы (селектор формы+geo-поля) + создание объекта правым кликом с координатами Ильяс Султанов 2026-09-22 20:59:54 +03:00
  • fe57e368da fix(gps): подложка OSM-режима на Esri World Street Map (CARTO теперь требует API-ключ — водяные знаки) Ильяс Султанов 2026-09-22 20:08:19 +03:00
  • db6b18f679 fix(gps): OSM-подложка переведена с tile.openstreetmap.org (403 Access blocked в проде) на CARTO Basemaps Ильяс Султанов 2026-09-22 19:54:13 +03:00
  • 8d11ad3b33 fix(auth): список сессий без мусора ротаций — фильтр isReplaced, перенос UA/IP, чистка старых Ильяс Султанов 2026-09-22 09:01:59 +03:00
  • 13db5be030 fix(chat): React #310 — ChatSection вынесен на module level вместо useCallback Ильяс Султанов 2026-09-21 22:10:57 +03:00
  • 693834ac27 fix(chat): настоящая первопричина дёрганья — remount чата из-за inline-компонента ChatSection + первый кадр не у низа Ильяс Султанов 2026-09-21 21:33:26 +03:00
  • d0d73a59f2 ci(deploy): app-образ собирается в GitHub Actions и пушится в GHCR — сервер только скачивает Ильяс Султанов 2026-09-21 20:59:31 +03:00
  • 34838a302d feat(chat): онлайн-доставка как в Telegram — watchdog SSE, тихий скролл, персистентный кэш сообщений, невидимое обновление SW Ильяс Султанов 2026-09-21 20:29:13 +03:00
  • f8d78afd2e feat(auth): retry рефреша при 401 + вкладка «Сессии» в профиле с отзывом устройств Ильяс Султанов 2026-09-21 18:13:47 +03:00
  • c957a70260 feat(auth): access 24ч, jti против гонок ротации, транзакционная ротация, отзыв сессий по sid Ильяс Султанов 2026-09-21 18:13:46 +03:00
  • 2f9d049718 fix(chat): catch-up сообщений при возврате на вкладку; fix(sw): фокус на открытой вкладке вместо навигации всех; fix(history): числа не резолвятся в имена пользователей Ильяс Султанов 2026-09-21 17:03:01 +03:00
  • 1f878b61a1 feat(chat): персистентные черновики сообщений — текст переживает перезагрузку страницы Ильяс Султанов 2026-09-21 15:14:30 +03:00
  • 006d020d15 fix(fields): миграция 0085 — верное имя unique-констрейнта form_fields_form_id_code_unique Ильяс Султанов 2026-09-21 14:46:57 +03:00
  • e3f0ebfb89 feat(fields): мягкое удаление полей формы — архив удалённых с восстановлением и блок «Удалённые поля» в задаче Ильяс Султанов 2026-09-21 14:35:45 +03:00
  • d5f2925886 feat(tags): полный тинт строк/карточек, цветное значение поля вместо чипа в шапке; защита от дубль-клика при открытии задач Ильяс Султанов 2026-09-21 14:35:45 +03:00
  • c1463c71a1 feat(fields): цветные опции select — глобальная подсветка задач (главная, реестр, канбан, шапка) Ильяс Султанов 2026-09-21 11:13:44 +03:00
  • aa316141be feat(reminders): получатели в отложенных/входящих, приватные сообщения чата, календарь, бейдж уведомлений Ильяс Султанов 2026-09-21 10:26:53 +03:00
  • 17e6ebf412 fix(ui): удалён FAB закладок — перекрывал поле ввода чата в PWA Ильяс Султанов 2026-09-21 08:24:08 +03:00
  • 5c308274f2 docs(log): auth/gps/chat фиксы — логины, 429-шторм, скачущий чат, упоминания Ильяс Султанов 2026-09-17 22:02:10 +03:00
  • 267af046a3 fix(chat): автоскролл задач только у низа, картинки с фикс. размером, упоминания по @ и 3+ буквам имени/фамилии Ильяс Султанов 2026-09-17 22:00:10 +03:00
  • d0112657b8 fix(auth): живая сессия на устройстве — рефреш на холодном старте, grace-окно ротации, без логаута при временных ошибках Ильяс Султанов 2026-09-17 21:59:51 +03:00
  • c1d5b1cbee fix(gps): остановлен 429-шторм — throttle SSE gps_asset_moved (3 сек/asset) и клиентских инвалидаций (60 сек), polling позиций 60 сек, статусов 5 мин Ильяс Султанов 2026-09-17 21:59:34 +03:00
  • e4f9a1992a feat(automations): ctx.tasks.scheduleStatusChange — отложенная смена статуса (воркер 5с, отмена при ручном переходе) Ильяс Султанов 2026-09-17 16:38:56 +03:00
  • c1fe1c4e02 fix(registry): непрозрачный фон sticky-шапки, отказ от table-fixed Ильяс Султанов 2026-09-14 23:54:10 +03:00
  • 9c1cd347bc docs(log): реестр — горизонтальная прокрутка, sticky-шапка, ресайз колонок, лимит строк Ильяс Султанов 2026-09-14 23:31:10 +03:00
  • e32def495d feat(registry): горизонтальная прокрутка внизу области, sticky-шапка, ресайз колонок, лимит строк в ячейке Ильяс Султанов 2026-09-14 23:21:02 +03:00
  • c8b7741b11 fix(ui): мобильный main стал flex-колонкой — flex-1 PageTransition больше не игнорируется, h-full-цепочки страниц восстановлены Ильяс Султанов 2026-09-14 23:08:30 +03:00
  • 981ee050ca docs(log): фикс двойного Sidebar Ильяс Султанов 2026-09-09 08:24:03 +03:00
  • 5af274cd0f fix(ui): двойной Sidebar на реестре задач и карточке задачи — TaskView/TaskDetail рендерили свой Sidebar поверх AppShell Ильяс Султанов 2026-09-09 08:22:41 +03:00
  • e5d8d4ed37 docs(log): UI-эпопея — 7 фаз стабилизации и выравнивания UI Ильяс Султанов 2026-09-08 22:12:49 +03:00
  • b94406e057 feat(ui): фаза 7 — self-host шрифты Inter/DM Mono (woff2, precache в SW v13), возвращён focus-visible (кольцо --ring), active:scale для кнопок (фикс мёртвого not-disabled), плавные появление/исчезновение биллинг-оверлея, длительности тостов по шкале токенов Ильяс Султанов 2026-09-08 22:11:32 +03:00
  • 820e8865a5 refactor(chat): фаза 6 — общий useMessagePolling, TaskChat на общий MessageBubble (слоты под task-специфику) и groupByDate, виртуализация мессенджера + автоскролл только у низа, TaskChat без RHF/zod (локальный стейт), анимация появления последнего сообщения; TaskChat 2023→1754 строк Ильяс Султанов 2026-09-08 21:58:03 +03:00
  • aa8bf6ac33 feat(ui): фаза 5 — Тема 2.0 во всех базовых ui/* (select/textarea/tabs/popover/tooltip/dropdown-menu/checkbox/dialog на рецептах и токенах), data-density/control-variant/button-radius на html, консолидация размеров кнопок (44 места → size=sm), max-h+скролл диалогов Ильяс Султанов 2026-09-08 21:23:25 +03:00
  • 113ed458b6 feat(ui): фаза 4 — скелетоны PageSkeleton/ListSkeleton/CardSkeleton/FormSkeleton (мигрированы ~19 страниц вместо спиннеров), PageTransition на framer-motion (fade 150ms, MotionConfig reducedMotion=user, гейт skinComponents.motion.enabled), StaggerList для списков задач/диалогов/справочников Ильяс Султанов 2026-09-08 21:10:08 +03:00
  • c4fdfe4eab refactor(ui): фаза 3 — единый AppShell (Sidebar не размонтируется при навигации), Layout стал тонким контейнером, SPA-навигация вместо location.href (уведомления, тосты, TableEditor), scroll restoration, плавное появление биллинг-оверлея Ильяс Султанов 2026-09-08 20:48:28 +03:00
  • 5d219ac794 fix(ui): фаза 2 — стабилизация данных: throttle+invalidate вместо refetch-пачек на SSE, единый useUnreadBadges (polling только при обрыве SSE), TaskChat polling только при потере SSE, one-shot guard в safeLazy, плавная смена скина (transition цветов) Ильяс Султанов 2026-09-08 20:38:01 +03:00
  • 7a98bf7bf3 feat(ui): фаза 1 — шкалы motion/z-index в токенах, boot-скрипт темы в index.html, рецепты компонентов (design-system/recipes.ts) для button/input/badge/card/table, layout.taskDetail в скине, удалён мёртвый CSS (.btn-compact и др.) и зависимость tw-animate-css Ильяс Султанов 2026-09-08 20:26:14 +03:00
  • c8d7f9b336 fix(auth-ui): тихий фейл 400 при смене пароля, валидация, пароль при создании Ильяс Султанов 2026-09-08 16:42:59 +03:00
  • 0b2319b11d feat(automations): ctx.tasks.sendMessage — сообщение в чат задачи от Системы; userId в triggerData status_changed Ильяс Султанов 2026-09-08 16:31:59 +03:00
  • 163351b345 docs(log): шаги 0.3, 0.6, 0.14 — подтверждены на проде, этап E закрыт Ильяс Султанов 2026-09-08 15:15:17 +03:00
  • a5ab294608 ci(deploy): compose из инфра-репо напрямую через -f (чистый git status на сервере) Ильяс Султанов 2026-09-08 15:02:33 +03:00
  • 0fb3b54b66 ci(deploy): прод-compose из приватного инфра-репо iistwin-infra (шаг 0.14) Ильяс Султанов 2026-09-08 14:27:29 +03:00
  • 03871b76a2 ci(deploy): deploy-пользователь вместо root, DEPLOY_HOST в секретах; fix jsdom для Node 20 Ильяс Султанов 2026-09-08 14:05:07 +03:00
  • 06bfd2aa75 feat(auth): шаг 0.6 — TTL access 15 минут + хэширование refresh/reset-токенов в БД feat/token-security Ильяс Султанов 2026-09-08 11:35:32 +03:00
  • 639036c87e security(rls): ENABLE_RLS обязателен в production (fatal без флага) Ильяс Султанов 2026-09-08 10:55:58 +03:00
  • 12e797eb1a fix(rls): startup-проверка schema drift — array_agg name[] приходит строкой Ильяс Султанов 2026-09-08 10:28:44 +03:00
  • b3da3e334f docs(log): шаг 0.4 подтверждён на проде (docker inspect) Ильяс Султанов 2026-09-08 10:16:05 +03:00
  • 87fe0f03f5 chore(compose): ресурсные лимиты для всех сервисов Ильяс Султанов 2026-09-08 10:01:23 +03:00
  • 42e5ace655 feat(notifications+a11y): центр уведомлений /notifications, skip-link, axe smoke Ильяс Султанов 2026-09-08 09:32:36 +03:00
  • 6e7270d2ee refactor(form-editor): разбиение FormEditor.tsx (4975→337) — шаг 2.2 завершён Ильяс Султанов 2026-09-08 08:57:55 +03:00
  • 95d03aeeff refactor(bots): разбиение Bots.tsx (3928→163) — механическая экстракция Ильяс Султанов 2026-09-08 08:12:35 +03:00
  • 52b583c671 refactor(task-detail): разбиение TaskDetail.tsx (3278→804) — механическая экстракция Ильяс Султанов 2026-09-08 06:53:25 +03:00
  • 6bbedad291 refactor(chat): разбиение Chat.tsx (2696→639) — механическая экстракция без смены поведения Ильяс Султанов 2026-09-08 01:29:37 +03:00
  • 75ec0f25bb chore(repo): дедуп formatAmount, пины образов, дефолты MinIO, доля any Ильяс Султанов 2026-09-08 01:07:55 +03:00
  • 5750a3106f security(auth): anti-enumeration, returnTo-валидация, лимит попыток логина Ильяс Султанов 2026-09-08 00:46:57 +03:00
  • 0828003141 security(deps): npm audit fix — dompurify 3.4.15, tar, tiptap (60→46, 0 critical) Ильяс Султанов 2026-09-08 00:31:47 +03:00
  • b1a3461c33 feat(onboarding+modules): чеклист новой org, MedSchedule за флагом, удаление Capacitor Ильяс Султанов 2026-09-08 00:27:17 +03:00
  • 960f28d3de docs(backups): стратегия бэкапов PostgreSQL (RPO/RTO), проверка восстановления Ильяс Султанов 2026-09-08 00:15:27 +03:00