Changelog
All updates and new features
Self-hosted fonts, accessibility & favicon
Replaced Google Fonts CDN with self-hosted woff2 files (latin + latin-ext). Fixed WCAG AA contrast ratios on text-muted, text-secondary, category pills, ad placeholders and footer. Added aria-label to language selector and aria-hidden to ad placeholders. New favicon with branded 'C' on accent background.
Code Quality: Deduplication & Build Fixes
Deduplicated 31 local islands: replaced inline useIsMobile, mkFmt/mkFmtFull, and pct() with shared imports from hooks/useIsMobile and utils/formatters. Fixed 14 unused variables, duplicate ToolSearch synonym key, version mismatch, missing is:inline on JSON-LD scripts. Removed duplicate CSS rule and unused RelatedArticles component.
CSS Optimization, Error Pages & Lazy Loading
Extracted ~550 lines of duplicated CSS into shared stylesheets (blog-cards.css, legal.css, error.css). Custom 404 and 500 error pages with auto-detected browser language and nginx error_page directives. Added loading="lazy" to flag images. Standardized blog card hover via global card-hover class.
UX, Security, Performance & Accessibility Overhaul
Self-hosted Google Fonts for faster loading. All calculator islands now use client:visible for deferred hydration (~200KB JS saved per page). Added Open Graph meta tags, fixed hreflang URLs, enriched JSON-LD. Skip-to-content link, focus-visible inputs, reduced-motion and print media queries. Cookie banner focus trap and aria attributes. ErrorBoundary and aria-live result sections on all 63 calculators. New robots.txt, security.txt, and Nginx security headers config. Custom favicon with site accent color.
GDPR Cookie Consent System
Full GDPR compliance: cookie consent banner with Accept All, Reject All, and Customize options. AdSense now loads only with marketing consent. New legal pages: Privacy Policy, Cookie Policy, and Terms of Service in all 7 languages. Footer updated with legal links.
Nav Fuzzy Search with Autocomplete
New search button in the navigation bar styled as a pill toggle with magnifying glass icon. Opens a centered overlay with backdrop blur. Custom fuzzy scoring engine with Levenshtein distance, multilingual synonyms, and weighted field matching. Searches tools, local tools, and blog posts. Keyboard navigation and highlighted matches.
Full i18n for All Calculator Islands
All calculator labels, stat cards, result boxes and legend texts are now fully translated in all 6 non-English languages. Over 1,000 new translation keys added. Fixed remaining hardcoded strings in result-sub elements. Stat cards and result boxes now use flexbox column layout for better spacing.
UI Polish — Flags, Icons & Layout
Language selector reordered by global importance. Country flags replaced with SVG images in circular style on both home and local pages. Removed emoji icons from section headings. Logo icon removed from navbar. Heading sizes standardized to 1.25rem. Language selector border-radius set to 8px.
i18n for Local Tool Islands
All 27 country-specific calculator islands (IT, DE, FR, NL, ES, PT) now use the t() translation system instead of hardcoded native-language labels. Cross-language translations added so every tool displays correctly in all 7 supported languages.
Favorites System
Mark tools as favorites with a heart button on each tool page. Favorites are saved in your browser and appear in a dedicated section at the top of the homepage, with quick removal via an × button.
Related Articles on Tool Pages
Tool pages now show up to 3 related blog articles, creating bidirectional links between tools and content for better navigation and SEO.
Blog System with 7-Language Support
Full blog with articles covering mortgages, investments, crypto, taxes, and more. Each article links to relevant tools via tags.
Initial Launch — 50+ Financial Tools
Launch of capops.io with 30+ universal calculators and 25+ country-specific tools covering Italy, UK, Germany, France, Netherlands, Spain, Portugal and Brazil. 686 pages across 7 languages.