Danilo M. [Fri, 17 Apr 2026 09:54:12 +0000 (11:54 +0200)]
fix: use client-side language detection with redirect rules for 404 navigation
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.
Danilo M. [Fri, 17 Apr 2026 09:49:24 +0000 (11:49 +0200)]
fix: use Hugo content-based 404 pages for proper multilingual support
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.
Danilo M. [Fri, 17 Apr 2026 09:47:04 +0000 (11:47 +0200)]
fix: use client-side language detection for 404 navigation links
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.
Danilo M. [Fri, 17 Apr 2026 09:44:47 +0000 (11:44 +0200)]
fix: detect language from permalink instead of .Lang in 404 template
Hugo's .Lang is unreliable in 404 context. Changed to detect language from
the request permalink (checking for /it/ prefix) to properly route Italian
404 pages to Italian content sections.
Danilo M. [Fri, 17 Apr 2026 09:43:08 +0000 (11:43 +0200)]
fix: use language-aware URL construction for 404 navigation links
Updated home, articles, and contact links to properly handle IT/EN language
routing by checking .Lang and building URLs without BaseURL prefix, matching
the pattern used in header.html
Danilo M. [Fri, 17 Apr 2026 09:41:04 +0000 (11:41 +0200)]
fix: easter egg modal visibility by removing conflicting hidden class
Changed modal display from static 'hidden' class to conditional binding that
only applies 'hidden' when showEasterEgg is false. This prevents Tailwind's
display: none !important from overriding the flex layout binding.
Danilo M. [Fri, 17 Apr 2026 09:22:02 +0000 (11:22 +0200)]
fix: improve styling and functionality for 404 and Repository pages
- 404.html: Move x-data directive to wrap entire content including modal, fixing Easter egg button click functionality. Add border, glow, and bg styling to main container.
- repository/list.html: Add border, glow, rounded, and bg styling to article container for consistency with other pages.
- Both pages now have consistent visual styling with borders, glows, and proper background colors.
Danilo M. [Fri, 17 Apr 2026 09:18:19 +0000 (11:18 +0200)]
Fix styling issues on 404 and Repository pages
- Add proper container styling (mx-auto, px-4, py-12) to main content wrappers matching single.html pattern
- Replace gray color hardcodes with theme-aware CSS variables:
- bg-gray-50/gray-900 → bg-bg/50 with hover:bg-bg/70 for article cards
- text-gray-600/gray-400 → text-text-dim for text
- border-gray-300/gray-700 → border-border for borders
- bg-gray-200/gray-800 → bg-border/20 for tags
- Fixes color inconsistency in both light and dark modes
- Ensures 404 latest articles and Repository tags use theme colors instead of fixed gray
All comprehensive tests pass:
- Repository page renders title, subtitle, and all content sections
- Quick Start, Installation, Usage, and Available Packages sections display correctly
- GitHub SlackBuild repository cards display in responsive grid (1-2-3 columns)
- All 3 example repositories render with correct titles, descriptions, tags, and GitHub links
- Code blocks are keyboard accessible with proper syntax highlighting
- Dark/light mode supports with proper Tailwind dark: classes
- Images lazy-load with proper alt text
- Responsive design tested: mobile (320px), tablet (768px), desktop (1200px)
- Italian and English translations working correctly
- Keyboard navigation fully functional (Tab, Enter, external link security attributes)
Layout fix: Changed repository layout from single.html to list.html to properly render _index.md section pages
Danilo M. [Fri, 17 Apr 2026 07:27:53 +0000 (09:27 +0200)]
feat: verify semantic HTML - replace div with button in toast-close
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
Danilo M. [Fri, 17 Apr 2026 07:27:05 +0000 (09:27 +0200)]
feat: ensure all form inputs have associated labels (for/id attributes)
- 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)
Danilo M. [Fri, 17 Apr 2026 07:26:26 +0000 (09:26 +0200)]
feat: ensure i18n-based aria-labels on all icon-only buttons
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
Danilo M. [Fri, 17 Apr 2026 07:25:33 +0000 (09:25 +0200)]
feat: enhance modal focus trap with JavaScript and ARIA attributes
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
Danilo M. [Fri, 17 Apr 2026 07:24:39 +0000 (09:24 +0200)]
feat: add prefers-reduced-motion support (disable animations when motion-reduced)
Adds a CSS media query that respects user motion preferences by:
- Disabling all animations and transitions when prefers-reduced-motion: reduce
- Using !important to override all animation/transition declarations
- Ensuring focus-visible outline remains visible for keyboard navigation
This improves accessibility for users with motion sensitivity.
Danilo M. [Thu, 16 Apr 2026 14:49:36 +0000 (16:49 +0200)]
fix: header sticky positioning regression
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
Danilo M. [Thu, 16 Apr 2026 14:29:11 +0000 (16:29 +0200)]
fix: logo link now respects current language
The header logo link was hardcoded to '/' which always returned to the
English homepage when clicked from Italian pages. Now uses language-aware
routing: IT pages link to /it/, EN pages link to /
Danilo M. [Thu, 16 Apr 2026 14:23:50 +0000 (16:23 +0200)]
feat: make breadcrumb navigation multilingual with proper links
- Added language-aware breadcrumb links (IT uses /it/ subdir, EN uses root)
- Added 'home' translation key to both i18n files
- Breadcrumb now displays translated labels and correct URLs for each language
Danilo M. [Thu, 16 Apr 2026 14:21:15 +0000 (16:21 +0200)]
fix: breadcrumb navigation now renders in article pages
The breadcrumb partial was being called but producing no output. Investigation
revealed the issue: Hugo was using layouts/_default/single.html instead of
layouts/articles/single.html. Added the breadcrumb partial call to the actual
layout being used (_default/single.html), fixing the missing navigation.
Danilo M. [Thu, 16 Apr 2026 14:01:56 +0000 (16:01 +0200)]
fix: add x-cloak to prevent menu flash on page load
- Add [x-cloak] { display: none } CSS rule
- Add x-cloak attribute to menu overlay div
- This hides the menu until Alpine.js initializes
- Prevents the menu from appearing briefly on page refresh/load
- Rebuild CSS: main.min.css updated
Danilo M. [Thu, 16 Apr 2026 13:59:51 +0000 (15:59 +0200)]
fix: prevent menu flicker when navigating to new page
- Add beforeunload event listener to close menu before page navigation
- This prevents the menu from briefly appearing on the new page
- Menu state is explicitly set to false before unload
- Rebuild CSS: main.min.css updated
Danilo M. [Thu, 16 Apr 2026 13:51:55 +0000 (15:51 +0200)]
fix: hamburger menu click handler and horizontal scroll issues
- Improve hamburger menu JS with better error handling and console warnings
- Add preventDefault() to button click handlers for reliability
- Handle document ready state check (in case script runs before DOMContentLoaded)
- Add overflow-x-hidden to html and body to prevent horizontal scrolling on mobile
- Rebuild CSS: main.min.css updated
Danilo M. [Thu, 16 Apr 2026 13:29:38 +0000 (15:29 +0200)]
feat: add breadcrumb navigation component
- Create breadcrumb.html partial with Home > Articles > Title structure
- Support both English and Italian language versions
- Add breadcrumb and breadcrumb-separator CSS classes
- Integrate breadcrumb into article detail pages
- Rebuild CSS: main.min.css updated
Danilo M. [Thu, 16 Apr 2026 12:52:16 +0000 (14:52 +0200)]
feat: import 36 articles with assets and create supporting shortcodes
- Migrate all English articles from old site to content/en/articles/
- Organize article assets in static/uppies/year/month/ structure
- Create Italian article stubs with draft=true status
- Add 7 new shortcodes: strike, em, dropcap, figure, highlight, img, youtube, gal-img
- Update article image paths to reference /uppies/ locations
- All 36 articles now build successfully without errors
Danilo M. [Thu, 16 Apr 2026 10:54:14 +0000 (12:54 +0200)]
feat: i18n singular/plural post count on taxonomy list
Replace hardcoded "Posts: N" with i18n "postCount" key using Hugo's
pluralization support (one/other forms). Renders "1 post" or "N posts"
in English, "1 articolo" or "N articoli" in Italian.
Danilo M. [Thu, 16 Apr 2026 10:44:04 +0000 (12:44 +0200)]
fix: restore articles to taxonomy pages and fix i18n headings
Fixed two critical bugs in taxonomy layouts:
1. Pinned/unpinned filter was silently hiding all articles. The filter
only matched pages that explicitly set pinned=false, dropping all
articles that omitted the parameter (most articles have nil, not false).
Added the nil/empty fallback from _default/list.html.
2. Missing i18n keys caused blank headings on some taxonomy pages:
- Added 'tag' key for /tags/term/ pages
- Added 'categories' key for /categories/ list page
3. Harmonized spacing with main article list for visual consistency:
Changed from space-y-2 max-w-2xl to space-y-6 max-w-3xl
Danilo M. [Thu, 16 Apr 2026 09:11:18 +0000 (11:11 +0200)]
Add padding and glow effects to content sections
- Add 2rem padding, border, and soft glow to single page content grid
- Add matching glow effect to article list items with full-opacity border
- Uses theme-aware CSS variables for consistent styling across dark/light modes
- 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
Danilo M. [Wed, 15 Apr 2026 21:39:11 +0000 (23:39 +0200)]
Implement article type colors, reading progress bar, and optimize layout
- 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
Danilo M. [Wed, 15 Apr 2026 20:56:55 +0000 (22:56 +0200)]
Document video, quote, and actions shortcodes in SHORTCODES.md
- Add comprehensive Video shortcode documentation with parameters and examples
- Document page bundle video resolution for automatic URL generation
- Add browser compatibility notes for WebM, MP4, and Ogg formats
- Document Quote shortcode with source attribution and optional links
- Document Actions shortcode for download buttons and CTAs
- Update Future Shortcodes section to reflect implemented features