Skip to content

EK-2611: load the footer credit from EkLine's hosted script (2.7.0) - #25

Merged
puneet-ekline merged 1 commit into
mainfrom
pa-claude/EK-2611-hosted-footer-credit
Oct 5, 2026
Merged

puneet-ekline merged 1 commit into
mainfrom
pa-claude/EK-2611-hosted-footer-credit

Conversation

@puneet-ekline

@puneet-ekline puneet-ekline commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Jira: EK-2611. Related: ekline-io/ekline-app#3447 (EK-2610), which changes the credit's wording.

What this changes

The footer had the credit's words and mark written into it. A change to EkLine's credit therefore needed a template release, and an edit in every site built from the template. The footer now renders <ekline-credit> and loads https://ekline.io/v1/credit.js, the way docs.ekline.io does. It shows whatever wording that script serves.

  • Both footers change. packages/template/src/components/CustomFooter.astro and apps/docs/src/components/CustomFooter.astro. They were identical and stay identical.
  • The frame is unchanged. The divider, the spacing above it and the text colour are the same as before.
  • Contrast is kept. The hosted component dims itself to 85%. 1.0.0 removed exactly that from this footer because the text measured under 4.5:1. The footer sets the component's credit part back to full opacity. Measured in Chrome with the default palette: 4.76:1 in light, 6.78:1 in dark.
  • ekline-mark.svg is deleted from both projects. Only the footer used it.
  • Release 2.7.0. The changelog entry tells adopters what the change adds to their site. One README row says where the credit comes from.

What sites built from the template get

  • One request to ekline.io on each page load, for a script of 4,059 bytes (1,947 compressed). Production sets no cookie on it, and the script contains no fetch, beacon, cookie or storage call.
  • The credit needs JavaScript. With the script blocked, only the divider remains.
  • A site with a Content-Security-Policy has to allow https://ekline.io in script-src. The template sets no policy.
  • The script is EkLine's and can change in place. It is loaded without an integrity hash for that reason.

What it looks like

"EkLine" is semibold (was regular), and the mark is 13px (was 16px). The footer is 5px shorter.

The screenshots still say "Maintained by EkLine". That is expected. The footer shows what production credit.js serves, and that changes to "Powered by EkLine" when ekline-app#3447 is deployed. Nothing in this repository changes then.

Not changed on purpose

  • README.md line 6 and packages/template/README.md line 205 say who maintains the template. They are not the credit.
  • package-lock.json keeps "version": "2.5.0". The last two releases did not touch it either.
  • No test asserts that the credit is present. A site that removed the credit is a normal case, and such a test would fail there.

Testing

  • npm run check:shipped passes.
  • npm run check: 0 errors in packages/template and in apps/docs.
  • npm test in packages/template: 183 passed, 0 failed, 13 skipped.
  • npm test in apps/docs: 23 passed, 0 failed, 12 skipped.
  • npm run test:visual in packages/template on macOS: 87 passed, 25 skipped. The only screenshot baseline is of the sidebar, so the footer is not in it.
  • In a browser against the built template:
    • the element gets a shadow root and renders, in light and dark mode and at 375px wide, with no horizontal overflow;
    • the link goes to https://ekline.io/;
    • after a client-side navigation the credit renders on the new page, with one element and one script tag in the document;
    • the console has no errors.
  • The compiled CSS contains ekline-credit:where(.astro-…)::part(credit){opacity:1}, and the computed opacity of the part is 1.

Not tested: a real Content-Security-Policy that blocks the script. The blocked state was simulated by leaving the element undefined.

Follow-up outside this repository

ekline-app/ekline-docs/CLAUDE.md lists CustomFooter.astro as a file that differs from the template on purpose, because ekline-docs already used the hosted script. After this merges and ekline-docs is next synced, that row should be reviewed.

Screenshots

Before is the live demo site. After is this branch, built locally.

Before: the footer with the words written into the template

After: the hosted credit in light mode

After: the hosted credit in dark mode

After: the hosted credit at phone width

🤖 Generated with Claude Code

The footer had the credit's words and mark written into it, so a change to
EkLine's credit needed a template release and an edit in every site built
from the template. The footer now renders <ekline-credit> and loads
https://ekline.io/v1/credit.js, the way docs.ekline.io does. It shows
whatever wording that script serves.

- Both copies of CustomFooter.astro change, in packages/template and in
  apps/docs. They stay identical.
- The divider, the spacing above it and the text colour are unchanged.
- The hosted component dims itself to 85%. 1.0.0 removed that from this
  footer because the text fell under 4.5:1, so the footer sets the
  component's `credit` part back to full opacity. Measured with the
  default palette: 4.76:1 in light, 6.78:1 in dark.
- ekline-mark.svg is deleted from both projects. Only the footer used it.
- The changelog entry tells adopters what this adds to their site: one
  request to ekline.io per page load, the need for JavaScript, and what a
  Content-Security-Policy has to allow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
potluck-docs Ready Ready Preview Oct 5, 2026 10:51pm UTC
potluck-docs-demo Ready Ready Preview Oct 5, 2026 10:51pm UTC

Request Review

@puneet-ekline

Copy link
Copy Markdown
Contributor Author

Preview verification

Checked on the two Vercel previews for commit 3fa5034. Both previews need a Vercel sign-in, so I read the served HTML and CSS through Vercel's API. I did not look at them in a browser. The browser checks in the description were done on a local build of this branch.

Check Preview Result
/guides/example/ returns 200 and contains <ekline-credit> inside .ekline-credit-wrapper potluck-docs-demo (the template) Pass
The page loads https://ekline.io/v1/credit.js with async potluck-docs-demo Pass
None of the old markup (ekline-mark) is left in the page or its CSS potluck-docs-demo Pass
The served CSS has ekline-credit:where(…)::part(credit){opacity:1} potluck-docs-demo Pass
The served CSS keeps the divider, spacing and colour on the wrapper potluck-docs-demo Pass
/ returns 200 and contains the same element and script potluck-docs (the hosted docs) Pass

Not checked on a preview: how the credit renders. That needs a browser session signed in to Vercel. The markup and CSS served here are the same as in the local build that was rendered.

After merge, look at the footer on https://potluck-demo.ekline.io and https://potluck.ekline.io. It shows "Maintained by EkLine" until ekline-io/ekline-app#3447 is deployed, and "Powered by EkLine" after.

@puneet-ekline
puneet-ekline merged commit 3d97709 into main Oct 5, 2026
15 checks passed

This branch was successfully deployed

2 active deployments
Preview – potluck-docs-demo — 3fa50345 Deployed Oct 5, 2026 by vercel[bot]
Preview – potluck-docs — 3fa50345 Deployed Oct 5, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant