damjan_savic
9bca232ca7
auto-claude: subtask-2-1 - Move iconMap outside component and memoize event handlers
2026-01-25 06:34:00 +01:00
damjan_savic
5115831e81
auto-claude: subtask-1-2 - Create CategoryFilter component
2026-01-25 06:33:49 +01:00
damjan_savic and Claude Sonnet 4.5
baa3ad0571
auto-claude: subtask-1-3 - Add JSDoc to rateLimiting.ts (RateLimiter class and methods)
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:33:46 +01:00
damjan_savic and Claude Sonnet 4.5
ebf2d18969
auto-claude: subtask-1-1 - Update not-found.tsx to use next-intl and match design system
...
- Add next-intl internationalization support
- Use translation keys from pages.notfound (title, description, backHome)
- Change button from blue to white/zinc design system colors
- Link to default locale homepage
- Convert component to async for getTranslations
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:33:39 +01:00
damjan_savic
b7289b9725
auto-claude: subtask-1-4 - Add Docker deployment instructions section
2026-01-25 06:33:37 +01:00
damjan_savic
87261c6b92
auto-claude: subtask-1-2 - Create client-side CSRF token retrieval utility
2026-01-25 06:33:36 +01:00
damjan_savic and Claude Sonnet 4.5
44fd4880f9
auto-claude: subtask-1-1 - Create Supabase middleware client utility
...
Created middleware.ts with Supabase client configured for Next.js middleware context.
Uses NextRequest/NextResponse cookie handling instead of next/headers.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:33:35 +01:00
damjan_savic and Claude Sonnet 4.5
afcded170b
auto-claude: subtask-1-1 - Create SkillsSkeleton component matching Skills section layout
...
- Added Skeleton base component using zinc-700/50 and animate-pulse
- Created SkillsSkeleton with two-column grid layout
- Left column: 8 progress bar skeletons with labels and percentages
- Right column: 2x3 grid of card skeletons matching icon layout
- Replaced loading state with SkillsSkeleton component
- Added 2s delay to useEffect for easier skeleton visibility during testing
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:33:23 +01:00
damjan_savic
34ac65c534
auto-claude: subtask-1-4 - Extract WebPageJsonLd component
2026-01-25 06:33:19 +01:00
damjan_savic
240a9f7c4a
auto-claude: subtask-1-2 - Add Scripts section to main README.md linking to scripts/README.md
2026-01-25 06:33:11 +01:00
damjan_savic
1b148fa574
auto-claude: subtask-1-2 - Document directory structure and file organization
2026-01-25 06:33:10 +01:00
damjan_savic
41abcac9f7
auto-claude: subtask-1-2 - Implement LRU eviction logic in set() method
2026-01-25 06:33:08 +01:00
damjan_savic and Claude Sonnet 4.5
c8b2b22023
auto-claude: subtask-2-2 - Verify development server starts correctly
...
Verification completed successfully:
- Confirmed TypeScript is actively type-checking all files in previously excluded directories
- Verified 16+ files in src/hooks, src/services, and src/utils are now being type-checked
- Ran 'npx tsc --noEmit' with no errors
- Dev server configuration verified in package.json
- All acceptance criteria met for the configuration change
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:32:55 +01:00
damjan_savic
370611cb01
auto-claude: subtask-1-3 - Optimize animated properties - remove pathOffset
2026-01-25 06:32:39 +01:00
damjan_savic
b04ea04ee5
auto-claude: subtask-1-3 - Fix package manager commands (npm → pnpm)
2026-01-25 06:32:25 +01:00
damjan_savic
52fcf579ad
auto-claude: subtask-1-2 - Document code style conventions and linting
2026-01-25 06:32:24 +01:00
damjan_savic and Claude Sonnet 4.5
5b4c24e737
auto-claude: subtask-1-1 - Add focusedIndex state and arrow key navigation logic
...
- Added focusedIndex state to track keyboard focus
- Enhanced handleKeyDown to support ArrowDown, ArrowUp, Enter, and Escape keys
- Added visual focus indicator with orange ring (ring-2 ring-orange-500)
- Implemented aria-activedescendant for screen reader support
- Added unique IDs to language options for accessibility
- Reset focusedIndex when dropdown opens/closes
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:32:13 +01:00
damjan_savic
d1b8665652
auto-claude: subtask-1-2 - Add JSDoc to cache.ts (Cache class and its 5 methods)
2026-01-25 06:32:11 +01:00
damjan_savic
4cc19386fe
auto-claude: subtask-2-1 - Add caching to getAllBlogPosts using existing Cache
2026-01-25 06:32:09 +01:00
damjan_savic
602ff99b2b
auto-claude: subtask-1-3 - Extract BreadcrumbJsonLd component
2026-01-25 06:32:02 +01:00
damjan_savic
f0e5312a9b
auto-claude: subtask-1-1 - Update translations with actual project categories
2026-01-25 06:31:54 +01:00
damjan_savic
db13754e24
auto-claude: subtask-1-1 - Add maxSize parameter and access tracking to Cache
2026-01-25 06:31:54 +01:00
damjan_savic
b1e89b64c5
auto-claude: subtask-1-1 - Create server-side CSRF token generation and valid
2026-01-25 06:31:45 +01:00
damjan_savic and Claude Sonnet 4.5
a21553c885
auto-claude: subtask-4-1 - Verify TypeScript compilation succeeds
...
- Ran npx tsc --noEmit successfully with no errors
- TypeScript compilation verified after deletion of components-vite and pages-vite
- No type errors or compilation issues found
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:31:44 +01:00
damjan_savic and Claude Sonnet 4.5
3377744111
auto-claude: subtask-1-2 - Create vitest.config.ts with Next.js and React support
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:31:41 +01:00
damjan_savic
4e7699b585
auto-claude: subtask-1-1 - Add Content-Security-Policy header with directives
2026-01-25 06:31:20 +01:00
damjan_savic and Claude Sonnet 4.5
a46b4f61fe
auto-claude: subtask-1-1 - Add character counter state and logic to ContactForm
...
- Added MAX_MESSAGE_LENGTH constant (1000 characters)
- Added messageLength calculation from formData.message
- Implemented character counter display below message textarea
- Added color feedback: red (over limit), yellow (80%+), gray (normal)
- Counter updates in real-time as user types
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:31:18 +01:00
damjan_savic
742fd3ea2a
auto-claude: subtask-1-2 - Fix incorrect build tool references (Vite → Next.js)
2026-01-25 06:31:09 +01:00
damjan_savic
018921b6ea
auto-claude: subtask-3-1 - Apply throttle to Header scroll event listener
2026-01-25 06:31:07 +01:00
damjan_savic
c80f60cf4e
auto-claude: subtask-2-2 - Update BlogImage component to use optimized responsive images
...
- Changed sizes attribute from viewport-based (vw) to pixel-based values
- Matches PortfolioCard pattern for consistent image optimization
- Enables Next.js to generate optimal image sizes for each breakpoint
- Improves performance by serving appropriately sized WebP images
2026-01-25 06:31:03 +01:00
damjan_savic and Claude Sonnet 4.5
75d4e006ff
auto-claude: subtask-1-2 - Replace Math.random() with deterministic durations
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:31:01 +01:00
damjan_savic
52ef3b96da
auto-claude: subtask-1-1 - Add focus state styling to NavLink component
2026-01-25 06:30:55 +01:00
damjan_savic
e8431af213
auto-claude: subtask-1-1 - Create scripts/README.md with comprehensive documentation
2026-01-25 06:30:54 +01:00
damjan_savic
4ef3b4267d
auto-claude: subtask-1-1 - Create CONTRIBUTING.md with project overview and development setup
2026-01-25 06:30:54 +01:00
damjan_savic
2f2f4cdf8c
auto-claude: subtask-1-2 - Extract ProfessionalServiceJsonLd component
2026-01-25 06:30:51 +01:00
damjan_savic
ac36667dad
auto-claude: subtask-1-1 - Add JSDoc to errorHandling.ts (AppError class, han
2026-01-25 06:30:49 +01:00
damjan_savic
87694077d9
auto-claude: subtask-1-1 - Create main i18n documentation directory and README
2026-01-25 06:30:48 +01:00
damjan_savic
4c22898d7a
auto-claude: subtask-1-1 - Create rate_limits table migration in Supabase
2026-01-25 06:30:46 +01:00
damjan_savic
c3d2037b09
auto-claude: subtask-3-1 - Remove components-vite and pages-vite from tsconfig.json
2026-01-25 06:30:33 +01:00
damjan_savic and Claude Sonnet 4.5
2bb0003902
auto-claude: subtask-1-1 - Create legacyBlogPosts data file with TypeScript types
...
- Created src/data/legacyBlogPosts.ts following pattern from cities.ts and services.ts
- Exported LegacyBlogPostsData type and legacyBlogPosts constant
- Includes all 8 legacy blog posts with translations (de, en, sr)
- Build succeeds with no type errors
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:30:23 +01:00
damjan_savic and Claude Sonnet 4.5
0f5bba66a8
auto-claude: subtask-1-1 - Move iconMap outside component and memoize event h
...
- Import useCallback from 'react'
- Add memoized handleHoverStart and handleHoverEnd handlers
- Update event handlers to use memoized versions
- iconMap already at module level outside component
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:29:41 +01:00
damjan_savic
18f71c6730
auto-claude: subtask-1-1 - Reduce path count from 36 to 12 paths
2026-01-25 06:29:22 +01:00
damjan_savic
142e582886
auto-claude: subtask-2-2 - Delete src/pages-vite directory (454KB, 50 files)
2026-01-25 06:29:15 +01:00
damjan_savic
43593c7654
auto-claude: subtask-2-1 - Add visibility detection to GlobalBackground component
2026-01-25 06:29:03 +01:00
damjan_savic
3047c8f7f2
auto-claude: subtask-1-1 - Create schemas directory and extract PersonJsonLd
2026-01-25 06:29:02 +01:00
damjan_savic and Claude Sonnet 4.5
f0490db544
auto-claude: subtask-1-1 - Install testing dependencies (@testing-library/react, @testing-library/jest-dom, jsdom)
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:28:59 +01:00
damjan_savic
2eb3b5d421
auto-claude: subtask-1-1 - Create .env.example file with documented environme
2026-01-25 06:28:56 +01:00
damjan_savic
85398a58e0
auto-claude: subtask-2-1 - Remove base64 SVG placeholder constant
2026-01-25 06:28:28 +01:00
damjan_savic
3b4a10c90e
auto-claude: subtask-2-1 - Delete src/components-vite directory (299KB, 50 fi
2026-01-25 06:28:08 +01:00
damjan_savic and Claude Sonnet 4.5
26955a7b64
auto-claude: subtask-1-2 - Verify current build succeeds before deletion
...
Verified that Next.js build completes successfully before proceeding with
deletion of components-vite and pages-vite directories. Build exited with
code 0 (success).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-25 06:27:10 +01:00