summaryrefslogtreecommitdiffstats
path: root/themes/danix-xyz-hacker/assets/js
AgeCommit message (Collapse)AuthorFilesLines
2026-04-22chore: extract theme into git submodule (danix2-hugo-theme)Danilo M.12-910/+0
2026-04-22feat: compact tag cloud spiral with controlled overlapDanilo M.1-4/+4
Tighten tag cloud spacing by adjusting spiral parameters: - padding: 8 → -2 (allows ~2px edge overlap, ~7-10% of tag height) - aStep: 0.3 → 0.2 (finer angular sampling per revolution) - rScale: 0.018 → 0.013 multiplier (28% tighter spiral arms) - attempt cap: 2000 → 3000 (compensate for smaller aStep) Tags now cluster closer together visually while remaining readable. Narrow viewport fallback (< 400px) and 404/sidebar placements unaffected. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21fix: use href for deterministic hash and increase padding for safetyDanilo M.1-2/+2
2026-04-21fix: correct maxBottom initialization to handle negative coordinatesDanilo M.1-1/+1
2026-04-21fix: correct padding calculation and remove flex classes in spiral layoutDanilo M.1-3/+4
- Issue #1: Fix padding calculation from 48px to 32px (2rem). Tags normalized to y=16px (top), so add 32px bottom padding = 16+32=48px total height buffer after normalization - Issue #2: Explicitly remove flex and flex-wrap classes via classList.remove() to properly clean DOM when switching to absolute positioning Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21feat: add Archimedean spiral layout engine for tag cloudDanilo M.1-0/+121
2026-04-21chore: adding files for agentic content writingDanilo M.1-0/+34
2026-04-20fix: make search index language-awareDanilo M.1-2/+6
loadSearchIndex() now detects current language from URL pathname. If on /it/* path, loads /it/search-index.json; otherwise loads /search-index.json. Ensures search results link to correct language version of articles. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20refactor: unify 404 page with shared search functionalityDanilo M.1-33/+7
Removes inline window.articlesData from both 404 pages. not-found-page.js now uses shared notFoundPage Alpine component from search.js (lazy-loaded index). Eliminates code duplication; 404 page now benefits from shared search index and filtering logic. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: create shared search module with lazy-loading and Alpine componentsDanilo M.1-0/+130
- Implement loadSearchIndex() for async JSON fetching and caching - Implement filterArticles(query, articles) with case-insensitive search (max 5 results) - Register three Alpine.js components: searchOverlay, mobileSearch, notFoundPage - Support desktop modal, mobile menu, and 404 page search integration - Include Escape key handling and index lazy-loading optimizations Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: redesign footer with fortune cookie, about terminal readout, and ↵Danilo M.1-0/+9
tech/feature badges New footer structure: 3 equal columns (Fortune Cookie | About Credentials | Stack & Features badges) + full-width copyright bar with emoji personality line. Fortune Cookie: - data/quotes.yaml with 13 curated quotes - fortune.js picks random quote on each page load - HTML fallback shows first quote with no-JS - aria-live="polite" announces quote to screen readers About Column: - Terminal readout style with key-value pairs - role, cert (green), os, focus fields - Semantic <dl> structure for accessibility Badges Column: - "built with" section: Hugo, Tailwind, Alpine.js, HTML5, CSS3, JS (purple badges) - "features" section: WCAG 2.1 AA, Open Source, Privacy Friendly, Claude Code (green badges) - New badge-footer-accent/accent2 CSS classes Copyright Bar: - "Made with ❤️ lack of 😴 lots of ☕ by danix" with emoji wrapped in aria-hidden - danix link points to language-aware About page (/is/ or /it/is/) - Centered, full-width, below border-top i18n additions: - footer_built_with, footer_features keys in English and Italian Theming: - All colors use CSS custom properties (--accent, --accent2, --text, --text-dim) - Monospace fonts throughout (JetBrains Mono) - Responsive: grid-cols-1 mobile → md:grid-cols-3 tablet+ - WCAG 2.1 AA compliant: ≥4.5:1 contrast ratios, keyboard accessible, screen reader tested Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-18fix: code block copy icon, light theme bg, horizontal scrollDanilo M.1-4/+4
- Use .icon-copy/.icon-check classes on <i> tags so Feather preserves them on generated <svg>; fixes copy button not swapping to checkmark - Add .chroma to light theme background override so #eff1f5 applies correctly - Change .chroma overflow: hidden to overflow-x: auto to restore horizontal scrolling for long code lines Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-18refactor: syntax highlighting with Catppuccin Macchiato and copy buttonsDanilo M.1-0/+79
- Add [markup.highlight] config: noClasses=false for CSS class output, lineNos=true with lineNumbersInTable=true for proper line number rendering - Create render-codeblock.html render hook to intercept fenced code blocks and wrap with header bar (language label + copy button) - Replace chroma-custom.css entirely with Catppuccin Macchiato palette (dark theme) + Catppuccin Latte (light theme), with full token color mapping - Create code-copy.js: copy-to-clipboard logic with language pretty-name map (bash→Shell, js→JavaScript, etc.), icon swap (copy→check for 2s), and aria-live region for screen reader announcement (WCAG 4.1.3) - Update baseof.html to load code-copy.js on page kind with Hugo Pipes - WCAG AA compliance: line number contrast fixed to ~3.5:1 (--ctp-overlay0), light theme copy button color to 4.1:1 (#6c6f85), focus outline 6.21:1 (--ctp-lavender), screen reader announcements via aria-live All code blocks now render with: syntax highlighting (noClasses=true fixed), line numbers with proper table layout, language label in header, copy button with feather icons, both dark and light theme support. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17fix: simplify 404 page to use Hugo's standard i18n without hacksDanilo M.1-24/+0
Removed JavaScript language detection and Alpine component. Use simple static links that work with both languages. Hugo's redirect rules and i18n system handle language context automatically. No JavaScript hacks. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17Revert "fix: use language-specific 404 layouts for proper i18n support"Danilo M.1-0/+23
This reverts commit 94a11324999f07feff138364633e8442947b628a.
2026-04-17fix: use language-specific 404 layouts for proper i18n supportDanilo M.1-23/+0
Created separate 404.html layouts in themes/danix-xyz-hacker/layouts/it/ and themes/danix-xyz-hacker/layouts/en/ with hardcoded language-specific links. Hugo automatically routes language requests to the correct layout, enabling proper i18n context and translations. Removed generic 404.html and all JavaScript detection hacks. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17fix: use client-side language detection with redirect rules for 404 navigationDanilo M.1-11/+23
Rely on hugo.toml redirect rules to serve correct 404.html and detect language from window.location.pathname in notFoundNav() Alpine component. Navigation links now properly route to Italian (/it/*) or English (/*) sections based on request URL. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17Revert "fix: use Hugo content-based 404 pages for proper multilingual support"Danilo M.1-0/+12
This reverts commit 1cab4424a5c6dd2aeb453d299b6a2f12a840599d.
2026-04-17fix: use Hugo content-based 404 pages for proper multilingual supportDanilo M.1-12/+0
Created language-specific 404 pages (content/en/404.md and content/it/404.md) instead of using JavaScript detection. Hugo now properly routes 404 errors to the correct language context, allowing .Lang and i18n to work correctly. Removed JS language detection hack. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17fix: use client-side language detection for 404 navigation linksDanilo M.1-0/+12
Added window.currentLang detection based on request URL path to correctly route 404 page navigation links for Italian and English versions. Created notFoundNav() Alpine component to dynamically compute language-aware links based on detected language. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-17debug: add console.log to test Alpine.js component registrationDanilo M.1-0/+4
2026-04-17fix: simplify Alpine.js component initialization by loading articles data ↵Danilo M.1-8/+1
directly
2026-04-17fix: refactor 404 page to use Alpine.data() pattern for proper function ↵Danilo M.1-0/+38
registration
2026-04-17feat: enhance modal focus trap with JavaScript and ARIA attributesDanilo M.1-0/+36
Implements focus trap function that cycles Tab/Shift+Tab within modal boundaries, adds ARIA attributes (role, aria-modal, aria-labelledby) for accessibility compliance, and integrates focus initialization on modal display. - Focus trap prevents tab escape from modal dialog - ARIA attributes: role=dialog, aria-modal=true, aria-labelledby linking title - Backdrop marked aria-hidden=true to exclude from accessibility tree - Close buttons have aria-label for screen readers - Focus initialization calls createFocusTrap on modal show Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-16feat: add form component templates, i18n strings, and Alpine.js utilitiesDanilo M.1-0/+91
2026-04-16Complete matrix rain background effect implementationDanilo M.1-0/+157
- Add canvas-based matrix rain animation with ASCII + katakana characters - Implement per-column animation with varied drop speeds (2-4 frame throttle) - Theme-aware colors: purple and green accents with live switching - Homepage: 28% opacity (dark) / 35% opacity (light) for prominent hero effect - Inner pages: 13% opacity (dark) / 18% opacity (light) for subtle side gutters - Respect prefers-reduced-motion system setting - Add opaque background to content grids to block rain under text - Add .content-grid class to differentiate single pages from list pages - Add solid background to article list item cards - Update article list item with bg-bg class for readability - Z-index stack: canvas (z-1), content grid (z-9), main content (z-10) Files modified: - matrix-rain.js: new IIFE animation script with MutationObserver for theme switching - baseof.html: add canvas element and script tag with guard - main.css: add canvas positioning, opacity rules, content grid background - _default/single.html: add max-w-7xl and .content-grid class - articles/single.html: add max-w-7xl and .content-grid class - is/list.html: add max-w-7xl and .content-grid class - article-list-item.html: add bg-bg class for solid background Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Implement article type colors, reading progress bar, and optimize layoutDanilo M.1-0/+29
- Add colored type pills to article list items (overlay on thumbnails, top-right) - Add type accent corner (L-shaped) to single article headers with colored pill badge in metadata - Implement smooth reading progress bar at viewport top (violet→green gradient) - Progress bar only appears on single pages/articles, not on lists or homepage - Constrain article width to max-w-7xl for comfortable reading with side gutters - Use CSS variables for all colors to support dark/light theme switching - Add reading-progress.js with requestAnimationFrame throttling for performance - Update HANDOFF.md with current progress Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Fix theme toggle icon to always sync with actual page themeDanilo M.1-14/+23
Replace Alpine.js conditional rendering with plain JavaScript that: - Reads the actual theme class from the html element on page load - Updates icon visibility based on the real DOM state, not internal state - Handles navigation correctly since it checks the current class every time This fixes the issue where navigating between pages caused the icon to become out of sync with the actual theme being displayed. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Fix design system compliance: CSS variables, accessibility, and theme systemDanilo M.1-11/+71
Core CSS improvements: - Add --surface-rgb, --type-* (tech, life, quote, link, photo) custom properties - Add --type-* semantic color classes for article badges - Convert article badges from inline styles to CSS variable system - Add prefers-color-scheme light fallback for no-JS users - Add prefers-reduced-motion support to respect user accessibility settings - Replace *:focus with *:focus-visible (keyboard-only outlines) - Add clamp() fluid typography for hero-title and section-title - Refactor container rules to mobile-first with 1060px breakpoint Theme & Icon fixes: - Fix theme toggle icon display with Alpine.js (was broken with Tailwind dark: classes) - Add aria-hidden="true" to icon elements - Update header with proper ARIA attributes on menu toggle Accessibility enhancements: - Add skip-to-main-content link in baseof.html - Update hamburger menu with aria-expanded, aria-controls, aria-hidden - Implement focus trap (Tab loops) within mobile menu - Return focus to trigger button on menu close - Add menu open/close state management with proper ARIA Semantic HTML: - Wrap article pages in <article> element (articles/single.html, _default/single.html) - Fix quote article to use --type-quote border color instead of generic accent Image optimization: - Add loading="lazy" to profile image in index.html - Add loading="lazy" to featured image in photo.html Template fixes: - Remove broken os.Getenv "THEME" runtime check from article-list-item.html - Replace inline color styles with semantic .type-* classes - Add 1060px lg: breakpoint to tailwind.config.js i18n updates: - Add skipToContent translations (en, it) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Complete multilingual theme implementation with language-aware menusDanilo M.1-24/+0
- Refactor hugo.toml to define menus separately for each language using pageRef - Simplify header and hamburger-menu templates to use Hugo-native language handling - Update content structure with proper language prefix organization - Remove JavaScript language-switcher in favor of Hugo's native approach - Add new layout templates for /is/ section with list view - Update HANDOFF.md with current implementation status - Rebuild minified CSS with updated template changes Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Extract contact form JavaScript to separate file and remove shortcode from ↵Danilo M.1-0/+45
contact pages - Move contact form Alpine.js logic to assets/js/contact-form.js - Simplify contact-form.html shortcode by removing inline script - Load contact-form.js in baseof.html after Alpine.js - Temporarily remove {{< contact_form >}} shortcode from contact pages (shortcode parsing issue to investigate later) - Contact pages now display with placeholder text Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Remove Alpine.js dependency from menu toggle, use vanilla JavaScriptDanilo M.1-19/+20
- Replace Alpine.js directives (@click, x-ref) with vanilla JS - Update hamburger-menu.html to use id selectors instead of x-ref - Rewrite menu.js to work without Alpine.js - Menu now opens/closes on click with proper event handling - Language toggle now accessible in hamburger menu Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15Fix Hugo v0.160 compatibility: remove os.Getenv and fix template syntaxDanilo M.1-0/+14
- Remove os.Getenv("THEME") call that violates security policy - Use CSS variables and data attributes for theme-aware badge colors - Update theme-toggle.js to update badge colors on theme switch - Fix .LastMod → .Lastmod (correct API) - Fix template syntax for date comparison in article-header.html Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-15feat: create language switcher with persistenceDanilo M.1-0/+24
2026-04-15feat: create hamburger menu toggle scriptDanilo M.1-0/+51
2026-04-15feat: create theme toggle with localStorage persistenceDanilo M.1-0/+30