juanatsap
949c9a0351
docs: Consolidate documentation into single doc/ folder
...
- Move docs/ contents to doc/ with proper numbering:
- CONTACT-FORM-QUICKSTART.md → 17-CONTACT-FORM.md
- SECURITY-AUDIT-REPORT.md → 18-SECURITY-AUDIT.md
- SECURITY.md → 19-SECURITY-IMPLEMENTATION.md
- Delete duplicate/redundant files from docs/:
- CMD-K-COMMAND-BAR.md (duplicate of 16-CMD-K-API.md)
- CONTACT_FORM_IMPLEMENTATION.md (overlaps with quickstart)
- SECURITY-IMPLEMENTATION-SUMMARY.md (summary of audit)
- Update doc/README.md with new document references
- Update test counts to 39 test files across all READMEs
- Update all "Last Updated" dates to 2025-12-01
- Add new API endpoints documentation (text, cmd-k, contact, toggles)
- Update PROJECT-MEMORY.md with new features and correct paths
2025-12-01 13:30:48 +00:00
juanatsap
9a848e8c53
feat: Add CMD+K command palette with ninja-keys integration
...
Implement a command palette accessible via CMD+K/Ctrl+K using the ninja-keys
web component. Features include:
- New /api/cmd-k endpoint serving dynamic CV entries (experiences, projects, courses)
- Language-aware responses with 1-hour cache headers
- Scroll-to-section functionality for quick navigation
- Enhanced keyboard shortcuts modal with CMD+K documentation
- Comprehensive test coverage for API and UI interactions
Also includes cleanup of deprecated debug test files and various UI polish
improvements to contact form, themes, and action bar components.
2025-12-01 13:03:06 +00:00
juanatsap
b44f9b9a99
refactor: Rename 'extended' → 'long' + add compact sidebar fonts
...
BREAKING CHANGE: API parameter renamed from 'extended' to 'long'
## Breaking Change: Terminology Standardization
Renamed 'extended' to 'long' across entire codebase for consistency:
**Backend (Go):**
- internal/handlers/cv.go (7 locations)
- Migration logic to auto-convert 'extended' → 'long' cookies
- API validation now rejects 'extended', requires 'long'
- Toggle state logic updated
- internal/handlers/pdf_test.go (17 occurrences)
- Test function renamed: TestExportPDF_ExtendedWithSkills → TestExportPDF_LongWithSkills
- All test cases, parameters, and expected filenames updated
- internal/pdf/generator.go (2 comment updates)
**Frontend:**
- PDF-EXPORT-FEATURE.md (3 occurrences)
- doc/3-API.md (parameter documentation)
- doc/7-CUSTOMIZATION.md (examples updated)
- templates/partials/modals/pdf-modal.html (button text, URLs)
- static/js/main.js (migration logic)
- static/hyperscript/toggles._hs (toggle logic)
- tests/mjs/24-pdf-download-params.test.mjs (test expectations)
- tests/mjs/test-preference-migration.test.mjs (NEW)
- tests/mjs/verify-migration.test.mjs (NEW)
**PDFs Renamed:**
- cv-extended-with_skills-jamr-2025-en.pdf → cv-long-with_skills-jamr-2025-en.pdf
- cv-extended-with_skills-jamr-2025-es.pdf → cv-long-with_skills-jamr-2025-es.pdf
**Migration:** Automatic cookie migration from 'extended' → 'long' for seamless UX
## New Feature: Compact Sidebar Fonts
Reduces page count for short CV with skills from 6 → 5 pages:
**Implementation:**
- Location: internal/pdf/generator.go (lines 154-215)
- Cookie detection: `cookies["cv-length"] == "short"`
- Font reduction: 2-6% (0.94-0.98em) - very subtle
- Only activates for: `length=short` + `version=with_skills`
- Long version: Always uses full-size fonts
**Impact:**
- Page count: 6 pages → 5 pages (16.7% reduction)
- Readability: Maintained - fonts remain professional
- Design philosophy: Subtle, natural content flow
**Testing:**
- New test: TestPDFGenerator_CompactSidebarFonts
- Comprehensive coverage of cookie detection and PDF generation
- Manual verification: 5-page PDF with compact but readable fonts
**Documentation:**
- doc/LONG-PDF-GENERATION.md (NEW, 13 KB)
- Complete feature documentation
- Implementation details with code examples
- Font size breakdown table
- Testing and troubleshooting guides
- Compact sidebar fonts section (comprehensive)
**Files Changed:**
- 11 modified (backend + frontend + docs)
- 5 new files (2 PDFs, 1 doc, 2 tests)
- 2 files renamed (PDFs)
**Tests:** All Go tests passing, API validation verified, PDF generation tested
2025-11-20 11:21:43 +00:00
juanatsap
12bd9c7cd8
feat: enhance PDF export with 4 customizable parameters
...
Add comprehensive parameter support to /export/pdf endpoint:
- lang: Language selection (en/es)
- length: CV length (short/long)
- icons: Icon visibility (show/hide)
- version: Theme variant (extended/clean)
Backend Changes:
- Enhanced PDF generator with cookie injection for user preferences
- Cookies set before chromedp navigation to apply all preferences
- Updated filename pattern: CV-{Name}-{lang}-{length}-{version}.pdf
- Comprehensive parameter validation with descriptive error messages
- All parameters optional with sensible defaults (en, short, show, extended)
Testing:
- Added pdf_test.go with parameter validation tests
- Tests cover all valid/invalid parameter combinations
- Tests verify default parameter application
Documentation:
- Updated API documentation (doc/3-API.md)
- Added detailed parameter descriptions and examples
- Updated quick reference with all parameter options
- Added process flow diagram showing cookie injection
- Documented error responses for each invalid parameter
Implementation Details:
- Cookie domain set to "localhost" for chromedp context
- Cookies: cv-language, cv-length, cv-icons, cv-theme
- PDF generation leverages existing @media print CSS
- No changes to frontend CSS or templates
Tested:
- Parameter validation (✅ All invalid params rejected correctly)
- Default parameters (✅ Applied when params omitted)
- PDF generation with all parameter combinations (✅ Working)
2025-11-19 10:43:19 +00:00
juanatsap
1f6f8e417e
docs: Update skeleton loader implementation from hyperscript to JavaScript
...
MIGRATION SUMMARY:
- Moved skeleton loader logic from hyperscript to JavaScript (main.js)
- Changed from htmx:oobAfterSwap to htmx:afterSettle event
- Changed OOB swap from innerHTML to outerHTML for proper element replacement
- Added languageSwitching flag for state tracking
- Added 100ms delay after afterSettle for final render completion
DOCUMENTATION UPDATES:
- 2-MODERN-WEB-TECHNIQUES.md: Updated skeleton loader section with
2025-11-18 19:32:28 +00:00
juanatsap
3fa5d1e5ca
docs: Rename all documentation with numbered prefixes for clarity
...
RENAMING:
- README.md → 0-README.md (start here)
- ARCHITECTURE.md → 1-ARCHITECTURE.md (backend overview)
- MODERN-WEB-TECHNIQUES.md → 2-MODERN-WEB-TECHNIQUES.md (frontend architecture)
- API.md → 3-API.md (API reference)
- HYPERSCRIPT-RULES.md → 4-HYPERSCRIPT-RULES.md (conventions)
- ZOOM_IMPLEMENTATION.md → 5-ZOOM-IMPLEMENTATION.md (zoom feature)
- USER_GUIDE.md → 6-USER-GUIDE.md (user docs)
- CUSTOMIZATION.md → 7-CUSTOMIZATION.md (customization guide)
- DEPLOYMENT.md → 8-DEPLOYMENT.md (deployment)
- SECURITY.md → 9-SECURITY.md (security)
- PRIVACY.md → 10-PRIVACY.md (privacy policy)
CROSS-REFERENCE UPDATES:
- Updated all internal links in all documentation files
- Updated README navigation with numbered references
- Added # column to documentation tables
- Made all links use numbered filenames
BENEFITS:
✅ Clear reading order (0-10)
✅ Logical progression (overview → technical → user → ops → compliance)
✅ Easy sorting and navigation
✅ Professional organization
✅ Zero broken links
2025-11-18 19:12:50 +00:00