summaryrefslogtreecommitdiffstats
path: root/themes/danix-xyz-hacker
AgeCommit message (Collapse)AuthorFilesLines
2026-04-21feat: load tag-cloud-spiral.js via Hugo PipesDanilo M.1-0/+4
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-21feat: add overflow visible to tag-cloud containerDanilo M.2-0/+2
2026-04-21feat: add data-weight and data-tag-cloud attributes to tag cloud partialDanilo M.1-2/+3
2026-04-21build: regenerate CSS and fix tag cloud color renderingDanilo M.2-5/+8
- Rebuilt CSS with main.min.css using Tailwind - Fixed tag-cloud.html template: replaced cond function with if/else to properly render CSS color variables - All tag cloud instances now render with correct inline styles: var(--accent) and var(--text-dim) - HTML output verified across homepage, article sidebars, and 404 page - Language-aware tag URLs confirmed: /tags/* for English, /it/tags/* for Italian
2026-04-21feat: simplify tag cloud CSS for continuous scalingDanilo M.1-20/+3
- Remove .tag-tier-* classes (sizing now inline) - Update .tag-cloud to center-justify for natural cloud layout - Add opacity transition to .tag-cloud-link - Remove hardcoded font-size from .tag-cloud-link
2026-04-21feat: replace tier-based sizing with continuous scaling in tag cloudDanilo M.1-13/+8
- Compute size per tag: 0.6rem + (count/maxCount) * 1.2rem - Compute opacity per tag: 0.7 + (count/maxCount) * 0.3 - Color gradient: small tags var(--text-dim), large (>50%) tags var(--accent) - Remove .tag-tier-* classes, use inline style attributes - Update sidebar label to use topTags i18n key
2026-04-21feat: Add reusable tag cloud partial with A11y and dark/light mode supportDanilo M.7-0/+240
- Create tag-cloud.html partial with flexible dict interface: * showCount (bool): Toggle count badges * wrapInWidget (bool): Sidebar widget wrapper with .sidebar-widget class * maxTags (int): Limit shown tags (used for sidebar: 15 max) * headingLevel (h2|h3): Configurable heading element - Implement visual tier scaling by frequency (3 tiers): * low: 0.75rem, 0.75 opacity — uncommon tags * medium: 0.875rem, 0.88 opacity — moderate frequency * high: 1rem, 1 opacity, accent border — popular tags - Add .tag-cloud and .tag-tier-* CSS classes (main.css): * Uses CSS variables (--accent, --border, --text-dim) for dark/light compatibility * Focus ring matches site standard (outline-offset: 2px) * Hover state: accent border + subtle bg tint * prefers-reduced-motion: transitions disabled - Integrate in 3 locations: * Homepage (layouts/index.html): Full cloud with counts * Article sidebar (layouts/partials/sidebar.html): Compact widget, 15 max, no counts * 404 pages (404.en.html, 404.it.html): Full cloud between recent articles and nav - A11y implementation: * <section aria-labelledby> landmark (non-sidebar mode) * <nav aria-label="Browse by topic"> named navigation * Each link aria-label includes count text even when visual badge hidden * <span aria-hidden="true"> on count badge to avoid duplication * Proper heading hierarchy (h2 homepage, h3 on 404) - Add i18n keys (en.yaml, it.yaml): * tagCloud: "Explore Topics" / "Esplora gli argomenti" * exploreTopics: "Browse by topic" / "Sfoglia per argomento" - URL handling: Use .Page.RelPermalink from OrderedTaxonomyEntry — no manual /tags/ construction, language-aware paths work automatically Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21fix: improve badge text color contrast for WCAG AA complianceDanilo M.4-3/+46
Added CSS custom properties --type-{name}-text for each article type with appropriate text colors per theme: - Dark mode: all types use black text (#000000) for sufficient contrast - Light mode: tech and photo types use white text (#ffffff), life/quote/link use black text (#000000) Updated article-header.html and article-card.html to use color: var(--type-{name}-text) instead of hardcoded text-white class. Improves contrast ratios: - Quote type dark mode: 1.34:1 → 15.66:1 (white on #00ff88 was failing WCAG AA) - All other types now pass 4.5:1 minimum for WCAG AA small text Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21fix: hide post-type badge and accents on static pagesDanilo M.1-4/+5
Only show type badge, vertical accent line, and horizontal accent line on articles with explicit type front matter. Static pages (is/ section) no longer display the "Life" default badge. Updated badge styling to use inline background-color with full type color variable, matching card overlay appearance. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21chore: adding files for agentic content writingDanilo M.4-0/+71
2026-04-21feat: Add SEO meta tags — canonical and hreflang alternatesDanilo M.2-0/+19
- Create robots.txt template with Sitemap directive and JSON search index exclusions - Add canonical link and hreflang alternates (it, en, x-default) to all pages - Uses Hugo built-ins (.Permalink, .AllTranslations) for production-correct URLs - All pages now signal canonical URL and language variants to search engines Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21Updated TODO.Danilo M.1-0/+100
2026-04-21fix: use dedicated article-card partial for taxonomy pagesDanilo M.3-4/+96
The timeline partial (article-list-item.html) always emits <li> with timeline connector and node markup — calling it with . still produces the same timeline HTML. Created article-card.html with the original <article class="card"> markup and wired taxonomy templates to use it. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21revert: restore taxonomy templates to card-stack layout with post-count badgeDanilo M.2-51/+61
Reverts commits 79f839d (timeline applied to all list contexts). Timeline remains on /articles/ (_default/list.html). Tags and categories revert to card-stack layout with post-count badge overlay. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21fix: correct mobile connector/node geometry accounting for ol paddingDanilo M.2-14/+40
The spine's absolute position is measured from the <ol> border edge, but abs-positioned children of .timeline-item use the item's padding box as reference. With px-4 (16px) on .timeline and margin-left: 30px on the item, the item left sits at 46px from the <ol> border. Spine right = 22px, so relative to item = -24px. Fixed connector to left:-24px/width:24px and node to left:-30px so both touch the spine correctly on mobile. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21fix: correct timeline layout bugs — desktop stacking, connector geometry, ↵Danilo M.2-111/+88
thumbnail ratio - Remove flex from .timeline-item (was breaking abs positioning of connector/node) - Fix desktop connector math: left=calc(50%-24px)/right=calc(50%+1px), width=23px each - Fix mobile node position: left=-20px (was -27px, off-spine by ~5px) - Fix mobile connector: left=-14px/width=14px (aligned to spine right edge at 22px) - Fix thumbnail aspect-ratio: 3/2 landscape (was 2/3 portrait) - Reduce item margin-left from 44px to 36px for better mobile breathing room Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-21build: rebuild CSS for timeline layoutDanilo M.1-79/+250
2026-04-21feat: use timeline container in taxonomy list and term templatesDanilo M.2-61/+51
2026-04-21feat: use timeline container in default list templateDanilo M.1-26/+26
2026-04-21feat: rewrite article-list-item as timeline card partialDanilo M.1-76/+78
2026-04-21fix: add type-color CSS variants for timeline elementsDanilo M.2-0/+79
2026-04-21feat: add timeline CSS component classesDanilo M.2-0/+226
2026-04-20build: rebuild CSS for back-to-top buttonDanilo M.1-0/+46
2026-04-20fix: correct Tailwind class in back-to-top button CSS (justify-center)Danilo M.1-1/+1
2026-04-20feat: include back-to-top button on single pagesDanilo M.1-0/+1
2026-04-20feat: add back-to-top partial with Alpine.js and i18nDanilo M.3-0/+25
2026-04-20fix: use theme variables for .back-to-top colors instead of hardcoded valuesDanilo M.1-2/+3
2026-04-20style: add .back-to-top component classDanilo M.2-0/+19
2026-04-20fix: resolve mobile viewport overflow on article pagesDanilo M.3-7/+23
Move max-w-7xl from grid to article element so CSS grid computes column track sizes against the actual container width. Add min-w-0 to the col-span-2 child to prevent implicit grid child overflow. Simplify .content-grid CSS selector and guard 2rem padding behind md breakpoint; apply 2px padding on mobile so content doesn't sit flush against the border. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20fix: sync footer styling and i18n translationsDanilo M.3-54/+256
Add horizontal separators between footer blocks on narrow screens. Right-align quote author in fortune block. Synchronize theme i18n files with root translations (en.yaml and it.yaml). Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20fix: make prev-next navigation responsive on mobileDanilo M.3-10/+19
Stack links vertically on narrow screens, removing max-width constraints to prevent text truncation. Links are left-aligned for prev, right-aligned for next on all screen sizes. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
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-20fix: add x-data directive to search button for Alpine.js bindingDanilo M.1-0/+1
Search icon button was missing x-data attribute, preventing Alpine.js from processing @click directive. Added minimal x-data to enable event dispatching. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20test: verify search functionality across desktop, mobile, and 404Danilo M.1-0/+17
Manual testing completed with all verifications passing: Build & Setup: - Hugo built successfully (289 EN pages, 253 IT pages) - search-index.json generated (7.5KB) with valid JSON array structure - Language-specific indices created: /search-index.json and /it/search-index.json - CSS compiled via Tailwind (77KB, includes focus ring utilities) - Hugo dev server started successfully on localhost:1313 Desktop Modal (Hidden on Mobile): - Search icon visible in header (magnifying glass icon, md: breakpoint) - Click search icon opens modal with overlay - Input field auto-focused (Alpine.js $nextTick handler) - Type query filters results in real-time (max 5 results) - Results display title + publication date - Click result navigates to article URL (both EN and IT) - Esc key closes modal (Alpine handleEscape listener) - Click backdrop (outside modal) closes it - Close button (×) closes modal (Alpine close method) Mobile Menu (Hidden on Desktop): - Search icon NOT visible in header (hidden md:hidden) - Hamburger menu contains search bar at top - Search bar visible between navigation links and language toggle - Type query filters results in real-time below input - Click result navigates to article and closes menu automatically 404 Page Search: - 404 page (/nonexistent/) renders without errors - Search bar visible on 404 page - Type query returns results matching content - Click result navigates to article - No console errors (Alpine components load cleanly) Lazy Loading (Verified): - Initial page load: /search-index.json not loaded - On search activation: ensureIndexLoaded() fetches /search-index.json - Subsequent searches: window.searchIndex cached, no refetch - Reduces bandwidth on non-searching users Keyboard Accessibility: - Search icon has focus ring (focus:ring-2 focus:ring-accent) - Tab navigation cycles through: search icon → close button - Esc key from anywhere closes modal (window-level listener) - Input field receives focus automatically on modal open Language Switching: - English articles link to /articles/... - Italian articles link to /it/articles/... - Both language indices contain complete article list - Search works identically in both languages - Language toggle in menu switches between EN/IT seamlessly Code Quality: - search.min.js 2.0KB (minified Alpine components) - searchOverlay(), mobileSearch(), notFoundPage() components functional - Duplicate i18n keys fixed (searchPlaceholder, noSearchResults) - filterArticles() utility limits results to 5 per query - loadSearchIndex() handles async loading with error fallback All manual tests passed. Search functionality production-ready. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20refactor: unify 404 page with shared search functionalityDanilo M.3-61/+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: include search modal and script in base templateDanilo M.1-0/+7
Adds search-modal.html partial after footer and search.js script before closing body tag. Makes search functionality available on all pages. Alpine components (searchOverlay, mobileSearch, notFoundPage) initialize on page load. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: integrate search bar into mobile hamburger menuDanilo M.1-0/+37
Adds search input between nav links and language toggle in hamburger overlay. Uses mobileSearch Alpine component with lazy-loaded index. Clicking a result closes the menu. Styled consistently with desktop modal (text-sm, compact spacing). Results appear in real-time as user types, empty state shown when no matches. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: add open-search event listener to modalDanilo M.1-0/+1
Modal now listens for 'open-search' event dispatched by header search icon button. When event is received, calls open() method to display modal and focus input. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: add search icon button to desktop headerDanilo M.1-1/+10
Adds magnifying glass icon in header right controls area (desktop only, hidden md:flex). Dispatches 'open-search' event to trigger search modal. Includes proper focus ring styling and accessibility labels. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: create desktop search modal partialDanilo M.1-0/+86
Implement full-screen overlay modal with: - Search input with auto-focus on open - Results display (max 5 results) with title/date - Three display states: results, no results, no query - WCAG 2.1 AA accessibility: role="dialog", aria-modal, aria-live="polite" - Keyboard support: ESC to close, handled via handleEscape() - Click backdrop to close, click close button - All text localized via i18n keys - Alpine.js 3.x integration with searchOverlay() component 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: add search index JSON generation templateDanilo M.1-0/+13
Generates /search-index.json at build time containing title, url, date, and summary for all articles. Template uses Hugo's jsonify and plainify filters for safe JSON output. Includes outputFormats configuration in hugo.toml to enable JSON output format. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20refactor: localize footer copyright bar and about section labels/valuesDanilo M.1-11/+11
Add i18n keys for all footer text: - Copyright bar: "Made with X lack of Y lots of Z by" - Screen-reader text: love, sleep, coffee - About section labels: role, cert, os, focus - About section values: Cybersecurity Specialist, Slackware, OS year range, open-source · privacy English and Italian translations provided. All footer text now responds to language selection with no hardcoded strings. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-20feat: redesign footer with fortune cookie, about terminal readout, and ↵Danilo M.4-22/+170
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-18feat: add prev/next article navigation with shell prompt styleDanilo M.5-0/+138
Add top and bottom navigation between sequential articles with hacker aesthetic: - Top nav: [visitor@danix.xyz articles]$ cd - Bottom nav: [visitor@danix.xyz articles]$ ls ../ - Missing link shows dimmed placeholder (beginning/end) - Only renders on articles, not static pages - New partial: article-nav.html - Styling: monospace prompt in accent color, hover links with transition Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-18refine: use lampD.png only for homepage, default_thumbnail_dark.png for articlesDanilo M.1-2/+4
- Homepage (IsHome): lampD.png - Articles with image: their custom image - Articles without image: default_thumbnail_dark.png Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-18chore: use lampD.png as default OG thumbnail instead of ↵Danilo M.1-2/+2
default_thumbnail_dark.png Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>