diff --git a/app/pages/vacations.vue b/app/pages/vacations.vue new file mode 100644 index 000000000..be4fa5bbf --- /dev/null +++ b/app/pages/vacations.vue @@ -0,0 +1,241 @@ + + + diff --git a/i18n/locales/en.json b/i18n/locales/en.json index c103fc7c1..2377f8c10 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -1105,5 +1105,41 @@ "p1": "If you encounter an accessibility barrier on {app}, please let us know by opening an issue on our {link}. We take these reports seriously and will do our best to address them.", "link": "GitHub repository" } + }, + "vacations": { + "title": "on vacation", + "meta_description": "The npmx team is recharging. Discord reopens in a week.", + "heading": "recharging", + "subtitle": "… because it's a marathon, not a sprint.", + "illustration_alt": "a single row of cosy icons", + "poke_log": "Poke the campfire", + "intro": { + "p1": "We've been building npmx at a pace that has cost {some} of us sleep. That's not sustainable – and we don't want it to be the norm. So we're doing something about it: all of us are taking a week off. Together.", + "some": "some", + "all": "all", + "p2": "Go outside. Touch grass – or snow. Finish that book you started before npmx took over your evenings. Visit someone you've been meaning to visit. Do something that has nothing to do with code. We'll all be better for it." + }, + "what": { + "title": "what's happening", + "p1": "Discord is closed {dates}.", + "dates": "February 14 – 21", + "discord": "All invite links are gone and channels are locked – except {garden}, which stays open for folks already there who want to keep hanging out.", + "garden": "#garden", + "site": "npmx.dev is still up. Browse packages as usual.", + "repo": "The repo is open. Issues and PRs are welcome – but expect us to be hands-off until we're back." + }, + "meantime": { + "title": "in the meantime", + "p1": "You're more than welcome to keep poking around while we're away. The codebase is on {repo} – dig in, file issues, open PRs. We'll get to everything when we return.", + "repo_link": "GitHub", + "p2": "Just don't expect a fast review. We'll be somewhere near a cosy fireplace." + }, + "return": { + "title": "see you soon", + "p1": "We'll come back recharged and ready for the final push to March 3rd. Things are going to get even more interesting after that – so let's make sure we're taking care of each other first.", + "p2": "Follow us {social} if you want updates in the meantime.", + "social_link": "on Bluesky", + "add_to_calendar": "remind me when Discord reopens" + } } } diff --git a/i18n/schema.json b/i18n/schema.json index 84cbbd10c..f5fa02e50 100644 --- a/i18n/schema.json +++ b/i18n/schema.json @@ -3322,6 +3322,114 @@ }, "additionalProperties": false }, + "vacations": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "meta_description": { + "type": "string" + }, + "heading": { + "type": "string" + }, + "subtitle": { + "type": "string" + }, + "illustration_alt": { + "type": "string" + }, + "poke_log": { + "type": "string" + }, + "intro": { + "type": "object", + "properties": { + "p1": { + "type": "string" + }, + "some": { + "type": "string" + }, + "all": { + "type": "string" + }, + "p2": { + "type": "string" + } + }, + "additionalProperties": false + }, + "what": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "p1": { + "type": "string" + }, + "dates": { + "type": "string" + }, + "discord": { + "type": "string" + }, + "garden": { + "type": "string" + }, + "site": { + "type": "string" + }, + "repo": { + "type": "string" + } + }, + "additionalProperties": false + }, + "meantime": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "p1": { + "type": "string" + }, + "repo_link": { + "type": "string" + }, + "p2": { + "type": "string" + } + }, + "additionalProperties": false + }, + "return": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "p1": { + "type": "string" + }, + "p2": { + "type": "string" + }, + "social_link": { + "type": "string" + }, + "add_to_calendar": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, "$schema": { "type": "string" } diff --git a/lunaria/files/en-GB.json b/lunaria/files/en-GB.json index 0bc7b6d46..b784d9988 100644 --- a/lunaria/files/en-GB.json +++ b/lunaria/files/en-GB.json @@ -1104,5 +1104,41 @@ "p1": "If you encounter an accessibility barrier on {app}, please let us know by opening an issue on our {link}. We take these reports seriously and will do our best to address them.", "link": "GitHub repository" } + }, + "vacations": { + "title": "on vacation", + "meta_description": "The npmx team is recharging. Discord reopens in a week.", + "heading": "recharging", + "subtitle": "… because it's a marathon, not a sprint.", + "illustration_alt": "a single row of cosy icons", + "poke_log": "Poke the campfire", + "intro": { + "p1": "We've been building npmx at a pace that has cost {some} of us sleep. That's not sustainable – and we don't want it to be the norm. So we're doing something about it: all of us are taking a week off. Together.", + "some": "some", + "all": "all", + "p2": "Go outside. Touch grass – or snow. Finish that book you started before npmx took over your evenings. Visit someone you've been meaning to visit. Do something that has nothing to do with code. We'll all be better for it." + }, + "what": { + "title": "what's happening", + "p1": "Discord is closed {dates}.", + "dates": "February 14 – 21", + "discord": "All invite links are gone and channels are locked – except {garden}, which stays open for folks already there who want to keep hanging out.", + "garden": "#garden", + "site": "npmx.dev is still up. Browse packages as usual.", + "repo": "The repo is open. Issues and PRs are welcome – but expect us to be hands-off until we're back." + }, + "meantime": { + "title": "in the meantime", + "p1": "You're more than welcome to keep poking around while we're away. The codebase is on {repo} – dig in, file issues, open PRs. We'll get to everything when we return.", + "repo_link": "GitHub", + "p2": "Just don't expect a fast review. We'll be somewhere near a cosy fireplace." + }, + "return": { + "title": "see you soon", + "p1": "We'll come back recharged and ready for the final push to March 3rd. Things are going to get even more interesting after that – so let's make sure we're taking care of each other first.", + "p2": "Follow us {social} if you want updates in the meantime.", + "social_link": "on Bluesky", + "add_to_calendar": "remind me when Discord reopens" + } } } diff --git a/lunaria/files/en-US.json b/lunaria/files/en-US.json index 5df67f00f..ce4c281e3 100644 --- a/lunaria/files/en-US.json +++ b/lunaria/files/en-US.json @@ -1104,5 +1104,41 @@ "p1": "If you encounter an accessibility barrier on {app}, please let us know by opening an issue on our {link}. We take these reports seriously and will do our best to address them.", "link": "GitHub repository" } + }, + "vacations": { + "title": "on vacation", + "meta_description": "The npmx team is recharging. Discord reopens in a week.", + "heading": "recharging", + "subtitle": "… because it's a marathon, not a sprint.", + "illustration_alt": "a single row of cosy icons", + "poke_log": "Poke the campfire", + "intro": { + "p1": "We've been building npmx at a pace that has cost {some} of us sleep. That's not sustainable – and we don't want it to be the norm. So we're doing something about it: all of us are taking a week off. Together.", + "some": "some", + "all": "all", + "p2": "Go outside. Touch grass – or snow. Finish that book you started before npmx took over your evenings. Visit someone you've been meaning to visit. Do something that has nothing to do with code. We'll all be better for it." + }, + "what": { + "title": "what's happening", + "p1": "Discord is closed {dates}.", + "dates": "February 14 – 21", + "discord": "All invite links are gone and channels are locked – except {garden}, which stays open for folks already there who want to keep hanging out.", + "garden": "#garden", + "site": "npmx.dev is still up. Browse packages as usual.", + "repo": "The repo is open. Issues and PRs are welcome – but expect us to be hands-off until we're back." + }, + "meantime": { + "title": "in the meantime", + "p1": "You're more than welcome to keep poking around while we're away. The codebase is on {repo} – dig in, file issues, open PRs. We'll get to everything when we return.", + "repo_link": "GitHub", + "p2": "Just don't expect a fast review. We'll be somewhere near a cosy fireplace." + }, + "return": { + "title": "see you soon", + "p1": "We'll come back recharged and ready for the final push to March 3rd. Things are going to get even more interesting after that – so let's make sure we're taking care of each other first.", + "p2": "Follow us {social} if you want updates in the meantime.", + "social_link": "on Bluesky", + "add_to_calendar": "remind me when Discord reopens" + } } } diff --git a/nuxt.config.ts b/nuxt.config.ts index 5965c351e..b58af4ae2 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -149,6 +149,7 @@ export default defineNuxtConfig({ '/privacy': { prerender: true }, '/search': { isr: false, cache: false }, // never cache '/settings': { prerender: true }, + '/vacations': { prerender: true }, // proxy for insights '/_v/script.js': { proxy: 'https://npmx.dev/_vercel/insights/script.js' }, '/_v/view': { proxy: 'https://npmx.dev/_vercel/insights/view' }, diff --git a/server/middleware/canonical-redirects.global.ts b/server/middleware/canonical-redirects.global.ts index 230ab3443..0e0a3209b 100644 --- a/server/middleware/canonical-redirects.global.ts +++ b/server/middleware/canonical-redirects.global.ts @@ -25,6 +25,7 @@ const pages = [ '/privacy', '/search', '/settings', + '/vacations', ] const cacheControl = 's-maxage=3600, stale-while-revalidate=36000'