Vadym Samoilenko
abfc8de91c
feat(legal): cookie banner + Ukrainian law references in legal pages
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- CookieBanner: bottom-fixed, stores consent in localStorage,
links to privacy policy, green brand colors
- Privacy policy + Data processing: replace GDPR as primary
reference with ЗУ «Про захист персональних даних» № 2297-VI,
correct article references (ст. 6, 8, 16, 24 Закону),
supervisory authority: Уповноважений ВРУ з прав людини
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 13:21:01 +01:00
Vadym Samoilenko
dd63759220
fix(legal): larger textarea rows in admin, update date to 01.06.2026
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:15:56 +01:00
Vadym Samoilenko
7332b81c17
chore(migrations): add legal_pages table
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 13:10:24 +01:00
Vadym Samoilenko
2cf8ec9715
feat(legal): 4 Ukrainian legal pages + footer links + CMS global
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- LegalPages global in Payload CMS (Юридичні сторінки section)
- /privacy-policy, /terms-of-use, /oferta, /data-processing pages
- Legal text pre-filled with contract data (ТОВ ТЕХНОСМАРТ УКРАЇНА,
ЄДРПОУ 40166430, contacts from contract №20260422)
- Footer: legal links row above copyright
- All pages editable from CMS admin, fallback to hardcoded defaults
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 13:01:38 +01:00
Vadym Samoilenko
028d14ea17
fix(migrations): add background_image_url column to hero_slides table
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:56:50 +01:00
Vadym Samoilenko
4547d5aacf
feat(cms): connect checkout instructions/terms + thank-you page to CMS
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- CheckoutPage: pass instructions and terms from CMS global to frontend;
instructions shown above form, terms below button
- ThankYouPage: fetch title/message/contactPhone/contactEmail from CMS;
contact info shown if set, falls back to hardcoded defaults
- Hero: use backgroundImageUrl text field as fallback for media upload
- Add lexicalToText util for plain-text extraction from Payload Lexical JSON
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:54:29 +01:00
Vadym Samoilenko
6d37d150ef
chore(migrations): add home_page_hero_slides table migration
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:46:50 +01:00
Vadym Samoilenko
a11d3051b8
fix(hero): use slides prop array instead of SLIDES constant
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-04 12:42:43 +01:00
Vadym Samoilenko
fa7c8c9cb9
feat(cms): connect hero slider to CMS — editable from admin
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Add heroSlides array to HomePage global (title, subtitle, type,
backgroundImage, ctaLabel, ctaHref per slide)
- Hero.tsx fetches slides from CMS, passes as props to HeroSlider
- HeroSlider accepts optional slides prop, falls back to static default
- No visible change until slides are added in admin
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:42:11 +01:00
Vadym Samoilenko
77bb9c15e8
fix(ui): wider and more gradual orange glow around video section
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
4-layer box-shadow: 40→100→180→280px blur with decreasing opacity
creates smooth fade from video edge into the green background.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:33:19 +01:00
Vadym Samoilenko
7ee5e8a434
feat(ui): card stack slider, footer redesign, video glow, revalidation fix
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
UI changes:
- Locations section: replace 3D coverflow with draggable card stack (framer-motion), auto-advance 4s, dot navigation
- Footer: orange gradient matching header, dark green text for readability
- VideoSection: orange box-shadow glow around video block, green wave pattern preserved
Bug fixes:
- fix(revalidate): SECRET empty check was blocking all CMS cache invalidations on prod
- fix(revalidate): location pages now revalidate /lokatsii/{slug} + /lokatsii + layout
- fix(revalidate): blog posts revalidate /blog/{slug} + /blog
- fix(pages): add dynamicParams=true to /[slug] and /lokatsii/[slug] for post-build new entries
- fix(lokatsii): dynamic DETAIL_HREF — new locations with showDetailPage:true auto-get detail button
- fix(combo): cursor:pointer on combo ticket cards
- fix(blog): add EXPERIMENTAL_TableFeature to Lexical editor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 12:18:01 +01:00
Vadym Samoilenko
0c5e8a7f12
fix(dino): restore original hero — dyno-hero.webp + height:1096px css (was correct yesterday)
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 18:10:03 +01:00
Vadym Samoilenko
156d3738fe
fix(dino): two-layer Figma hero (ellipse SVG + T-Rex PNG), larger dino fill per reference
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 18:04:39 +01:00
Vadym Samoilenko
ca41ec2c09
fix(ui): restore dyvolis hero PNG, new dino hero image + reposition, fix birthday form date field width
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 17:33:41 +01:00
Vadym Samoilenko
5f23806a82
fix(ui): remove black bg on hero images, improve dino quality, protect seed from overwriting admin data
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- DyvoLisHero: add mix-blend-mode:screen to hero img so JPEG black bg
becomes transparent and the orange ellipse shows through
- DinoPageContent: add contrast/saturation filter to hero-dino for
richer colour rendering
- seed.ts: globals (home-page, header, footer, site-settings) now only
updated when FORCE_SEED=true; tariffs seeded only when table is empty
(never deleted), preventing accidental data loss on redeploy
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 17:08:43 +01:00
Vadym Samoilenko
04b28e7620
feat(email): Ukrainian source labels, full lead details in email (guests, date, message)
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 16:26:56 +01:00
Vadym Samoilenko
65c47359d5
fix(db): add media imageSizes columns (mobile/tablet/desktop)
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 16:09:42 +01:00
Vadym Samoilenko
8c1566f3ca
fix(cms): remove drafts/autosave from all page globals — every save now immediately live
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 15:37:32 +01:00
Vadym Samoilenko
a8fdacdeab
fix(db): add version_hero_image_id to version tables for group-visits, birthday, dyvolis
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 15:27:37 +01:00
Vadym Samoilenko
6d6c09f93f
feat(media): auto-optimize images on upload — convert to WebP, generate mobile/tablet/desktop sizes
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 15:24:40 +01:00
Vadym Samoilenko
3f8c6312c8
chore(db): add hero_image_id columns to group_visits_page, birthday_page, dyvolis_page
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 15:18:28 +01:00
Vadym Samoilenko
f0df7f1026
feat(cms): remove hardcoded images — connect birthday, dyvolis, dino, home gallery to CMS globals
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 15:07:27 +01:00
Vadym Samoilenko
d327c841d7
feat(groups): add heroImage field to GroupVisitsPage global + connect to page
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 14:52:44 +01:00
Vadym Samoilenko
69675851f8
fix(groups): connect amenities array to CMS — was hardcoded, now reads label+image from global
2026-06-03 14:49:38 +01:00
Vadym Samoilenko
a2fb01ea11
fix(ui): center CTA buttons (no full-width stretch), move birthday hero title to bottom
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 14:33:21 +01:00
Vadym Samoilenko
619bed7a00
fix(dino-mobile): gallery overlap, accordion overflow, dino card PNG contain
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 14:12:23 +01:00
Vadym Samoilenko
0ef399c2f5
fix(seed-forms): always run updateGlobal — fixes re-link on partial state
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Remove early-return guard that skipped global linking when both forms already existed. Per-form idempotency is handled by the '?? await payload.create()' pattern, so we can safely always run updateGlobal to ensure forms are linked to their globals even after re-runs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 14:06:02 +01:00
Vadym Samoilenko
41593c8edc
fix(seed-forms): add confirmationMessage to both form creates
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
Payload forms plugin requires a Lexical rich-text confirmationMessage
when confirmationType is 'message'; omitting it caused a 500 on seed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 14:02:28 +01:00
Vadym Samoilenko
b5c34f6f0b
fix(seed-forms): tighten auth guard + per-form idempotency to handle partial failures
...
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
- Fix auth bypass when SYNC_SECRET env var is unset: now defaults to empty string
- Change idempotency check from totalDocs >= 2 to per-form existence checks
- Allow reuse of existing forms instead of creating duplicates if one creation fails
- Handles partial seed state gracefully (e.g., birthday form exists but group form missing)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 13:59:06 +01:00
Vadym Samoilenko
65498e2da5
feat(cms): add seed-forms route — creates birthday + group-visits forms and links to globals
2026-06-03 13:56:58 +01:00
Vadym Samoilenko
7f28be23f8
fix(forms): fix select option visibility in FormBlock on Windows Chrome
2026-06-03 13:54:57 +01:00
Vadym Samoilenko
4c31fc6d21
fix(birthday): remove package select field from booking form
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 13:43:10 +01:00
Vadym Samoilenko
480b10feed
feat(cms): add revalidateAfterChange hooks to Locations, Tariffs, Reviews, BirthdayPackages
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-03 13:02:28 +01:00
Vadym Samoilenko
2c59ea9ab7
fix(dino): hero responsive at 820-1100px + mobile card slider replacing wheel at ≤640px
2026-06-03 13:01:25 +01:00
Vadym Samoilenko
7cf0af6b74
fix(form): make group-type select options visible on Windows Chrome
2026-06-03 13:01:02 +01:00
Vadym Samoilenko
cd8d5673d1
perf: compress loc- images, fix hero fetchpriority, fix layout broken tag, Binotel SEO links
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 21:39:02 +01:00
Vadym Samoilenko
deead80f2a
perf: compress all images (-70MB), preload LCP hero, convert PNG→JPEG, remove dead files
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 21:32:49 +01:00
Vadym Samoilenko
3e65612141
fix(mobile): gallery lightbox everywhere, LocationsSlider bottom-strip, DinoPageContent video overflow
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 21:24:53 +01:00
Vadym Samoilenko
3d994b1bf7
fix(mobile): responsive CoverflowSlider, LocationsSlider overlay, DinoPageContent hero+wheel overflow, gallery lightbox
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 21:12:50 +01:00
Vadym Samoilenko
e159fe8449
docs: admin guide PDF v1.1 with 21 real screenshots, verified UI labels
2026-06-02 20:53:02 +01:00
Vadym Samoilenko
929f3cc067
docs: Ukrainian admin user guide PDF (14 sections, all CMS fields)
2026-06-02 20:37:07 +01:00
Vadym Samoilenko
8ad57b06d6
chore: compress new ticket photos from Figma, clean up
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 20:15:10 +01:00
Vadym Samoilenko
fa0aa0e60a
feat(tickets): new photos from Figma BoXMaNX15, fix telegram grammar, fix ezy www URL + real tariff IDs
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 20:06:46 +01:00
Vadym Samoilenko
208e0506e8
fix(telegram): correct Ukrainian grammar (Нове замовлення), show tariff name + customer name/phone in order alert
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-02 20:01:16 +01:00
Vadym Samoilenko
d4155c568d
fix(ezy): use www.ezy.com.ua, correct real tariff ids (3120-3122, 3417-3420), hide non-payable
2026-06-02 19:55:24 +01:00
Vadym Samoilenko
e077b67134
chore: remove dev screenshots/AI artifacts from repo + gitignore them
2026-06-02 19:19:08 +01:00
Vadym Samoilenko
c619a8dcda
feat(admin): clear Ukrainian labels for Tariffs collection + visible toggle (hide non-ezy tickets)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 19:15:22 +01:00
Vadym Samoilenko
f2a560f9e6
feat: kvytky 1:1 redesign, CMS-driven pages, blog/group/birthday updates, green-wave pattern, image optimization
...
- /kvytky: combo grid (cart add), tabbed catalog with Figma chips/photos, CMS-editable (TicketsPage global)
- Tariffs collection: infoChips, badgeLabel, category zone/attraction/program, manual tickets
- Birthday & Group pages: Figma design + real photos, pricing sections removed (form-only), unified form style
- Thank-you page (pidtverdzhennya) from Figma; combo cards redesigned (4-up grid)
- Reviews coverflow slider; blog photos fixed (relative media URLs for next/image)
- JSON-LD (WebPage/LocalBusiness/CollectionPage/Service) on home/lokatsii/birthday/group
- Footer: photo bg + AImpress credit link; green wave pattern on green sections; consistent footer
- Imported 3 real blog posts from staging; fixed text artifacts
- Optimized 118 images 563MB -> 72MB (resize 1920px + re-encode)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 16:46:52 +01:00
Vadym Samoilenko
00a3ae163a
Merge remote-tracking branch 'origin/main'
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
2026-06-01 21:36:07 +01:00
Vadym Samoilenko
a3618448a8
feat(dynopark): hero banner, 5-dino wheel, silhouette dinos + deploy assets
...
- DinoPageContent: wheel shows exactly 5 dinos in the bottom bowl (fixed 30°
slot, decoupled from CMS dino count; far nodes parked off-screen)
- non-active dinos darkened to silhouettes, active stays full color
- hero banner swapped to blue T-Rex, height 1096px, 12px gap below header
- optimize heavy CMS images (61MB -> 9MB) and commit media + public assets
so git holds everything needed for deploy
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 21:33:40 +01:00