From aef67f4b234bb9299e96b910a2524b3428ed6dc3 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 18 Feb 2026 21:29:52 +0000 Subject: [PATCH] feat: support markdown versions of pages (#1825) --- app/app.vue | 1 + app/pages/ai.vue | 4 - app/pages/ama.vue | 2 - app/pages/bio.vue | 4 - app/pages/blog/index.vue | 2 - app/pages/feed.vue | 4 - app/pages/feedback.vue | 2 - app/pages/live.vue | 2 - app/pages/talks.vue | 4 - app/pages/uses.vue | 4 - app/pages/voted.vue | 4 - app/pages/work.vue | 2 - modules/markdown.ts | 66 ++++++++-- modules/md-rewrite.ts | 39 ++++++ modules/md-routes.ts | 56 ++++++++ .../md-routes/runtime/server/blog-md.get.ts | 33 +++++ modules/router/index.ts | 17 +-- modules/shared/page-meta.ts | 49 +++++++ modules/shared/serialisers.ts | 20 ++- nuxt.config.ts | 2 +- server/middleware/md-redirect.ts | 16 +++ server/routes/ai.md.get.ts | 15 +++ server/routes/bio.md.get.ts | 15 +++ server/routes/blog.md.get.ts | 20 +++ server/routes/index.md.get.ts | 120 ++++++++++++++++++ server/routes/talks.md.get.ts | 101 +++++++++++++++ server/routes/uses.md.get.ts | 70 ++++++++++ server/routes/work.md.get.ts | 81 ++++++++++++ server/utils/md.ts | 58 +++++++++ test/unit/bundle.spec.ts | 2 +- 30 files changed, 750 insertions(+), 65 deletions(-) create mode 100644 modules/md-rewrite.ts create mode 100644 modules/md-routes.ts create mode 100644 modules/md-routes/runtime/server/blog-md.get.ts create mode 100644 modules/shared/page-meta.ts create mode 100644 server/middleware/md-redirect.ts create mode 100644 server/routes/ai.md.get.ts create mode 100644 server/routes/bio.md.get.ts create mode 100644 server/routes/blog.md.get.ts create mode 100644 server/routes/index.md.get.ts create mode 100644 server/routes/talks.md.get.ts create mode 100644 server/routes/uses.md.get.ts create mode 100644 server/routes/work.md.get.ts create mode 100644 server/utils/md.ts diff --git a/app/app.vue b/app/app.vue index 562f772f..4c75b76c 100644 --- a/app/app.vue +++ b/app/app.vue @@ -145,6 +145,7 @@ if (import.meta.server) { { rel: 'mask-icon', color: '#fff', href: '/favicon.svg' }, { rel: 'icon', type: 'image/svg', href: '/favicon.svg' }, { rel: 'alternate', type: 'application/rss+xml', href: '/rss.xml' }, + { rel: 'alternate', type: 'text/markdown', href: `https://roe.dev${path === '/' ? '/index' : withoutTrailingSlash(path)}.md` }, { rel: 'apple-touch-icon', sizes: '180x180', diff --git a/app/pages/ai.vue b/app/pages/ai.vue index 0925585e..e5038ea5 100644 --- a/app/pages/ai.vue +++ b/app/pages/ai.vue @@ -17,7 +17,3 @@ - - diff --git a/app/pages/ama.vue b/app/pages/ama.vue index 2a851f42..01db8b85 100644 --- a/app/pages/ama.vue +++ b/app/pages/ama.vue @@ -116,8 +116,6 @@ diff --git a/app/pages/blog/index.vue b/app/pages/blog/index.vue index 69a2343e..8e0e380c 100644 --- a/app/pages/blog/index.vue +++ b/app/pages/blog/index.vue @@ -16,8 +16,6 @@ diff --git a/app/pages/feedback.vue b/app/pages/feedback.vue index 1dddfb48..cbba4e4d 100644 --- a/app/pages/feedback.vue +++ b/app/pages/feedback.vue @@ -57,8 +57,6 @@ diff --git a/app/pages/uses.vue b/app/pages/uses.vue index 6768a11b..c3d58006 100644 --- a/app/pages/uses.vue +++ b/app/pages/uses.vue @@ -13,7 +13,3 @@ - - diff --git a/app/pages/voted.vue b/app/pages/voted.vue index 6a3a6bb9..9cff22f7 100644 --- a/app/pages/voted.vue +++ b/app/pages/voted.vue @@ -21,7 +21,3 @@ - - diff --git a/app/pages/work.vue b/app/pages/work.vue index 2f8ea97f..4416c63b 100644 --- a/app/pages/work.vue +++ b/app/pages/work.vue @@ -67,8 +67,6 @@