From 00b0b755aef5a2feec8c38db560053cd675e718c Mon Sep 17 00:00:00 2001
From: Fatih
We use cookies to analyse site traffic and improve your experience. - See our Privacy Policy for details. + See our Privacy Policy for details.
{posts.length} posts
++ {engineData.desc} + {engineData.not && Where it stops: {engineData.not}} +
+ ) + } ++ {name} support in Studio → + + All posts +
+{p.privacyNote}
The site's own cookie and analytics handling is a separate matter, covered in the - privacy policy. Where those guarantees stop is set out in the - security model. + privacy policy. Where those guarantees stop is set out in the + security model.
diff --git a/src/pages/compare.astro b/src/pages/compare.astro index 2824447..3291232 100644 --- a/src/pages/compare.astro +++ b/src/pages/compare.astro @@ -104,7 +104,7 @@ const schema = [{closing.body}
The editor itself is MIT and free, so the way to settle this is to run it rather than read about it. - Get started in about ten seconds → · Get started in about ten seconds → · Try it with no install →
diff --git a/src/pages/docker-compose.astro b/src/pages/docker-compose.astro index 584bcb4..ffb79b3 100644 --- a/src/pages/docker-compose.astro +++ b/src/pages/docker-compose.astro @@ -166,8 +166,8 @@ const schema = [- The work is funded by the company that publishes it, and by sponsors. + The work is funded by the company that publishes it, and by sponsors. Sponsor the project ↗ · Star the repository ↗ diff --git a/src/pages/platform.astro b/src/pages/platform.astro index 44e0fea..de36f2f 100644 --- a/src/pages/platform.astro +++ b/src/pages/platform.astro @@ -99,11 +99,11 @@ const schema = [ Ask about the beta - Or self-host Studio today + Or self-host Studio today
Studio covers everything on this site that is free, and it stays that way whether or not you ever talk to us - about Platform. Read the licence commitment → + about Platform. Read the licence commitment →
- Who supports this software, on which versions, and for how long: vendor support → + Who supports this software, on which versions, and for how long: vendor support →
diff --git a/src/pages/support.astro b/src/pages/support.astro index af6132a..34a537f 100644 --- a/src/pages/support.astro +++ b/src/pages/support.astro @@ -208,7 +208,7 @@ const channels = [A vulnerability goes to the address in the security policy, never into a public issue — the policy exists so a - fix can ship before the details do. How the security model works → + fix can ship before the details do. How the security model works →
diff --git a/src/pages/supporters.astro b/src/pages/supporters.astro index 2279bef..7ab133b 100644 --- a/src/pages/supporters.astro +++ b/src/pages/supporters.astro @@ -138,7 +138,7 @@ import { site } from '../lib/site'; · GitHub Sponsors ↗ · - How the project is licensed and run + How the project is licensed and run diff --git a/tests/code-signing.test.ts b/tests/code-signing.test.ts index 83de5b2..d09330c 100644 --- a/tests/code-signing.test.ts +++ b/tests/code-signing.test.ts @@ -108,7 +108,7 @@ describe('the published page', () => { // "Please add the term 'Code signing policy' on your project's home page" — // as a section header or a link to a dedicated page. This is the link arm. const home = page(HOME); - const link = [...home.querySelectorAll('a')].find((a) => a.getAttribute('href') === '/code-signing-policy'); + const link = [...home.querySelectorAll('a')].find((a) => a.getAttribute('href') === '/code-signing-policy/'); expect(link, 'no link to /code-signing-policy on the home page').toBeTruthy(); expect(link?.textContent?.trim().toLowerCase()).toBe('code signing policy'); }); @@ -130,7 +130,7 @@ describe('the published page', () => { it('links the privacy policy too, which the terms offer as the alternative', () => { const hrefs = [...page(POLICY).querySelectorAll('a')].map((a) => a.getAttribute('href')); - expect(hrefs).toContain('/privacy-policy'); + expect(hrefs).toContain('/privacy-policy/'); }); }); diff --git a/tests/dist-smoke.test.ts b/tests/dist-smoke.test.ts index 170a4a2..8e7d208 100644 --- a/tests/dist-smoke.test.ts +++ b/tests/dist-smoke.test.ts @@ -135,8 +135,11 @@ describe('SEO surface', () => { ['blog', blog, '/blog'], ['post', post, '/blog/the-tool-goes-to-the-data'], ] as const) { + // The canonical must be the URL the host actually serves. The build emits + // directories, so that URL ends in a slash — a canonical without one names + // a 301 rather than the page it sits on. const canonical = doc.querySelector('link[rel=canonical]')?.getAttribute('href'); - expect(canonical, `${name}: canonical`).toBe(path === '/' ? `${site.url}/` : `${site.url}${path}`); + expect(canonical, `${name}: canonical`).toBe(`${site.url}${path === '/' ? '/' : `${path}/`}`); expect(meta(doc, 'meta[name=description]')?.length ?? 0, `${name}: description`).toBeGreaterThan(50); expect(meta(doc, 'meta[property="og:image"]'), `${name}: og:image`).toMatch(/^https:\/\//); expect(meta(doc, 'meta[name="twitter:card"]'), `${name}: twitter card`).toBe('summary_large_image'); @@ -159,8 +162,12 @@ describe('SEO surface', () => { it('publishes a sitemap and an RSS feed carrying every published post', () => { const rss = readFileSync('dist/rss.xml', 'utf8'); const items = (rss.match(/