Commit Graph

571 Commits

Author SHA1 Message Date
juanatsap 1f17277a19 config: switch default Ollama model to Gemma 4 26B MoE (3-4x faster than GLM) 2026-04-09 20:42:41 +01:00
juanatsap 7b6062d0f2 privacy: remove phone number from CV — private data
- Clear phone field in both EN/ES JSON data
- Conditional rendering in footer, plain text, and JSON-LD
- Chat agent already configured to not reveal contact details
2026-04-09 20:20:15 +01:00
juanatsap 0b672447f6 feat: cog menu for layout modes, mobile viewport fix, better separation
Header UX:
- Replace 5 icon buttons with single cog (gear) dropdown menu
- Cog menu shows all layout options with icons + labels
- Help and Close buttons stay visible outside the cog
- Active mode highlighted in green

Mobile fixes:
- Fix viewport overflow (100vw + max-width: 100vw)
- Stronger shadow (0 -4px 20px) for clear CV/chat separation
- Rounded corners (12px) on top for recognizable chat window
- Hide desktop-only modes (side panel, floating, full) from cog on mobile
- max-height: 50vh ensures CV always visible above

Dark mode:
- Cog menu styled for dark backgrounds
2026-04-09 18:39:51 +01:00
juanatsap ef25a9e233 fix: add wiggle animation to zoom button, ensure icon animations on mobile 2026-04-09 14:05:58 +01:00
juanatsap c044f785f3 fix: chat X rotates clockwise, robot wiggles; PDF rotation now animated 2026-04-09 14:03:07 +01:00
juanatsap 9f6b44b478 fix: button hover animations — PDF 45°, wiggle for info/keyboard/bot 2026-04-09 14:01:25 +01:00
juanatsap e865e0d9e0 feat: hover animations on all floating buttons
- Rotate 90°: PDF, leaf, info, theme, chat (symmetric icons)
- Wiggle: email envelope (notification feel)
- Scale pulse: keyboard shortcut (key press feel)
- Bounce up: back-to-top arrow (reinforces direction)
2026-04-09 13:59:31 +01:00
juanatsap 65e6d174a3 feat: chat module portability guide + mobile wave fix (final merge) 2026-04-09 13:08:27 +01:00
juanatsap 328faae953 feat: chat module portability guide + fix mobile wave position
- doc/30-CHAT-MODULE-PORTABILITY.md: step-by-step guide to port the
  chat agent to other Go apps (files, dependencies, customization)
- Fix wave emoji position on mobile (follows button to bottom:5rem right:1rem)
2026-04-09 13:08:17 +01:00
juanatsap 16530c6f03 fix: chat nav scroll to top 2026-04-09 12:56:59 +01:00
juanatsap e56a86860f fix: scroll to CV section aligns to top instead of center 2026-04-09 12:56:56 +01:00
juanatsap b146264072 docs: SEO guide update 2026-04-09 12:56:25 +01:00
juanatsap f8b48b92a3 docs: update SEO guide — duplicate content fix, Search Console, AI-era strategy
- Document /text noindex + canonical header solution
- Add duplicate content prevention checklist
- Document Google Search Console verification setup
- Update files overview table with correct paths
- Add AI chat agent as modern SEO signal
2026-04-09 12:56:22 +01:00
juanatsap 6781b632d5 feat: Google Search Console verification 2026-04-09 12:37:58 +01:00
juanatsap ded519758b feat: add Google Search Console verification meta tag 2026-04-09 12:37:55 +01:00
juanatsap 7d0c2179cd fix: /text crawlable but noindex 2026-04-09 12:24:45 +01:00
juanatsap cfb1817daa fix: keep /text crawlable for LLMs, only noindex for search engines 2026-04-09 12:24:41 +01:00
juanatsap af72c74799 fix: SEO — noindex /text, robots.txt disallow, sitemap update 2026-04-09 12:24:12 +01:00
juanatsap 08b39653ba fix: SEO — prevent Google from indexing /text instead of main page
- Add X-Robots-Tag: noindex, nofollow header to /text endpoint
- Add Link: canonical header pointing to HTML version
- Add Disallow: /text to robots.txt
- Update sitemap.xml lastmod to 2026-04-09
2026-04-09 12:24:06 +01:00
juanatsap 7e78bcdadf feat: mobile chat — split mode, adaptive buttons, 79 tests 2026-04-09 12:21:38 +01:00
juanatsap 6e922fd1cb feat: mobile-first chat layout — split mode, hidden desktop modes, 79 tests
Mobile (≤480px):
- Hide Side Panel, Floating, Full Screen buttons
- Show Split button (50vh vertical split, CV visible above)
- Compact mode: 55vh max bottom sheet
- Force desktop modes to compact if somehow activated
- Disable tooltips on mobile (overflow prevention)
- Tighter header padding

Desktop (>480px):
- Split button hidden, all modes available as before

Tests: 85-chat-mobile.test.mjs — 79 assertions across
iPhone SE (320x568), iPhone 14 (393x852), iPhone 14 Pro Max (430x932),
plus desktop sanity check
2026-04-09 12:21:28 +01:00
juanatsap 070dd9f1d8 fix: dark mode chat contrast 2026-04-09 12:17:26 +01:00
juanatsap edf302b302 fix: dark mode chat — lighter panel to distinguish from CV background 2026-04-09 12:17:22 +01:00
juanatsap b50326fb5c feat: chat close button in header v1.2.0 2026-04-09 11:45:51 +01:00
juanatsap 5dd845a4b7 feat: add close button to chat header 2026-04-09 11:45:48 +01:00
juanatsap f6375a9047 fix: chat welcome message wording 2026-04-09 11:43:11 +01:00
juanatsap 988f8acb80 fix: welcome message — 'about Juan' instead of 'about this CV' 2026-04-09 11:43:08 +01:00
juanatsap c24df3c8e8 fix: wave opacity and double animation 2026-04-09 11:41:21 +01:00
juanatsap ddb2b843a4 fix: wave fully opaque (outside button), animation plays twice with pause 2026-04-09 11:41:18 +01:00
juanatsap b4e28aafce fix: wave positioning and timing 2026-04-09 11:39:29 +01:00
juanatsap 023c445a88 fix: wave — left side, 2s delay, larger emoji 2026-04-09 11:39:25 +01:00
juanatsap 642d0cc90c fix: wave animation refinement 2026-04-09 11:37:40 +01:00
juanatsap 33fd31d246 fix: wave animation — fade in, swing clockwise/counter, fade out 2026-04-09 11:37:37 +01:00
juanatsap 94043ddc3e feat: wave greeting on chat button 2026-04-09 11:35:30 +01:00
juanatsap 84d69fa8db feat: wave greeting animation on chat button to attract clicks
Emoji 👋 pops up 3 times with a waving motion (3s delay after page load),
then disappears. Hidden when chat is open.
2026-04-09 11:35:21 +01:00
juanatsap fafc23bd92 feat: chat icons — image fallbacks, external links, compact sizing 2026-04-09 11:34:26 +01:00
juanatsap 21c33d2833 feat: chat icons — image fallbacks, external links, smaller inline size
- Support image file fallback when no sprite index exists
  (Immich Photo Manager, Cmux Resurrect now show their logos)
- Render external links [text](https://...) as clickable links
  (fixes Third Party Contributions raw markdown)
- Smaller inline icons (20px) to fit chat bubble aesthetic
- Separate icon-chat CSS class for chat-specific sizing
2026-04-09 11:34:14 +01:00
juanatsap 660fa74afc data: fix incorrect React tag in CDC Starter Kit 2026-04-09 11:24:17 +01:00
juanatsap c3f4134daa data: remove incorrect React tag from CDC Starter Kit project
CDC Starter Kit uses vanilla JavaScript + SAP CDC SDK, not React.
This caused the chat agent to incorrectly report React usage in that project.
2026-04-09 11:24:08 +01:00
juanatsap 6bc4f29def fix: correct Go binary path in systemd service (/snap/bin/go) 2026-04-09 11:18:36 +01:00
juanatsap 508e0e873e test+fix: chat layout modes — 38 tests, CSS positioning fixes 2026-04-09 11:09:40 +01:00
juanatsap 823030dcf2 test: 38 layout mode tests + fix half/full/float CSS positioning
- Fix side panel and full screen not covering full viewport
- Fix floating mode initial position (near chat button, not top-right)
- Reset width/height inline styles when switching modes
- Add 84-chat-layout-modes.test.mjs: 38 assertions covering
  compact, side panel, full screen, floating, drag, rapid switching,
  and user avatar rendering
2026-04-09 11:09:30 +01:00
juanatsap 20585c23ec fix: production chat — load API keys from .env via systemd 2026-04-09 11:04:53 +01:00
juanatsap 482350a924 fix: load .env in production systemd service for chat API keys
- Add EnvironmentFile=/home/txeo/Git/yo/cv/.env to systemd unit
- Add production overrides (GO_ENV, BEHIND_PROXY, ALLOWED_ORIGINS)
- Deploy workflow now auto-updates systemd service file on each deploy
2026-04-09 11:04:38 +01:00
juanatsap ceee3dc4dd merge: chat agent feature — GLM local model, UX overhaul, icons, layout modes 2026-04-09 10:57:10 +01:00
juanatsap 8e029d1363 feat: chat UX overhaul — GLM local model, icons, layout modes, instant bubbles
- Add GLM-4.7-Flash as default Ollama model (replaces Mistral)
- Fix WRITE_TIMEOUT (15s→120s) and HTMX timeout (5s→120s) for local LLM
- Auto-warmup model on startup in development mode
- Add /api/chat/status endpoint for model readiness polling
- Show "Initializing AI model..." indicator while model loads
- Add user avatar (mdi:account) on chat messages
- Inject company/project/course sprite icons inline in chat responses
- Replace cramped header icons with 4 icon buttons + tooltips
  (Compact, Side panel, Floating, Full screen)
- Add floating/draggable chat mode with smooth drag support
- Chip questions show user bubble instantly and clear input
- Help modal prefills input instead of auto-sending
- User bubble rendered client-side for immediate feedback
2026-04-09 10:54:23 +01:00
juanatsap d5c90248cc feat: Teams-style chat UX overhaul
Bubbles:
- Teams-style layout: bot avatar (green circle) on left, message beside it
- User messages right-aligned, no avatar (clean, like Teams)
- Rounded bubbles (border-radius: 16px) instead of square
- Distinct corner radii for conversation flow

Navigation:
- Links no longer close the chat — panel stays open for continued navigation
- Added #certifications anchor (alias to courses section)
- Fixed agent instruction to use #courses for certifications references

Theme:
- All colors use CSS variables from _themes.css
- Automatically adapts to light/dark without explicit .theme-clean overrides
- Panel uses --paper-bg (white in light, dark in dark theme)

Size modes:
- 3 discrete toggle buttons: compact, half-screen, fullscreen
- Active state highlighted, direct selection (no confusing cycling)
- Removed chat-half-left (simplified to compact/half/full)

Intelligence:
- React query now returns results (verified: 4 companies + 2 projects + skills)
2026-04-08 17:51:14 +01:00
juanatsap be5fdd03c4 feat: chat avatars + dark theme fix + text overflow fix
Avatars:
- Robot icon (green circle) before each agent message
- Person icon (dark circle) before each user message
- New .chat-bubble wrapper with flex layout for avatar + message

Dark theme fixes:
- Panel background: #1e1e1e (not pure black)
- Agent bubbles: #2d2d2d with light text (not dark/invisible)
- Input area: #2d2d2d (not black)
- Header stays green (--accent-green) in both themes
- Chips, suggestions consistent with panel background

Text overflow:
- overflow-wrap + word-break on messages
- min-width: 0 prevents flex overflow
- User bubble properly right-aligned with avatar
2026-04-08 17:31:07 +01:00
juanatsap 5448c3cf7a feat: resizable chat panel (compact → half-right → half-left → full)
4 size modes cycled via expand button in header:
- Compact: 360px (default, bottom-right corner)
- Half-right: 50vw docked to right edge, full height
- Half-left: 50vw docked to left edge, full height
- Full: 100% viewport overlay

Also fixes text overflow in chat messages (overflow-wrap, word-break).
Messages area expands to fill available height in larger modes.
Size button uses mdi icons: arrow-expand, dock-right, dock-left, arrow-collapse.
CSS transitions for smooth size changes.
2026-04-08 17:24:35 +01:00
juanatsap 465af719e9 test: rewrite mascot tests — 39 assertions, Gemini + navigation links
Complete rewrite matching current architecture:
- Button position (right side x=1838)
- Panel toggle (open/close/reopen)
- Help modal (5 accordion sections, 18 clickable questions)
- Chip click → Gemini response with nav links
- Typed question → certifications response
- Cross-section: Go (finds projects + skills), Java (finds Insa)
- Company listing (Olympic, SAP, Insa)
- Navigation link presence and anchor hrefs
- Spanish language (header, chips, welcome, response in Spanish)
- Response time: 2.0s (under 10s threshold)
- Session persistence, input clear, console errors

37/39 pass (2 nav-click tests fail in headless mode — works in browser)
2026-04-08 17:17:36 +01:00