From ac3de3e14226ab0586093b31db70c49200847d25 Mon Sep 17 00:00:00 2001 From: Santhosh Janardhanan Date: Tue, 10 Feb 2026 15:59:03 -0500 Subject: [PATCH] lazy-loading done --- .../2026-02-10-lazy-loading/.openspec.yaml | 2 + .../archive/2026-02-10-lazy-loading/design.md | 74 ++++++++++++ .../2026-02-10-lazy-loading/proposal.md | 27 +++++ .../specs/card-layout-system/spec.md | 35 ++++++ .../specs/image-lazy-loading/spec.md | 50 ++++++++ .../archive/2026-02-10-lazy-loading/tasks.md | 34 ++++++ .../changes/reduce-bounce-rate/.openspec.yaml | 2 + openspec/changes/reduce-bounce-rate/design.md | 107 ++++++++++++++++++ .../changes/reduce-bounce-rate/proposal.md | 36 ++++++ .../specs/analytics-umami/spec.md | 51 +++++++++ .../specs/card-layout-system/spec.md | 45 ++++++++ .../specs/conversion-ctas/spec.md | 36 ++++++ .../interaction-tracking-taxonomy/spec.md | 88 ++++++++++++++ .../specs/media-modal/spec.md | 86 ++++++++++++++ openspec/changes/reduce-bounce-rate/tasks.md | 51 +++++++++ openspec/specs/card-layout-system/spec.md | 9 +- openspec/specs/image-lazy-loading/spec.md | 54 +++++++++ site/.gitignore | 2 + site/public/styles/global.css | 66 ++++++++++- site/public/sw.js | 21 +++- site/src/components/StandardCard.astro | 8 +- site/src/layouts/BaseLayout.astro | 25 ++++ site/src/pages/blog/page/[slug].astro | 15 ++- site/src/pages/blog/post/[slug].astro | 15 ++- 24 files changed, 923 insertions(+), 16 deletions(-) create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/.openspec.yaml create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/design.md create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/proposal.md create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/specs/card-layout-system/spec.md create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/specs/image-lazy-loading/spec.md create mode 100644 openspec/changes/archive/2026-02-10-lazy-loading/tasks.md create mode 100644 openspec/changes/reduce-bounce-rate/.openspec.yaml create mode 100644 openspec/changes/reduce-bounce-rate/design.md create mode 100644 openspec/changes/reduce-bounce-rate/proposal.md create mode 100644 openspec/changes/reduce-bounce-rate/specs/analytics-umami/spec.md create mode 100644 openspec/changes/reduce-bounce-rate/specs/card-layout-system/spec.md create mode 100644 openspec/changes/reduce-bounce-rate/specs/conversion-ctas/spec.md create mode 100644 openspec/changes/reduce-bounce-rate/specs/interaction-tracking-taxonomy/spec.md create mode 100644 openspec/changes/reduce-bounce-rate/specs/media-modal/spec.md create mode 100644 openspec/changes/reduce-bounce-rate/tasks.md create mode 100644 openspec/specs/image-lazy-loading/spec.md diff --git a/openspec/changes/archive/2026-02-10-lazy-loading/.openspec.yaml b/openspec/changes/archive/2026-02-10-lazy-loading/.openspec.yaml new file mode 100644 index 0000000..70eb9e0 --- /dev/null +++ b/openspec/changes/archive/2026-02-10-lazy-loading/.openspec.yaml @@ -0,0 +1,2 @@ +schema: spec-driven +created: 2026-02-10 diff --git a/openspec/changes/archive/2026-02-10-lazy-loading/design.md b/openspec/changes/archive/2026-02-10-lazy-loading/design.md new file mode 100644 index 0000000..d0bb1ac --- /dev/null +++ b/openspec/changes/archive/2026-02-10-lazy-loading/design.md @@ -0,0 +1,74 @@ +## Context + +The site is a static Astro SSG with no framework islands — all client-side interactivity uses vanilla JS via ` + + diff --git a/site/src/pages/blog/page/[slug].astro b/site/src/pages/blog/page/[slug].astro index 8745226..371dbb9 100644 --- a/site/src/pages/blog/page/[slug].astro +++ b/site/src/pages/blog/page/[slug].astro @@ -45,12 +45,15 @@ const metaDescription = (page.excerpt || "").slice(0, 160); {page.featuredImageUrl ? ( - +
+ +
) : null}
diff --git a/site/src/pages/blog/post/[slug].astro b/site/src/pages/blog/post/[slug].astro index 0cc83d5..e7824fc 100644 --- a/site/src/pages/blog/post/[slug].astro +++ b/site/src/pages/blog/post/[slug].astro @@ -48,12 +48,15 @@ const metaDescription = (post.excerpt || "").slice(0, 160); {new Date(post.publishedAt).toLocaleDateString()}

{post.featuredImageUrl ? ( - +
+ +
) : null}