гора.
i. хроника · обновляется по понедельникам

Что делаю сейчас.

Лог разработки моих проектов. Что переписал, что починил, что вынес наружу. Кодовые имена вместо имён клиентских репо. Без счётчиков строк, без коммитов как таковых — только реальные изменения, которые увидел пользователь или которые внутри что-то поменяли.

rss.xml →

фильтр

  1. XXXIX неделя

    · 21—27 сентября 2026
    Jusmila
    • Витрина показывает статус shipped с трек-номером и состоянием посылки. Первый релиз реформы статусов.
    • Админ платформы видел пустые отчёты. Фильтр по storeId теперь берёт значение правильно.
    • Админ может отвечать на запросы прямо в интерфейсе. Раньше нужна была внешняя почта.
  2. XXXVIII неделя

    · 14—20 сентября 2026
    Jusmila
    • Языковой переключатель в шапке: эндонимы вместо флагов, реальные ссылки вместо router.replace.
    • Импорт 564 товаров из artoja.lt с новой категорией и ночной синхронизацией.
    • Нумерованные счёта для отправленных заказов с деталями продавца и последовательными номерами.
  3. XXXVII неделя

    · 7—13 сентября 2026
    Jusmila
    • Google Merchant feed: добавили product_type, identifier_exists, size, color, shipping. Structured data: VAT и company codes в Organization JSON-LD, product specs в additionalProperty.
    • Sitemap lastmod теперь берёт updatedAt вместо createdAt. Shipping rates на карточке товара — по реальному весу, не hardcoded 4.99€.
    • Montonio Shipping: idempotency journal для webhook eventIds. Enquiries в Telegram вместо Brevo. Rental tab с семью параметрами, пять локалей.
  4. XXXVI неделя

    · 31 августа — 6 сентября 2026
    Jusmila
    • Нотификация о 5xx теперь приходит в момент сбоя, не дожидаясь следующего запуска крона.
    • Каталог теперь грузит 1.9 MB вместо полной категории в RSC payload, /shop быстрее на 85%.
    • GA4 получил полную воронку: view_item, add_to_cart, begin_checkout, purchase с server-side отправкой.
  5. XXXV неделя

    · 24—30 августа 2026
    Jusmila
    • Montonio теперь получает реальный UUID курьера вместо строки 'standard'. Omniva shipment creation перестал падать с ошибкой валидации.
  6. XXXII неделя

    · 3—9 августа 2026
    Jusmila
    • Session replay вернул в продакшн. Mousemove отключен, scroll throttled 150ms, checkpoints каждые 10s.
    • Donor discovery inbox: оператор может превратить продукт из ночной синхронизации в reviewed и published.
    • Wave-1 thresholds обнулили. Дефекты ушли из продакшна после backfill скриптов.
  7. XXXI неделя

    · 27 июля — 2 августа 2026
    Jusmila
    • Синхронизация с поставщиками: волны 0–5. Транзакции, журнал, делистинг, цены вариантов, stock из бинарных статусов, адаптеры для новых донаров.
    • Возвраты через Montonio: запись уведомлений, UI в админке и TMA, атомарная доставка из вебхука перевозчика.
    • Статус-граф заказов в одном месте. Блокировка строк при перезаписи, доставка по webhooks, единый источник для админки и API.
  8. XXX неделя

    · 20—26 июля 2026
    Jusmila
    • Картсумма не показывает бесплатную доставку, если перевозчик не настроен. Раньше fromFee был null.
    • Админ магазина видит только свои enquiry, не чужие. Убрал OR storeId IS NULL.
    • Outbox гарантирует at-least-once: переотправляет stale rows вместо drop при краше между commit и SMTP.
    • Facet cache key теперь включает все фильтры: fitment, brandId, weight, isCurrentDeals. Раньше пересчитывался в TTL.
    • Вариант-гард блокирует добавление в корзину без variantId для товаров с вариантами.
    • Fitment: честный три-статус (fits/not listed/unknown) вместо binary. Store-scoped query вместо cross-tenant leak.
    • Enquiry modal: реальная форма на /shop вместо mailto:. Outbox гарантирует доставку письма в магазин.
    • /products/facets: disjunctive counts (brand counts игнорят brand filter, category counts игнорят category filter).
    • Shipping quote: server-side расчёт вместо клиентского. Omniva-only, честные fees, locker gate.
  9. XXIX неделя

    · 13—19 июля 2026
    Jusmila
    • Montonio label URL теперь свежий при каждом открытии. S3 presigned URL истекает за минуты, раньше брали закэшированный.
    • Цены парсим целыми центами, не строками. toCents теперь отклоняет '1,299' вместо того чтобы превращать в 1.30 EUR.
    • Категории переведены на et/lv/en, variklio-dalys slug вернулся. GSC видит правильные titles вместо полупереводов.
    • Refresh с --shuffle и --delay для обхода WAF. mototex банит после 500 страниц, случайный порядок URL спасает хвост каталога.
    • Telegram отчёты о каждом refresh админам. Matched/price/stock/deactivated/reactivated/delisted счётчики + warnings.
    • Pushover alert на каждый новый заказ. Одна точка входа NotificationPublisherService.orderCreated().
    • Шрифты self-hosted с latin-baltic + cyrillic subsets. next/font/google → next/font/local, Inter opsz=14.
    • i18n payload на клиенте −85%. Root dictionary теперь только GLOBAL_MESSAGE_NAMESPACES вместо полных 108–150KB.
    • Шесть overlay компонент отложены из критического бандла. CartSidebar/MobileDrawer/QuickViewModal/CompareBar/Toaster/CartFlightHost.
    • PDP без 115KB-gzip tree fetch. browseSection теперь на product.category, ~0.5KB GET вместо второго await.
    • Дедупликация /categories/navigation. Header и MobileDrawer больше не стреляют два раза по 9.5KB.
    • Логотип и маскот правильно ресайзены. Header logo w=640→w=234, mascot w=1920→w=640.
    • Prefetch отключен для home/shop табов. Первый тап на −200–400ms.
    • Выше-fold H1 блоки видны сразу. Reveal opacity:0 в SSR HTML задерживал LCP на 5791ms.
    • Category page без 500-product brand scan. getCategoryBrands() 404'ился, LCP упал с 7.0s.
    • CSS семейств по роутам вместо глобально. 267KB combined → per-route, homepage экономит.
    • Nginx compression edge на vps14. brotli + gzip -6, upstreams не сжимают.
    • Категории и продукты: ru-translation slug-drift записан миграцией. 50 категорий, 1017 продуктов, dev vs prod ids.
  10. XXVIII неделя

    · 6—12 июля 2026
    Jusmila
    • Локализация писем и уведомлений WhatsApp. Все трансакционные письма и статусы заказов были на английском независимо от локали покупателя.
    • Исправлены битые ссылки в каталоге: /shop/shop/{slug} → /shop/{category}/{slug}. Категория null падала на fallback "shop".
    • GA4 подключена. Measurement ID был в коде, но никогда не установлен.
  11. XXVII неделя

    · 29 июня — 5 июля 2026
    Jusmila
    • Montonio: hire purchase (Inbank) + real card payments (Adyen) вместо только bank-link.
    • Omniva parcel machines в checkout через Montonio Shipping API.
    • Hybrid v2 redesign: 31 экран light/dark/responsive + transparent product cutouts (.webp).
  12. XXVI неделя

    · 22—28 июня 2026
    Jusmila
    • Gear: размеры из отдельных товаров свёл в варианты. Было 319 листингов, ~247 дубликатов по размерам.
    • Каталог: добавил OEM-номера, спеки с провенансом (источник + confidence) и фитмент по машинам.
    • Меню: двухпанельный flyout для глубоких каталогов (4 уровня), мобильный аккордеон, отключил prefetch.
  13. XXII неделя

    · 25—31 мая 2026
    Jusmila
    • Английские названия категорий в меню вернули. 113 инструментов отображались на литовском из-за NULL name_en.
    • Эстонский и латвийский UI перевели вручную: checkout, auth, основные поверхности каталога.
    • Литовский адрес без state и с 5-значным почтовым кодом. AddressModal больше не требует US-модель.
  14. XXI неделя

    · 18—24 мая 2026
    Jusmila
    • Storefront: упростил типы и сортировку каталога, добавил тёмную тему и валюту €.
    • Admin: полная i18n на use-intl — English по умолчанию, Lithuanian в переключателе с persist в localStorage.
    • Подчистил легаси-брендинг в активном коде, переименовал timezone-helper.
  15. XVIII неделя

    · 27 апреля — 3 мая 2026
    Jusmila
    • Миграция с delivery-fork на jusmila.lt. Admin SPA, Next.js storefront, NestJS API, scraper в одном репо.
Хроника — лог разработки · hiregora.com