| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Section list templates (is/list.html, repository/list.html) were missing
the breadcrumb partial. Also extended JSON-LD breadcrumb generation to
include section-kind pages, not just single pages.
|
|
Static pages under /is/ now show correct breadcrumb trail (eg. Home / About /
Privacy). Articles still show Home / Articles / Title. Both HTML breadcrumb
and JSON-LD structured data updated.
|
|
Apply same active-page detection logic used in hamburger menu to desktop
navigation. Desktop nav now shows purple accent color + bold font and
aria-current=page attribute when viewing the linked page. Works for both
EN and IT languages.
|
|
Create Italian translation of A11Y Compliant audit report (Settimane 1-5).
Publish both EN and IT pages (draft: false).
Link WCAG 2.1 AA badge in footer to /is/a11y-compliant/ with language-aware URL.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
Move "Claude Code" from features to built-with (build tool).
Add "Keyboard Accessible" and "Screen Reader Compatible" to features.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
- New partial: breadcrumb-jsonld.html generates BreadcrumbList schema
- Integrated into head-meta.html for single content pages only
- i18n aware: Italian uses /it/ prefix, localized "Home"/"Articoli"
- No JSON-LD on homepage or list pages (Kind="page" guard)
- Valid JSON schema per https://schema.org/BreadcrumbList
- Fixes TODO.md:30
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
|
|
variable interpolation
|
|
|
|
- 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
|
|
- 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
|
|
- 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>
|
|
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>
|
|
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>
|
|
- 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>
|
|
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>
|
|
|
|
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
- 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>
|
|
default_thumbnail_dark.png
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
Implement comprehensive OG and Twitter Card support:
- og:title, og:description, og:image, og:type (website/article)
- og:article:published_time and og:article:author for article pages
- twitter:card with summary_large_image, twitter:title, twitter:description, twitter:image
- Per-page description from excerpt field with fallback to site description
- Article-specific tags only rendered for pages with dates
- Default dark thumbnail fallback when article has no image
- Empty twitterHandle param (optional fill-in for users)
Extracted head meta into new partial for maintainability.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
- Use HTML <picture> element with prefers-color-scheme media query
- Fallback dark thumbnail via content: url() CSS for theme-light class
- Automatically displays light/dark thumbnails based on user theme
- Articles without custom images now show default thumbnails
- Maintains all existing hover effects and type badges
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
The related widget was not displaying because the condition used .Type (the article's frontmatter type field like "life", "tech") instead of .Section (the content section like "articles"). Changed condition from eq .Type "articles" to eq .Section "articles".
Also added Hugo's [related] configuration block to enable content matching by categories (weight 100) and tags (weight 80) with an 80% threshold for finding related posts.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
All sidebar widgets (author, share, related posts) now use:
- Unified .sidebar-widget container (no box, only top border via <hr>)
- .sidebar-widget-label with # prefix (bash comment style)
- Monospace, dimmed, small text for consistency
Previously, share widget used a different style (full box with borders).
Author and Related Posts widgets now match the hacker aesthetic.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
5+4 layout
|
|
|
|
Replace generic card + h3 + round buttons with a minimal separator line,
mono comment label, and square btn-share buttons that match the site's
hacker identity. Icons scaled to 22px inside 50x50px touch targets.
Hover/focus states use the site's accent glow pattern.
|
|
|
|
|
|
|
|
Add type check: widget now only renders when .Type == 'articles'
Pages in the 'is' section won't show the related widget.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
Replaces stub implementation with full related content functionality:
- Uses Hugo's .Site.RegularPages.Related API for smart tagging
- Caps at 5 related articles to keep sidebar compact
- Shows 2-line compact card per entry (title + date, excerpt snippet)
- Left border colored by article type (var(--type-<type>))
- Includes empty state message when no related articles found
- Multilingual support via existing i18n keys
- Theme-aware styling via CSS custom properties
The widget shows:
- Line 1: Title (linked) + · Jan 2006 date inline
- Line 2: First ~10 words of excerpt, small font, muted
Previously was a stub with empty placeholder comment.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
Replace div element with actual button element for toast notification close
control. Adds type='button' and aria-label for accessibility. Maintains all
Alpine.js functionality via @click handler.
WCAG 2.1 AA compliance: 1.3.1 Info and Relationships
|
|
- Added id to checkbox: agree-terms
- Added id/for to checkboxes: interest-tech, interest-design
- Added id/for to radio buttons: preference-option-a, preference-option-b
- All 13 form inputs now have matching label associations
- Improves WCAG 2.1 AA compliance (3.3.2 Labels or Instructions)
|
|
Standardize aria-labels across form-components, hamburger-menu, and header
partials to use i18n keys for multilingual support. Modal close buttons now
consistently use the 'closeMenu' i18n key across all three modals, matching
the accessibility pattern used for menu and theme toggle buttons.
- form-components.html: Update modal close buttons (alert, confirm, content)
- hamburger-menu.html: Already has aria-label with i18n
- header.html: Theme toggle and hamburger menu already have aria-labels
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
|
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>
|
|
|
|
Changed header from sticky to fixed positioning and added proper margin offset
(mt-20) to main element to prevent content from being covered. The fixed header
now stays at the top during scroll while content renders below it properly.
- Fixed header: changed from sticky to fixed with left-0 right-0 full width
- Main spacing: added mt-20 margin-top with relative z-10 preserved
- Restored z-index layering for content positioning
Also added Week 3 completion documentation and Week 4 planning files:
- WEEK3-COMPLETION.md: Comprehensive audit of Week 3 implementation
- WEEK3-4-TRANSITION.md: Handoff document with git workflow
- WEEK4-PLAN.md: Full technical roadmap for Week 4 forms & interactions
- PROGRESS-STATUS-WEEK4.txt: Updated cumulative progress tracking
- Updated HANDOFF.md with Week 3 summary and Week 4 readiness
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|