diff --git a/.forestry/front_matter/templates/blog-post.yml b/.forestry/front_matter/templates/blog-post.yml
index d612354e..77e6467f 100644
--- a/.forestry/front_matter/templates/blog-post.yml
+++ b/.forestry/front_matter/templates/blog-post.yml
@@ -32,7 +32,7 @@ fields:
Data is saved in the ipfs/ipfs-blog public GitHub repo as soon as
you hit the save button. So any sensitive information will also be publicly available
- on GitHub, but hidden from the website blog.ipfs.io.'
+ on GitHub, but hidden from the website blog.ipfs.tech.'
config:
required: true
date_format: YYYY/MM/DD
@@ -59,7 +59,7 @@ fields:
page.
Must be twice as wide as it is tall (2:1 aspect ratio) and at
least 400px tall. Name the image file something that can be easily
searched for in the media directory later (consider adding a date).
Need
- help? Use this crop/scale tool to save a revised image to your local
machine, then upload here.
- name: tags
diff --git a/.forestry/front_matter/templates/newslinks.yml b/.forestry/front_matter/templates/newslinks.yml
index c12cc15f..a15c7697 100644
--- a/.forestry/front_matter/templates/newslinks.yml
+++ b/.forestry/front_matter/templates/newslinks.yml
@@ -43,7 +43,7 @@ fields:
leave this blank.
WARNING: Data is saved
in the ipfs/ipfs-blog
public GitHub repo as soon as you hit the Save button. This means anything you
- save will also be publicly visible on GitHub, but not on the blog.ipfs.io site.
+ save will also be publicly visible on GitHub, but not on the blog.ipfs.tech site.
Be careful if you are drafting something sensitive!'
config:
required: false
@@ -66,7 +66,7 @@ fields:
description: 'Must be twice as wide as it is tall (2:1 aspect ratio) and
at least 400px tall. Name the image file something that can
be easily searched for in the media directory later (consider adding a date).
-
Need help? Use this crop/scale tool to save a
revised image to your local machine, then upload here.
Video links don''t
need images: they use the video thumbnail!'
diff --git a/.github/workflows/scheduled-publishing.yml b/.github/workflows/scheduled-publishing.yml
index 21ab785f..019209b0 100644
--- a/.github/workflows/scheduled-publishing.yml
+++ b/.github/workflows/scheduled-publishing.yml
@@ -19,5 +19,5 @@ jobs:
run: curl -H "Authorization:${{ secrets.FLEEK_API_KEY }}" -H "Content-Type:application/json" -d '{"query":"mutation { triggerDeploy(siteId:\"${{ secrets.FLEEK_SITE_ID }}\") { status } }"}' https://api.fleek.co/graphql
- name: Scheduled posts published
if: ${{ steps.should_publish_step.outputs.should_publish == 'true' }}
- run: echo "Check https://blog.ipfs.io"
+ run: echo "Check https://blog.ipfs.tech"
diff --git a/README.md b/README.md
index d0c27851..cf2e18d2 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@

-This repository contains code and content for the [IPFS Blog & News](https://blog.ipfs.io) website. To contribute to the site, please follow the instructions below for _post authors/editors_ and _site developers_.
+This repository contains code and content for the [IPFS Blog & News](https://blog.ipfs.tech) website. To contribute to the site, please follow the instructions below for _post authors/editors_ and _site developers_.
**If you just want to submit a link (event, academic paper, tutorial, video or news coverage) to add to the site, [use this easy form](https://airtable.com/shrNH8YWole1xc70I)!**
@@ -16,12 +16,12 @@ This repository contains code and content for the [IPFS Blog & News](https://blo
While it's possible to manually PR a new blog post from a local build, **you are strongly encouraged to [use this site's Forestry integration](https://forestry.io) for drafting and editing new content.** Using Forestry offers you WYSIWYG editing (in addition to raw markdown mode), easy image upload/crop tools, and instant previews. If you're an IPFS core team member and don't have Forestry access, contact Jessica Schilling.
-Forestry uses the `staging` branch as a work-in-progress scratchpad for blog content. Once content in `staging` is approved, it can be merged into `main`, which is the branch that feeds the production site at blog.ipfs.io. Merges into `main` are _automatically deployed_ to the production site using [Fleek](https://fleek.co/).
+Forestry uses the `staging` branch as a work-in-progress scratchpad for blog content. Once content in `staging` is approved, it can be merged into `main`, which is the branch that feeds the production site at blog.ipfs.tech. Merges into `main` are _automatically deployed_ to the production site using [Fleek](https://fleek.co/).
### Forestry authoring/editing tips
- Use the "Content Types" section of Forestry's left-hand menu to drill down to the type of item (blog post, video, news coverage, event) you want to create/edit.
-- For card and blog post header images, **be sure to use the [image crop/scale tool](https://blog.ipfs.io/image-crop/)** to resize and save images so they're the correct dimensions. (Don't have an image? Don't worry, there are generic fallback images.)
+- For card and blog post header images, **be sure to use the [image crop/scale tool](https://blog.ipfs.tech/image-crop/)** to resize and save images so they're the correct dimensions. (Don't have an image? Don't worry, there are generic fallback images.)
- Want to embed a YouTube video in a blog post? Switch to raw markdown view and use `@[youtube](videoID)`, substituting the video's unique ID from the URL (e.g. `https://www.youtube.com/watch?v=eFbKKsEoQNg`) for `videoID`.
- To switch between WYSIWYG and raw markdown while writing a blog post, choose "Raw Editor" or "WYSIWYG Editor" from the dots menu at the top right of the page:

diff --git a/package-lock.json b/package-lock.json
index 0fd821a4..e94a5ec4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6365,10 +6365,20 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001207",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz",
- "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==",
- "dev": true
+ "version": "1.0.30001376",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001376.tgz",
+ "integrity": "sha512-I27WhtOQ3X3v3it9gNs/oTpoE5KpwmqKR5oKPA8M0G7uMXh9Ty81Q904HpKUrM30ei7zfcL5jE7AXefgbOfMig==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ }
+ ]
},
"node_modules/caseless": {
"version": "0.12.0",
@@ -21316,6 +21326,18 @@
"fsevents": "~2.3.1"
}
},
+ "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/tailwindcss/node_modules/fs-extra": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -30052,9 +30074,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001207",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz",
- "integrity": "sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==",
+ "version": "1.0.30001376",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001376.tgz",
+ "integrity": "sha512-I27WhtOQ3X3v3it9gNs/oTpoE5KpwmqKR5oKPA8M0G7uMXh9Ty81Q904HpKUrM30ei7zfcL5jE7AXefgbOfMig==",
"dev": true
},
"caseless": {
@@ -42443,6 +42465,17 @@
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.5.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
}
},
"fs-extra": {
diff --git a/scripts/data/latest-news.js b/scripts/data/latest-news.js
index 0d45754c..cbaf7f85 100755
--- a/scripts/data/latest-news.js
+++ b/scripts/data/latest-news.js
@@ -1,7 +1,7 @@
'use strict'
/**
- The ipfs.io website requests for a blog.ipfs.io/news.json file
+ The ipfs.io website requests for a blog.ipfs.tech/news.json file
with the latest 3 news.
*/
diff --git a/scripts/data/latest-posts.js b/scripts/data/latest-posts.js
index c5a5f3bf..aea886b8 100755
--- a/scripts/data/latest-posts.js
+++ b/scripts/data/latest-posts.js
@@ -1,7 +1,7 @@
'use strict'
/**
- The ipfs.io website requests for a blog.ipfs.io/index.json file
+ The ipfs.io website requests for a blog.ipfs.tech/index.json file
with the latest 4 posts.
This script parses the rss feed file index.xml and generates the
required index.json file.
diff --git a/scripts/data/latest-videos.js b/scripts/data/latest-videos.js
index 54808ea1..476d6f28 100755
--- a/scripts/data/latest-videos.js
+++ b/scripts/data/latest-videos.js
@@ -1,7 +1,7 @@
'use strict'
/**
- The ipfs.io website requests for a blog.ipfs.io/videos.json file
+ The ipfs.io website requests for a blog.ipfs.tech/videos.json file
with the latest 2 videos.
*/
diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js
index 51977749..d28d24ad 100644
--- a/src/.vuepress/config.js
+++ b/src/.vuepress/config.js
@@ -1,7 +1,7 @@
const { reverse, sortBy } = require('lodash')
// configure this to an absolute url to enable a generated sitemap & blog RSS feeds
-const CANONICAL_BASE = process.env.CANONICAL_BASE || ''
+const CANONICAL_BASE = process.env.CANONICAL_BASE || 'https://blog.ipfs.tech'
const IPFS_DEPLOY = process.env.IPFS_DEPLOY === 'true' || false
const SPEEDCURVE_ID = process.env.SPEEDCURVE_ID || ''
@@ -31,7 +31,7 @@ const themeConfigDefaults = {
],
footerLinks: [
{ text: 'Blog & news', link: '/' },
- { text: 'Press', link: 'https://ipfs.io/media/' },
+ { text: 'Press', link: 'https://ipfs.tech/media/' },
{
text: 'Code of conduct',
link: 'https://github.com/ipfs/community/blob/master/code-of-conduct.md',
@@ -44,20 +44,20 @@ const themeConfigDefaults = {
],
footerLegal: '',
headerLinks: [
- { text: 'About', link: 'https://ipfs.io/#why' },
- { text: 'Install', link: 'https://ipfs.io/#install' },
- { text: 'Docs', link: 'https://docs.ipfs.io/' },
- { text: 'Team', link: 'https://ipfs.io/team' },
+ { text: 'About', link: 'https://ipfs.tech/#why' },
+ { text: 'Install', link: 'https://ipfs.tech/#install' },
+ { text: 'Docs', link: 'https://docs.ipfs.tech/' },
+ { text: 'Team', link: 'https://ipfs.tech/team' },
{ text: 'Blog', link: '/' },
- { text: 'Help', link: 'https://ipfs.io/help' },
+ { text: 'Help', link: 'https://ipfs.tech/help' },
],
mobileNavLinks: [
- { text: 'About', link: 'https://ipfs.io/#why' },
- { text: 'Install', link: 'https://ipfs.io/#install' },
- { text: 'Docs', link: 'https://docs.ipfs.io/' },
- { text: 'Team', link: 'https://ipfs.io/team' },
+ { text: 'About', link: 'https://ipfs.tech/#why' },
+ { text: 'Install', link: 'https://ipfs.tech/#install' },
+ { text: 'Docs', link: 'https://docs.ipfs.tech/' },
+ { text: 'Team', link: 'https://ipfs.tech/team' },
{ text: 'Blog', link: '/' },
- { text: 'Help', link: 'https://ipfs.io/help' },
+ { text: 'Help', link: 'https://ipfs.tech/help' },
],
}
@@ -103,7 +103,7 @@ module.exports = {
...themeConfigDefaults,
footerLinks: [
{ text: 'Blog & news', link: '/zh-cn/' },
- { text: 'Press', link: 'https://ipfs.io/media/' },
+ { text: 'Press', link: 'https://ipfs.tech/media/' },
{
text: 'Code of conduct',
link:
@@ -116,20 +116,20 @@ module.exports = {
},
],
headerLinks: [
- { text: 'About', link: 'https://ipfs.io/#why' },
- { text: 'Install', link: 'https://ipfs.io/#install' },
- { text: 'Docs', link: 'https://docs.ipfs.io/' },
- { text: 'Team', link: 'https://ipfs.io/team' },
+ { text: 'About', link: 'https://ipfs.tech/#why' },
+ { text: 'Install', link: 'https://ipfs.tech/#install' },
+ { text: 'Docs', link: 'https://docs.ipfs.tech/' },
+ { text: 'Team', link: 'https://ipfs.tech/team' },
{ text: 'Blog', link: '/zh-cn' },
- { text: 'Help', link: 'https://ipfs.io/help' },
+ { text: 'Help', link: 'https://ipfs.tech/help' },
],
mobileNavLinks: [
- { text: 'About', link: 'https://ipfs.io/#why' },
- { text: 'Install', link: 'https://ipfs.io/#install' },
- { text: 'Docs', link: 'https://docs.ipfs.io/' },
- { text: 'Team', link: 'https://ipfs.io/team' },
+ { text: 'About', link: 'https://ipfs.tech/#why' },
+ { text: 'Install', link: 'https://ipfs.tech/#install' },
+ { text: 'Docs', link: 'https://docs.ipfs.tech/' },
+ { text: 'Team', link: 'https://ipfs.tech/team' },
{ text: 'Blog', link: '/zh-cn/' },
- { text: 'Help', link: 'https://ipfs.io/help' },
+ { text: 'Help', link: 'https://ipfs.tech/help' },
],
},
},
diff --git a/src/.vuepress/theme/components/blog/Comments.vue b/src/.vuepress/theme/components/blog/Comments.vue
index 1b9c2074..1d018b79 100644
--- a/src/.vuepress/theme/components/blog/Comments.vue
+++ b/src/.vuepress/theme/components/blog/Comments.vue
@@ -6,9 +6,20 @@