Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
Expand All @@ -27,6 +29,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
Expand All @@ -38,6 +42,7 @@ jobs:
- run: pnpm format:check
- run: pnpm lint:i18n
- run: pnpm validate:content
- run: pnpm check:sitemap
- run: pnpm test:a11y
- run: pnpm build
- run: pnpm validate:jsonld
Expand Down
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,25 @@ The build pipeline performs the following steps:

1. Compiles TypeScript and builds the client production assets via Vite.
2. Runs the Open Graph image generator (`scripts/og.ts`) to pre-render cards for all routes and patches the output HTML files with page-specific titles, descriptions, and JSON-LD breadcrumb schemas.
3. Runs the sitemap generator (`scripts/gen-sitemap.mjs`) to generate a fresh `sitemap.xml` covering all static and dynamic routes.
3. Runs the sitemap generator (`scripts/sitemap.ts`) to generate a fresh `sitemap.xml` covering all static and dynamic routes.
4. Runs the RSS feed generator (`scripts/gen-rss.mjs`) to generate `feed.xml` and per-tag feeds under `public/feed/tag/`.

## Sitemap and RSS generation

Both generators are **deterministic**: running them twice on the same source produces byte-identical output.

**Sitemap** — `scripts/sitemap.ts` is the single entrypoint for both the build pipeline and manual generation:

```bash
pnpm generate:sitemap # regenerate public/sitemap.xml
pnpm check:sitemap # fail if public/sitemap.xml is stale (used in CI)
```

`lastmod` dates are derived from content metadata (blog `date` frontmatter, case-study `integrationDate`) or the git commit that last touched each route's source files. Routes with no trustworthy date (tag archives, author pages) omit `<lastmod>` entirely rather than stamping today's date.

`scripts/gen-sitemap.mjs` has been retired. All callers should use `scripts/sitemap.ts` via `tsx`.

**RSS** — `scripts/gen-rss.mjs` generates `public/feed.xml` and per-tag feeds. The `<lastBuildDate>` is set to the publication date of the most-recent post, not the wall-clock time, so repeated builds on unchanged content produce the same file.

## Serverless routes

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"check:chunk-budget": "node scripts/check-chunk-budget.mjs",
"generate:sdk-size": "node scripts/check-sdk-size.mjs --write",
"og:generate": "tsx scripts/og.ts",
"generate:sitemap": "node scripts/gen-sitemap.mjs",
"generate:sitemap": "tsx scripts/sitemap.ts",
"check:sitemap": "tsx scripts/sitemap.ts --check",
"preview": "vite preview",
"preview:functions": "node --import tsx scripts/preview-server.ts",
"test": "vitest run",
Expand Down
12 changes: 6 additions & 6 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
overrides:
axios@<1.20.0: 1.20.0
toml@<4.2.0: 4.2.0
toml@<5.0.1: 5.0.1
ws@<8.21.0: 8.22.0
2 changes: 1 addition & 1 deletion public/feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Wed, 12 Aug 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/announcements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/announcements</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Mon, 27 Jul 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/announcements.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/cryptography.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/cryptography</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Wed, 12 Aug 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/cryptography.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/privacy.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/privacy</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Wed, 12 Aug 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/privacy.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/sdk.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/sdk</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Mon, 27 Jul 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/sdk.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/stealth-payments.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/stealth-payments</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Wed, 12 Aug 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/stealth-payments.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/wave-6.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/wave-6</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Mon, 27 Jul 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/wave-6.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
2 changes: 1 addition & 1 deletion public/feed/tag/wave-7.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<link>https://usewraith.xyz/blog/tag/wave-7</link>
<description>Notes on stealth payments, private infrastructure, and the Wraith ecosystem.</description>
<language>en-us</language>
<lastBuildDate>Mon, 19 Oct 2026 15:57:04 GMT</lastBuildDate>
<lastBuildDate>Mon, 27 Jul 2026 00:00:00 GMT</lastBuildDate>
<atom:link href="https://usewraith.xyz/feed/tag/wave-7.xml" rel="self" type="application/rss+xml" />

<item>
Expand Down
Loading
Loading