Sobre fica só no menu Biblioteca (desktop), em todos os idiomas. A página
mostra as ferramentas atuais, os seis idiomas e os dados novos do autor.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Com o item extra, a nav encolhia e os rótulos quebravam com hífen
("Hard-ware"). O livro segue acessível pelo menu móvel e pelas demais
chamadas do site. O .nav-link ganha white-space: nowrap para não voltar
a quebrar se o menu apertar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012kaT5kEbjo5xuMk2DiBLMM
Na página de série a faixa passa a ficar entre o bloco de foto/diagrama de pinos
e as especificações. No celular o botão ocupa a largura do cartão e as setas ficam
numa linha própria; testado de 320 a 1366 px sem nada ultrapassar a área.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sorteia uma placa dos chips da página, com preferência pelas de loja oficial, e
troca só pelas setas, com transição suave. Usa o link de afiliado do idioma
(rel=sponsored) e some quando o chip não tem placa. Vai nas páginas de série, na
comparação e nos dois modos de resultado do seletor.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
O botão do AliExpress passa a ficar no rodapé do card, alinhado entre os cards.
O link usa a coluna Link_<idioma> da planilha (en, es, fr, de, zh-CN) e cai no
Link (Brasil) quando ela está vazia. Colunas de link não viram filtro, e a API
lê A1:AZ1000.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Add full message catalogs and content for French (fr) and German (de)
- Implement ASCII canonical slugs for French and German routes
- Add language-specific search endpoints (/api/busca/fr, /api/busca/de)
- Configure strict 404 responses for /fr/livro and /de/livro
- Localize SEO, OpenGraph (fr_FR, de_DE), Twitter and JSON-LD schemas
- Add localized code example comments across 14 examples for fr and de
- Enable 'fr' and 'de' in ENABLED_LOCALES with root negotiation and redirect
- Extend test suite in check-i18n, smoke-imagem and verifica-vazamentos
Co-Authored-By: Antigravity <noreply@google.com>
Complete implementation of Spanish (es-419) language support:
- Canonical catalogs and data: messages/es.json, data/es/**, lib/data/es/**, public/exemplos/es/**
- Canonical slugs: /es/series, /es/catalogo, /es/comparacion, /es/componentes, /es/diagnostico, /es/frameworks, /es/glosario, /es/selector, /es/acerca
- Dedicated search index at /api/busca/es with Spanish accent normalization
- Strict exclusion of book references in Spanish routes and catalogs
- Language selector and root negotiation with es active (ENABLED_LOCALES = ['pt', 'en', 'es'])
- Extended verification suite: check-i18n, smoke-imagem and verifica-vazamentos
Co-Authored-By: Antigravity <noreply@google.com>
- Pass currentLocale to jsonLd.serie and jsonLd.framework to ensure English headline, name, and properties
- Localize JSON-LD @id anchors to #article, #about, #glossary, #organization, and #author for English routes
- Pass isEn prop to PageHero across all internal pages to prevent breadcrumbs from defaulting to Portuguese
- Add scripts/verifica-vazamentos.py to smoke-imagem.sh to permanently test all 36 English URLs (visible text and ld+json)
Co-Authored-By: Antigravity <noreply@google.com>
- Localize skip-to-content accessibility link and breadcrumb navigation
- Convert section layouts to dynamic generateMetadata with English titles, descriptions, and structured data
- Eliminate mixed language expressions and translate remaining SoC connection pin warnings and descriptions
- Translate component registry items, categories, tags, and IDF Component Manager guide
- Add strict identical string verification to scripts/check-i18n.mjs with technical allowlist
Co-Authored-By: Antigravity <noreply@google.com>
- Translate content to English across messages/en.json, data/en, lib/data/en, and public/exemplos/en
- Implement localized routing, slugs, and language negotiation with fallback to en
- Build dedicated search index for English with strict book exclusion
- Update components and pages to dynamically render localized strings and datasets
- Verify full structural parity and exact 1:1 match on Portuguese pages via comparator
Co-Authored-By: Antigravity <noreply@google.com>
- Add ENABLED_LOCALES configuration in i18n/links.js (currently ["pt"])
- Redirect inactive locale prefixes to /pt via 307 in middleware.js
- Restrict root locale negotiation to active locales with fallback to pt
- Hide LanguageSelector when only one locale is enabled
- Generate sitemap, hreflang alternates, and og:locale only for active locales
- Generate static SSG pages only for active locales in build
- Adapt check:i18n and smoke-imagem.sh to validate active vs inactive locales
Co-Authored-By: Antigravity <noreply@google.com>
- Move getLocalizedHref, LOCALES, and CANONICAL_ROUTES to i18n/links.js to resolve SSR 500 error on home
- Import from @/i18n/links in page.jsx, Header.jsx, Footer.jsx, and LanguageSelector.jsx
- Restore exact production footer texts, author links, and SVG icons in pt
- Verify 100% visible text parity on all pt pages against production with cmp-pt.py
Co-Authored-By: Antigravity <noreply@google.com>
Implement Phase 1 of i18n spec:
- Configure next-intl with 6 locales (pt, en, es, fr, de, zh-CN) and pathnames
- Move routes to app/[locale] structure with localized layouts and metadata
- Add middleware for root language negotiation (307), legacy redirects (308), and 404 for non-pt book
- Implement language selector dropdown in header with cookie persistence
- Add system typography rules for zh-CN and word-break/hyphenation for de/fr
Co-Authored-By: Antigravity <noreply@google.com>
- Logo em duas cores (teal + cobre), inline no cabeçalho e rodapé para
seguir o tema do site; SVGs estáticos com prefers-color-scheme.
- scripts/generate-favicons.mjs passa a gerar favicons, ícones de app
(maskable), site.webmanifest e a imagem Open Graph 1200x630.
- Manifest com fundo/tema obsidiana e lang pt-BR.
Claude-Session: https://claude.ai/code/session_016W1xmizFcmXLrmabSvfSuc
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
* feat(design): redesign das páginas internas no novo design system
Padroniza todas as páginas e componentes internos nos tokens e primitivos
de app/globals.css, com contraste AAA (7:1) nos dois temas e alvos de toque
de 44px.
- Páginas reescritas: glossário, séries, série, seletor, comparador,
diagnóstico, catálogo, component registry, frameworks, framework, sobre
e a nova 404.
- Componentes: PageHero e SectionHead novos; BoardCard, CodeExample,
PinRestrictions, SeriesTabMenu e ConnectionsDiagram refeitos, com abas
e diálogo acessíveis.
- Remove emojis, cores avulsas por série, caixa alta com tracking, texto
menor que 12px e os pares slate-*/dark:*.
- Comparador: "mostrar só as diferenças" e leitura de ?chips=.
- Corrige overflow em 320/390px e ajusta accent/copper do tema claro
para fechar 7:1.
- scripts/auditar-temas.mjs passa a travar paleta crua, dark:, texto
pequeno, emoji e contraste dos tokens.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016W1xmizFcmXLrmabSvfSuc
* ci: roda lint, auditorias de design e build em cada PR
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016W1xmizFcmXLrmabSvfSuc
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
- Implemented robots.txt to guide search engine indexing.
- Created layout components for the selector and series pages to manage metadata.
- Developed a dynamic sitemap generator based on existing series and frameworks data.
- Centralized SEO information in a new lib/seo.js file to maintain consistency across the site.
- Added SVG logos for branding.
- Introduced DESIGN.md to outline rules for maintaining consistent light and dark themes, including color scales, symmetry rules, and contrast requirements.
- Added PinRestrictions component to display pin usage restrictions based on series data, ensuring accurate representation of pin functionalities.
- Implemented auditing script (auditar-temas.mjs) to check for theme consistency issues, including nonexistent tones, inverted pairs, low contrast, and inline fixed colors.