diff --git a/astro.config.mjs b/astro.config.mjs index a8e4c69..2a9aad3 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -159,6 +159,10 @@ export default defineConfig({ // pages that exist in multiple locales. Keys are URL slugs, values are the // hreflang codes — so /zh/ is advertised as zh-Hans. sitemap({ + // Keep noindex pages out of the sitemap — advertising a URL we then tell + // crawlers to ignore is a contradictory signal. /brand/wallpaper/ is an + // internal brand tool, not a page we want indexed. + filter: (page) => !page.includes('/brand/wallpaper/'), i18n: { defaultLocale: 'en', locales: { diff --git a/src/components/Footer.astro b/src/components/Footer.astro index fa1d288..a21441b 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -39,6 +39,11 @@ const groups = [ links: [ { href: localeHref('/blog/'), label: ui.navBlog }, { href: localeHref('/about/'), label: ui.footerAbout }, + // English-only, deliberately: the wallpaper page itself isn't translated, + // so it's offered where the reader is already reading English rather than + // pointing a localized footer at an English destination. That also keeps + // it from costing a ninth translation of a label for a brand extra. + ...(lang === 'en' ? [{ href: '/brand/wallpaper/', label: 'Wallpaper' }] : []), ], }, ]; diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro index 4812fe7..91debd1 100644 --- a/src/layouts/Base.astro +++ b/src/layouts/Base.astro @@ -18,6 +18,12 @@ interface Props { ogImageAlt?: string; ogType?: 'website' | 'article'; noindex?: boolean; + /** + * Mount the shared animated waveform backdrop. Off only for pages that draw + * their own full-bleed field (the /brand/wallpaper/ live wallpaper), so two + * canvases never animate at once. + */ + siteBackground?: boolean; article?: { publishedTime?: Date; modifiedTime?: Date; @@ -33,6 +39,7 @@ const { ogImageAlt = 'WaveKat — open-source AI voice tools for small business', ogType = 'website', noindex = false, + siteBackground = true, article, } = Astro.props; @@ -175,7 +182,7 @@ const orgSchema = { - + {siteBackground && } {bannerOffers.length > 0 && (
+
+ +

WaveKat live wallpaper

+ + +
+ + +
+ + + + + + + +
+
+ + +
+
+
+ { + presets.map((p) => ( + + )) + } +
+ + + + + + + + +
+

F fullscreen · H hide controls · C clock · + S save PNG · 17 presets

+
+
+ + + + + + +