Danilo M. [Tue, 28 Apr 2026 17:06:26 +0000 (19:06 +0200)]
fix: convert raw HTML to markdown and fix deprecated HTML entities
Content fixes:
- speak-to-me: Convert blockquote to markdown, decode entities
- wp_patcher: Convert pre blocks to fenced code, markdown blockquote
- manage-your-passwords: Convert a tags and blockquotes to markdown, add acronym shortcode, decode entities
- playing-with-colors: Convert a tag to markdown
- pure-nerdgasm: Mark as draft (YouTube embed lost in export)
- r-i-p-steve-jobs: Replace figure with image shortcode
- responsibility: Convert blockquote to markdown
Danilo M. [Tue, 28 Apr 2026 08:21:14 +0000 (10:21 +0200)]
Rewrite about page: present current identity and values
Replace generic 2009 bio with focused introduction covering cybersecurity
training, AI interest, web dev background, GNU/Linux and Slackware philosophy,
privacy commitment, and A11y standards. Added closing CTA to contact or browse
articles. Updated both EN and IT versions.
Danilo M. [Wed, 22 Apr 2026 10:17:07 +0000 (12:17 +0200)]
refactor: convert repository from section (_index.md) to plain page (index.md)
Repository is a simple page, not a section. Renamed _index.md to index.md in both EN and IT, removed type = "repository" front matter (Hugo resolves layouts/repository/single.html automatically by section name), and renamed list.html to single.html. Visual output unchanged.
Danilo M. [Wed, 22 Apr 2026 10:07:33 +0000 (12:07 +0200)]
fix: repository list page now uses content-grid for glow/border consistency
Replaced ad-hoc max-w-5xl bg-bg wrapper with the standard max-w-7xl article + content-grid div pattern used by all other pages (singles, is/list). content-grid CSS class provides the soft purple glow, border, and background that block the matrix rain canvas.
Danilo M. [Wed, 22 Apr 2026 10:03:52 +0000 (12:03 +0200)]
fix: normalize repository list page width to match other list pages
Changed repository/list.html from max-w-4xl decorative box to max-w-5xl plain wrapper for aesthetic consistency with other pages without sidebars like /articles/. Removed border glow-accent rounded-lg styling and added bg-bg to wrapper to prevent matrix rain showing through card gutters.
Danilo M. [Wed, 22 Apr 2026 09:51:45 +0000 (11:51 +0200)]
fix: add breadcrumb to /is/ and /repository/ list pages in both languages
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.
Danilo M. [Wed, 22 Apr 2026 09:48:19 +0000 (11:48 +0200)]
fix: breadcrumb uses actual page ancestors instead of hardcoded articles path
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.
Danilo M. [Wed, 22 Apr 2026 09:40:47 +0000 (11:40 +0200)]
feat: add active state highlight to desktop nav links
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.
Danilo M. [Wed, 22 Apr 2026 09:19:03 +0000 (11:19 +0200)]
feat: publish a11y audit pages and link wcag badge
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.
Danilo M. [Wed, 22 Apr 2026 08:45:03 +0000 (10:45 +0200)]
feat: add Breadcrumb JSON-LD structured data to single pages
- 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
Danilo M. [Wed, 22 Apr 2026 08:34:28 +0000 (10:34 +0200)]
style: add solid background to tag-cloud links for readability on canvas
Tag cloud links now use var(--bg2) solid background instead of transparent,
improving readability against the matrix rain canvas on homepage. Hover state
uses rgba(accent-rgb, 0.1) for consistency with theming standard.
Danilo M. [Tue, 21 Apr 2026 21:40:09 +0000 (23:40 +0200)]
fix: correct padding calculation and remove flex classes in spiral layout
- 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
Danilo M. [Tue, 21 Apr 2026 21:12:53 +0000 (23:12 +0200)]
build: regenerate CSS and fix tag cloud color rendering
- 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
Danilo M. [Tue, 21 Apr 2026 20:56:01 +0000 (22:56 +0200)]
feat: Add reusable tag cloud partial with A11y and dark/light mode support
- 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
Danilo M. [Tue, 21 Apr 2026 16:46:11 +0000 (18:46 +0200)]
fix: improve badge text color contrast for WCAG AA compliance
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
Danilo M. [Tue, 21 Apr 2026 16:28:55 +0000 (18:28 +0200)]
fix: hide post-type badge and accents on static pages
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.
Danilo M. [Tue, 21 Apr 2026 13:05:45 +0000 (15:05 +0200)]
feat: Add SEO meta tags — canonical and hreflang alternates
- 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
Danilo M. [Tue, 21 Apr 2026 10:09:53 +0000 (12:09 +0200)]
fix: use dedicated article-card partial for taxonomy pages
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.
Danilo M. [Tue, 21 Apr 2026 10:06:34 +0000 (12:06 +0200)]
revert: restore taxonomy templates to card-stack layout with post-count badge
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.
Danilo M. [Tue, 21 Apr 2026 10:00:42 +0000 (12:00 +0200)]
fix: correct mobile connector/node geometry accounting for ol padding
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.
- 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
Danilo M. [Mon, 20 Apr 2026 19:55:11 +0000 (21:55 +0200)]
fix: resolve mobile viewport overflow on article pages
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.
Danilo M. [Mon, 20 Apr 2026 12:48:34 +0000 (14:48 +0200)]
fix: sync footer styling and i18n translations
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).
Danilo M. [Mon, 20 Apr 2026 12:35:53 +0000 (14:35 +0200)]
fix: make prev-next navigation responsive on mobile
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.
Danilo M. [Mon, 20 Apr 2026 12:12:20 +0000 (14:12 +0200)]
fix: make search index language-aware
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.