Ilia Mashkov
c4002ebb4f
chore: use node:path protocol in vitest config
2026-05-23 09:50:29 +03:00
Ilia Mashkov
a31cf4deec
fix: opt Next.js out of smooth scroll for route transitions
...
Adds data-scroll-behavior="smooth" to <html> so Next disables the global
scroll-behavior during programmatic route-change scrolls while keeping
smooth behavior for user-driven anchor jumps. Silences the Next 15 warning.
2026-05-22 15:30:42 +03:00
Ilia Mashkov
5b686ad87c
fix: SectionAccordion animation misbehave
2026-05-22 14:22:08 +03:00
Ilia Mashkov
43242c3bed
refactor: swap Button ghost/outline semantics, clean up ImageLightbox thumbnail
...
ghost now means transparent bg (no fill); outline keeps cream bg with subtle border.
Remove magnify icon overlay from ImageLightbox thumbnail — hover cursor-zoom-in is sufficient.
Close button updated to variant="outline" for cream-on-blue contrast in the dialog.
2026-05-22 14:22:08 +03:00
Ilia Mashkov
7a06d42d20
feat: add icon components and update ImageLightbox with icons and Button
2026-05-22 12:48:54 +03:00
Ilia Mashkov
eeb7d6b4a6
feat: use ImageLightbox in ProjectCard
2026-05-22 12:18:00 +03:00
Ilia Mashkov
eb13328f9a
feat: add lightbox backdrop CSS and export ImageLightbox
2026-05-22 12:05:42 +03:00
Ilia Mashkov
bfb0b46a37
feat: implement ImageLightbox with tests
2026-05-22 12:04:11 +03:00
Ilia Mashkov
c7ed458c8e
test: ImageLightbox failing tests
2026-05-22 10:14:53 +03:00
Ilia Mashkov
49cafe7161
feat: ImageLightbox placeholder
2026-05-21 20:28:28 +03:00
ilia
58eae96791
Merge pull request 'Features/visual improvements' ( #7 ) from features/visual-improvements into main
...
Build and push / build (push) Successful in 1m5s
Reviewed-on: #7
2026-05-21 15:16:16 +00:00
Ilia Mashkov
1b0ffd41a2
chore: changes for deployment to get the pocketbase public url variable value
2026-05-21 18:15:16 +03:00
Ilia Mashkov
3e520f6abb
fix: use https protocol in next config
2026-05-21 18:01:03 +03:00
Ilia Mashkov
4d54947a91
fix: tweak slide section animation
2026-05-21 18:00:12 +03:00
Ilia Mashkov
f121443e52
fix: add footer z index in transition group to stay above main content during transitions
2026-05-21 17:59:40 +03:00
Ilia Mashkov
df4526cabd
chore: remove unused favicon.ico
2026-05-21 17:07:58 +03:00
Ilia Mashkov
bf36a40bb5
chore: swap the favicon
2026-05-21 16:57:30 +03:00
Ilia Mashkov
886cf4b5c4
feat: add spring slide animation for section content
2026-05-21 16:36:00 +03:00
Ilia Mashkov
fc588f9e66
feat: set page title and description
2026-05-21 16:01:42 +03:00
Ilia Mashkov
f08ee51332
chore: remove unused files
2026-05-21 15:58:48 +03:00
Ilia Mashkov
9ded41db3c
feat: set the favicon
2026-05-21 15:58:11 +03:00
Ilia Mashkov
0697e9ad72
feat: add error handling and tests for client.ts
2026-05-21 15:57:43 +03:00
Ilia Mashkov
caff3fe7e3
fix: align footer paddings with main ones
2026-05-21 15:55:47 +03:00
ilia
56f3f94e41
Merge pull request 'feat: add PBHttpError and try/catch in getFirstRecord' ( #6 ) from fix/get-first-record into main
...
Build and push / build (push) Successful in 3m35s
Reviewed-on: #6
2026-05-21 10:08:04 +00:00
Ilia Mashkov
9deefaf3fc
feat: add PBHttpError and try/catch in getFirstRecord
2026-05-21 13:05:31 +03:00
ilia
a54963091c
Merge pull request 'fix: require PB_URL in production, fall back to localhost in dev only' ( #5 ) from fix/pocketbase into main
...
Build and push / build (push) Failing after 1m10s
Reviewed-on: #5
2026-05-19 16:28:43 +00:00
Ilia Mashkov
6b15a0e658
fix: gracefully handle PocketBase unreachable during static generation
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 19:27:04 +03:00
Ilia Mashkov
93b8adf55d
fix: require PB_URL in production, fall back to localhost in dev only
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 19:26:58 +03:00
ilia
03a90e1cf0
Merge pull request 'fix: old palette purged from stories and stories purged from production build' ( #4 ) from fixes/storybook into main
...
Build and push / build (push) Failing after 1m14s
Reviewed-on: #4
2026-05-19 15:58:13 +00:00
Ilia Mashkov
06d69a860e
fix: add css and json to biome check, set yarn version in package.json
2026-05-19 18:57:16 +03:00
Ilia Mashkov
181cfdebdf
fix: old palette purged from stories and stories purged from production build
2026-05-19 18:50:45 +03:00
Ilia Mashkov
e0565d6ddc
fix: yarn instead of npm for dockerfile
Build and push / build (push) Failing after 2m17s
2026-05-19 18:37:58 +03:00
ilia
598d566487
Merge pull request 'feat: add route-level error page and per-section error boundary' ( #3 ) from feature/error-handling into main
...
Build and push / build (push) Failing after 22s
Reviewed-on: #3
2026-05-19 15:27:17 +00:00
Ilia Mashkov
dd9cc766d5
feat: add route-level error page and per-section error boundary
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-19 18:20:53 +03:00
ilia
d1b4452867
Merge pull request 'chore: add .dockerignore' ( #2 ) from fixes/responsive into main
...
Build and push / build (push) Failing after 4m25s
Reviewed-on: #2
2026-05-19 15:11:13 +00:00
Ilia Mashkov
d62c0ad501
chore: add Gitea Actions deploy workflow
2026-05-19 18:09:59 +03:00
Ilia Mashkov
cf2f1bc7f3
chore: unignore .gitea directory
2026-05-19 18:09:26 +03:00
Ilia Mashkov
7f6e6369ff
fix: reduce padding and spacing for mobile
...
Main: px-4 py-6 on mobile (was px-8 py-12). Section accordion:
mb/py on inactive links tightened to 1/1 on mobile, space-y-0
between sections. Active title text-xl on mobile to prevent
wrapping at ~400px, matches inactive title size.
2026-05-19 18:06:51 +03:00
Ilia Mashkov
d0f09f0dbd
feat: social links with inline SVG icons from CMS
...
SocialRecord gains icon field (SVG markup string). InlineSvg component
parses SVG string via html-react-parser. Footer renders icon on mobile
(sm:hidden label), label on sm+ (hidden icon). Email field refactored
from string to SocialRecord relation.
2026-05-19 18:06:20 +03:00
Ilia Mashkov
41af0b90a0
feat: add Link secondary variant with border-bottom at sm+
...
Secondary variant drops text-decoration, uses opacity-60/hover-100
and brutal-border-bottom at sm+ for use in icon+label links where
the underline should only appear alongside the label.
2026-05-19 18:06:10 +03:00
Ilia Mashkov
954b17d824
fix: reduce Button sm padding on mobile
2026-05-19 18:05:57 +03:00
Ilia Mashkov
906ec3b805
feat: fixed footer with responsive height tokens
...
Footer is fixed bottom-0 with h-footer (5rem mobile) / md:h-footer-wide
(4rem desktop). Body gets matching pb-footer/md:pb-footer-wide to
reserve space. Tokens registered in @theme inline as --spacing-footer*.
2026-05-19 18:05:46 +03:00
Ilia Mashkov
4d6d78a528
chore: add .dockerignore
2026-05-19 18:05:37 +03:00
Ilia Mashkov
f40e9f54a3
chore: add dockerfile
2026-05-19 09:55:12 +03:00
Ilia Mashkov
7829f81d1a
chore: add dockerfile
2026-05-19 09:46:35 +03:00
ilia
cd9da6dd26
Merge pull request 'fix: storybook font rendering and shared fonts module' ( #1 ) from feat/portfolio-setup into main
...
Reviewed-on: #1
2026-05-18 18:45:21 +00:00
Ilia Mashkov
d5ba77b4ce
feat: add poweredByHeader: false
2026-05-18 21:40:10 +03:00
Ilia Mashkov
5c00f8e8a0
feat: add /api/revalidate webhook for on-demand ISR
...
POST with x-revalidate-secret header and { tag } body calls
revalidateTag to purge a collection from the Next.js data cache.
Guarded by REVALIDATE_SECRET env var.
2026-05-18 21:34:51 +03:00
Ilia Mashkov
cb3bdce24a
feat: tag all PocketBase fetches for ISR cache invalidation
...
Each getCollection/getFirstRecord call now passes the collection name
as a cache tag so revalidateTag can target individual collections.
2026-05-18 21:34:43 +03:00
Ilia Mashkov
42ca683c65
feat: add tags/revalidate options to PocketBase fetch client
...
PB_URL falls back through PB_URL → NEXT_PUBLIC_PB_URL → localhost so
internal Docker hostname is used server-side without leaking into the
client bundle. cache: force-cache replaced with next: { tags, revalidate }
for ISR tag-based invalidation.
2026-05-18 21:34:34 +03:00