Building planetable.xyz

Planet
 
Planet Feature Update 8

下载地址:

Article Settings 及新的文章列表视图

增加了一个新的 Article Settings 右键菜单。可以用来将一篇博客文章设置为 Page。这对于创建像 About Us 和 Contact Us 之类的站点级别页面会特别有用。

通过这些新设置,你可以获得类似 planetable.eth 顶部这样的网站导航设计。这可以通过指定某些文章作为网站导航栏中的条目来实现。

通过点击这个新的列表过滤器,你可以按类型过滤文章,更容易地找到特定页面。

重新设计过的文章条目视图现在会显示内容类型及附件信息。

Planet Avatar Picker

Planet 现在有一个全新的头像选择界面。让你可以从多组充满设计感的图集中选择一张作为你的 Planet 网站的头像。

这次上线的第一个图集,Nostalgia,包含了 99 个简洁而抽象的来自设计师 yihanphotos.eth 的作品。

快速分享

现在你可以把图片拖拽到 Planet 图标上,就可以快速分享图片。

Pinnable

Pinnable 是一个全新的用于 ENS/IPNS 网站的 Pinning 服务。

当你使用 Planet app 创建和发布去中心化网站时,你的 Mac 会成为 P2P 网络上的一个节点,用于托管你的网站。通过使用一个 Pinning 服务,你的网站内容的额外副本会被复制到 Pinning 服务的节点上,这样可以让网站的加载速度更快,同时也增加了内容的可达性(availability)。尤其是对于笔记本用户,就不用让电脑一直开着作为服务器。每次当你发布新内容时,Pinnable 就会开始与你的本地节点进行同步,同步完成之后,你的内容就也存了一份到 Pinnable,这样你就不用一直开着自己的机器作为服务器了。

虽然使用了一个远程服务,你对内容的权威版本依然具有完全的控制。远程服务无法篡改或者删除你的内容。

To-Do 列表语法

Planet 的 Markdown 编辑器现在也可以支持类似 GitHub 的 To-Do 语法。并且在 My Planet 的右侧视图中,可以直接点击 To-Do 列表中的项目来勾上已经完成的事项。

YouTube 嵌入

如果你在正文中包括了一个 YouTube 的视频链接,那么现在链接会自动转化为一个播放器。

其他改进

  • 支持用拖拽的方式调整左侧列表中 My Planet 和 Following Planet 的顺序
  • 在 Rebuild Planet 时现在会显示一个进度条
Rebuild Planet 时的进度条
  • 修复了移动文章时的一个问题
  • 修复了当 App 长时间运行时可能会发生的一个崩溃问题
  • 模版现在可以有自己的设置,这为更复杂的定制模版功能打开了可能性
  • 增强了 Markdown Writer 在滚动时的性能
  • Markdown Writer 的时间选择器现在可以选择「今天」
 
Planet Feature Update 7

这次的更新包括了新的星标类型,Planet 的 API 服务器,对移动主数据目录的支持,IPNS 私钥管理器,支持更多的社交网络连接,Insider 和 Debug 版本的新图标,及 bug 修复和功能改进。

星标类型

现在当你在给一篇文章添加星标时,你可以选择几种新的类型,来为星标赋予一个更明确的含义。其中几种类型会让 Planet 具有 To-Do 管理软件的感觉。除了右键点击,现在还可以从工具栏中来管理文章的星标。

Stars

在后续的更新中,我们将会支持更具星标类型过滤文章。

文章的日期选择器

当你在编辑文章时,可以为文章选择任意日期。无论是过去还是将来。

Writer Date Picker

API 服务器

在 Planet 应用运行的时候,现在可以提供一个 HTTP API 服务器。下面是目前能支持的请求的列表,我们会通过文档提供更具体的使用信息。这是一个 v0 版本的 API,因此在后续的更新中有可能会更改。API 服务器为第三方客户端提供了可能性,尤其是后续对移动设备的支持。

  • GET /v0/planets/my - List all my Planets
  • POST /v0/planets/my - Create a new Planet
  • GET /v0/planets/my/:uuid - Info of a specific My Planet
  • POST /v0/planets/my/:uuid - Modify my Planet
  • POST /v0/planets/my/:uuid/publish - Publish My Planet
  • GET /v0/planets/my/:uuid/public - Expose the content built
  • GET /v0/planets/my/:uuid/articles - List articles under My Planet
  • POST /v0/planets/my/:uuid/articles - Create a new Article
  • GET /v0/planets/my/:uuid/articles/:uuid - Get an article by UUID
  • POST /v0/planets/my/:uuid/articles/:uuid - Modify an article
  • DELETE /v0/planets/my/:uuid/articles/:uuid - Delete an article
Planet API Server

你可以在应用的设置中打开 API 服务器,并设置端口号、用户名及密码。

移动主数据目录及 IPNS 私钥管理器

这还是一个试验性的功能,在使用时请注意数据备份

Planet 应用在默认情况下,所有的数据存放在这个位置:

~/Library/Containers/xyz.planetable.Planet/Data/Documents/Planet

现在在应用设置中,你可以移动这个位置。如果新位置位于 iCloud Drive 或者 Dropbox,那么相当于你就通过云服务备份了数据。

于此同时,本地的所有 IPNS 私钥,现在可以通过一个新的 Key Manager 来管理及通过 iCloud Keychain 备份,如果你在 iCloud 设置中打开了 iCloud Keychain 功能的话。你可以在 Tools 菜单下找到新的 Key Manager。

对于所有数据同步的支持还在测试中。上面提到的移动主目录功能,及新的 Key Manager 功能,为数据在几台 Mac 之间的完全同步提供了可能性。但是目前还有一些边缘情况,需要更多的测试及代码上的处理。因此我们任务这个功能目前还处在一个试验性的阶段。在使用时需要小心。## 更多的社交网络连接支持

现在你可以为你的 Planet 填入这些社交网络的 ID,之后会显示在生成的网站首页,及其他人追随你的 Planet 时看到的信息面板里。

  • Juicebox
  • Mastodon
  • Twitter
  • Telegram
  • GitHub
Juicebox Social

Insider 和 Debug 版本的新图标

我们会时不时发布 Insider 版本。Insider 版本中包括了最新的功能。这些功能通常在进入稳定版本之前,需要更多的测试。因此我们通过 Insider 版本来让新功能在发布之前能够获得更充分的测试。你可以从 Planet 项目的 GitHub Releases 页面下载最新的 Insider 版本。

https://github.com/Planetable/Planet/releases

如果你下载并运行了 Insider 版本,那么你会注意到这个版本现在具有一个独特的蓝色图标,具有类似 Xcode 及其他 Apple 开发工具的风格。同时我们也为 Insider 版本添加了专有的升级通道,因此现在 Insider 版本也可以获得自动升级。

如果你是从源代码构建 Planet,那么你就可以获得这款黄色的具有建设中意味的图标。

Icons: Insider and Debug

在后续的更新中,我们会提供更多的图标选项。比如最近在 Pinnable 项目中出现的新设计

其他细节改进

  • 在默认模版中为表格和 To-Do 列表增加了 CSS 样式
  • 为 HTML 中的社交网络分享图片使用了更兼容的绝对 URL 地址
  • 修复了一个在添加视频时的崩溃问题
  • 修复了之前版本中音频播放器按钮不响应的问题
  • 为工具栏中的 ETH 打赏功能换上了一个由 SF Symbol 驱动的图标
  • 默认的 Plain 主题中的样式微调,带来整体更好的对比度
  • 侧栏中的 Planet 图标增加了边框和投影以实现更好的对比度效果
  • 模版中现在可以使用一个新的变量用于引用社交网络分享大图 social_image_url
 
Planet Feature Update 6

这是 2022 年的最后一天。在我们发布这个功能更新时,有些时区已经迈入 2023 年了。新年快乐!感谢大家在这一年对 Planet 的关注和支持。

在 Feature Update 6 中的一个主要更新,是一个全新的页面主题——Grid。你可以在下面这个地址看到效果:

yihanphotos.eth

yihanphotos.eth

这是一个为大量的图片和视频所优化的设计。针对 Desktop 和 Mobile 都做了响应式的设计。为了支持这个新的主题,软件本身需要提供一系列数据层面的更新:

视频第一帧存为图片文件

视频的第一帧会被保存为一个叫做 _videoThumbnail.png 的图片文件。例如这个红冠亚马逊鹦鹉的视频:

第一帧的图片文件地址:

Hero Image

如果文章附件中包括了一张足够宽的图片,那么这张图片的名字会可以在模版中以 heroImage 这个变量获得。这会为模版设计带来很多新的可能性。

同时,这个文件会被额外转换成两个适合在方格布局中使用的版本:_grid.jpg 和 _grid.png。如果附件中包括视频,那么视频的第一帧图片会成为 Hero Image。并且生成两个方格版本,比如:

这类由 Planet 在渲染时额外生成的图片文件,名称都会是 _ 下划线开头。


以上是关于新模版的介绍。在后续的更新中,我们会继续带来模版设计方面的更新。传统的博客系统如 WordPress、Jekyll、Ghost 等,在十多年的积累过程中,积攒了大量经过考验的信息组织方式方面的设计,而这些都是 Planet,从一个静态网站生成器的角度出发,需要接下来全部补齐的。


Published Folders Dashboard

Published Folder 是 Planet 在 2022 年 10 月的功能更新加入的新功能——可以把任意的本地文件夹,发布为 IPNS。

可以把这个功能理解为一个完全图形化界面操作的 IPFS 发布,尤其适合把各种静态网站生成器的 build 结果发布。比如 Jekyll。

之前这个功能的入口是在 Tools 菜单下。现在你可以在 Tools -> Published Folders -> Dashboard 找到这个新的图形界面管理入口。

Published Folders Dashboard

New Template Browser

模版管理工具 Template Browser 现在具有一个三栏式的布局可以用于呈现更多信息。并且可以预览模版的首页列表的设计。

Template Browser UI
 
Planet Feature Update 5

这次的功能更新会是首先以 Insider Build 的方式发布,需要从下面的这个 GitHub 链接去下载。因为其中的一些大的变更,在通过自动更新推送给所有用户之前,我们希望能够更充分地测试一下。

因为这次会有一个主要的新功能——通过 ETH 直接给内容创作者打赏。具体的使用方式是这样的:

ETH Tipping

在 0.11 版本的 Planet 中,可以在菜单 Planet 下找到一个新的选项——Connect Wallet。

Connect Wallet

然后用支持 WalletConnect 的钱包应用扫描弹出的二维码,然后 Planet 应用里就可以知道你的钱包地址及向应用发起交易请求。在这个阶段,不会有签名操作。

Planet WalletConnect QR Code Example

之后当你在 Planet 里访问 .eth 域名上的网站时,在 Toolbar 里会出现这个新的打赏按钮。如果在你 Follow 的 .eth 网站的 Toolbar 里没有出现这个按钮,那么请右键在 Planet 名称上点击 Check for update 解析 ENS 后面对应的钱包地址。并且,这个打赏按钮只会在连接了钱包之后才会出现。

Tip Button

按下之后就可以选择打赏金额——从 0.02E 到 1E 的几个不同的级别。如果你使用的是 MetaMask 的手机版本,那么这里还可以选择使用哪个网络发送,目前支持主网、测试网 Goerli 和测试网 Sepolia。

Tip Tiers

点击 Send 之后,这时手机上的钱包应用就会弹出一个转账确认。按下确认之后,打赏就发送到目标地址了。这是一笔简单的两个 ETH 地址之间的转账,你选择的打赏金额会 100% 进入内容创作者的钱包。

Sending 0.02 ETH to vitalik.eth

如果你在连接钱包的时候使用的应用是 Rainbow,那么需要注意的是 Rainbow 会在连接界面的右下角让你选择网络。如果你希望连接的是测试网 Goerli,那么需要在这里选择。如果你没有看到 Goerli 的选项,那么需要在 Rainbow 的设置中打开对 Testnet 的支持。之后在发送交易时,Rainbow 不支持交易时切换网络,会永远使用一开始的选择。

点击主界面左上方的钱包地址按钮,就可以看到所有过去发出的打赏记录:

ETH Transaction History

MetaMaskRainbow 是我们在开发这个功能的过程中,主要测试过的两个应用。如果你使用的是其他支持 WalletConnect 的应用,可以在 GitHub 的 Discussions 里告知我们,我们来试着进行更多的测试。目前,我们推荐使用的手机钱包 App 是 MetaMask 和 Rainbow。


上面是 0.11 版本中新增的 ETH 打赏功能的介绍。

下面是本次更新中带来的其他功能和修复。

Published Folder 的自动发布

Published Folder 是我们在上一个版本中加入的新功能——你可以把任意的本地文件夹发布为一个 IPNS。如果你之前已经在使用某个静态网站生成器,那么这个功能可以帮助你快速把构建结果发布为 IPNS。

Automatically Publish

新增加的 Automatically Publish 开关可以自动监测文件夹内的内容变化,然后在每次变化发生时,将最新的 CID 写入 IPNS 实现内容的自动更新。

在不同的 Planet 之间移动文章

现在如果你右键点击文章,就可以找到一个新的选项让你可以在 Planet 之间移动文章。

Move Article

比如你可以指定一个 Planet 来作为你的草稿箱,在里面写作和调整文章的样式,然后在完全满意之后,再把这篇文章移动到需要正式发布的那个 Planet。比如你现在看到的这篇文章,就是用这样的流程完成的。

Archive/Unarchive

现在你可以把自己创建的或者正在追踪的 Planet 设置为 Archive 状态。Archive 状态的 Planet 不会显示在侧栏中,也不会被自动发布或者更新,但是所有的数据会在本地保留。

之后如果你想找回,可以从 Planet 的设置面板中 Unarchive。

用于显示 Planet 的 IPNS 和 CID 信息的新面板

如果你需要获得一个 Planet 的 IPNS 或者最新的 CID,那么现在可以右键单击,然后找到一个新的菜单选项 Show IPNS and CID 就可以看到。

Show IPNS and CID

感谢大家对这个项目的持续支持。这次的新功能——ETH 打赏希望大家能够帮忙多多测试。如果需要获得 GoerliETH 测试网上的 ETH 来体验这个功能,可以通过下面这个网站挖一些试试:

如果你在使用中遇到问题,可以从以下社区渠道向开发者反馈或者寻求社区协助:

如果你十分确定遇到了软件实现上的 bug,那么可以通过 GitHub Issues 向我们描述如何复现 bug,我们会尽快调查和解决。

 
Planet Feature Update 4

欢迎来到 Planet 在 2022 年 10 月 12 日发布的 Feature Update 4。在这次的功能更新中,我们为你带来了 4 个大的主要功能,及其他细节问题上的修复。

下面的链接是从 0.9.2 到 0.10.0 版本之间的所有改动的更新日志:

https://github.com/Planetable/Planet/compare/release-0.9.2...release-0.10.0

发布本地目录到 IPNS

现在你可以在 Planet 把本地的任意目录发布为一个 IPNS。这个功能可以在菜单 Tools -> Published Folders 找到。

published-folders

这样的话,意味着可以用 Planet 发布其他静态网站生成器的构建结果,比如用 Jekyll、Hugo、Zola 等构建的网站,发布为 IPNS。

比如这是一个用 Jekyll 构建的网站:

上面的这个 IPNS 也可以直接在 Planet 里 Follow。

Filebase Pinning

Filebase: Pinned

Filebase 目前提供免费的 5GB 存储空间及 Pinning 服务。关于这个功能的具体使用方式,可以查看我们之前的博客内容:

https://olivida.eth.limo/9BE484CD-0EA5-4742-927E-FA56F7591CC2/

借助 Pinning 服务,只要在每次内部发布完成之后,再稍微多等待一会让 Pinning 服务也保存一份内容之后,就可以合上你的笔记本了。同时你的访客也会获得更快的速度。

我们会在将来提供对更多 Pinning 服务的支持。关于 Pinning 服务的一些设想,还可以看我之前的这篇文章:

https://olivida.eth.limo/09582A3A-7F32-4E3D-97B0-3105DFE42566/

Custom Code

如果你需要在 Planet 构建出来的网站的 HTML 的 head 或者 body 插入代码,比如各类流量统计或者第三方的评论系统。现在可以有更简单的方式了,之前需要编辑本地模版。

现在可以在 My Planet 上右键选择 Custom Code 就可以设置插入代码。

Planet: Custom Code

然后就可以在 3 个可能的位置插入定制代码:

  • <head></head> 中间
  • <body> 开始
  • </body> 结束之前
Planet: Custom Code

RSS 及 Podcast 支持

现在 Planet 在生成网站时,也可以同时生成 RSS 文件。比如你当前正在查看的这个博客的 RSS 地址是:

olivida.eth.limo/rss.xml

如果你发布过音频内容,那么 Planet 还可以为你生成符合 Apple Podcast 标准的,只包括音频内容的 XML 文件,地址是在域名根目录下的 podcast.xml:

olivida.eth.limo/podcast.xml

右键点击 My Planet 可以找到新的 Podcast 设置,里面可以单独为 Podcast 频道设置封面图及选择分类。

Podcast Settings

完整的 Podcast 发布平台还有许多细节功能需要做。我们会在未来持续更新和 Podcast 有关的实现。

其他细节改进

  • 修复了在构建网站时一个没有必要的 CID 变化
  • 增加了针对 localhost 上的 IPFS API 端口在 WKWebView 里的屏蔽规则
  • RSS 订阅时,如果页面上发现了多个不同格式,那么优先选择 JSON Feed
  • 增加了 Insider Build 预览测试版的发布渠道
  • 更新内置 kubo 版本到 0.15。我们也测试了最新的 0.16,但其中似乎有一个未修复的资源消耗问题,因此在本次更新时,没有使用最新的 0.16 而是使用了 0.15。
  • 使用 SecureField 显示所有涉及 API Token 的部分,防止在截图或者屏幕共享时泄露敏感信息。
  • 🌟 支持订阅 Matters Lab 发布的 IPNS

以上是本次 0.10 更新里的主要新功能和改进。如果你在使用中遇到问题,可以从以下社区渠道向开发者反馈或者寻求社区协助:

如果你十分确定遇到了软件实现上的 bug,那么可以通过 GitHub Issues 向我们描述如何复现 bug,我们会尽快调查和解决。

 
Insider Build 及 Pinning 测试

为了能够在正式发布功能之前进行更充分的测试,我们在 GitHub 上增加了一个新的 Release 类型:Insider Build

目前最新的 Insider Build 可以从这里下载:

https://github.com/Planetable/Planet/releases/tag/insider-20221013-1

这个版本中增加的新功能是借助 Filebase 提供的 Pinning 服务,来让 Planet 中发布的内容可以更快地分发。

Pinning 服务是什么?

在初始状态下,用 Planet 发布的内容,通过本地运行的 IPFS 节点对外提供服务。如果打个比方,这样的状态就像是在用 BitTorrent 下载时,一开始,最初的内容发布者,是整个网络里唯一的做种者(seeder)。

当其他人需要访问内容时,就需要在 P2P 网络上找到做种者。所以,如果没有能够找到,或者连接不顺畅,那么也就无法访问内容。

而 Pinning 服务,就是在发布内容时,使用 API 通知的方式,让 Pinning 服务也保存一份内容,这样网络上就会有更多的 seeder,内容也就会更容易被找到和下载。

Filebase

Filebase 是一家提供分布式存储的初创公司。他们在最近支持了 IPFS,并且提供了一个很可靠Pinning API。于是基于这个 API,我们为 Planet 添加了第一个 Pinning 服务集成。

开始使用 Filebase

以下是启用 Filebase 来为 Planet 提供 Pinning 的步骤。

  1. 首先需要注册一个免费的 Filebase 账号。目前,免费账号可以获得 5GB 的 IPFS 存储空间。

  2. 点击 Filebase 主界面左侧的 Buckets,然后按 Create Bucket 创建一个新的存储桶。需要输入一个名字,比如 planet,然后下面 Storage Network 就保持默认的 IPFS (Always public)

filebase-create-bucket
  1. 创建 bucket 完成之后,点击左侧的 Access Keys,然后在 IPFS Pinning Service API Endpoint 那里选中刚才创建的 bucket,然后按下面的 Copy 就可以获得 Pinning API 的 API Token,是一串很长的字符串,请当作一种密码保管。
filebase-access-keys
  1. 回到想要启用 Pinning 的 My Planet,右键点击 Edit Planet,然后切换到 Pinning Tab,填入一个 Pin Name,比如 ENS 或者其他 URL 友好的名字。及刚才获得的 API Token。然后按下 OK 保存。
filebase-api-token
  1. 之后每次你的网站发布新内容时,就会通知 Filebase 也保存副本。目前 Filebase 会在 3 个不同的节点上保存内容。如果你 Edit Planet 然后切换到 Pinning Tab,还可以看到内容在 Filebase 上的状态:
  • Pinning - 内容正在被复制到 Filebase
  • Pinned - 内容已经完成复制
  • Queued - 正在排队等候
  • Unknown - 出错了,状态未知

如果出现 Unknown 状态,那么需要检查输入的 API Token 是否正确。可以从 Filebase 网站上重新复制之后重新在 Planet 里填入。

filebase-pinned

那个 Pinned 状态的按钮是可以按的,会打开 Pinned 内容在 Filebase 的 Gateway 上类似这样的地址:

https://ipfs.filebase.io/ipfs/bafybeihkepvteld5u7rmca6ud2cmi5pnpluwpvz6wtmnepmsmyner7xkq4/

内容成功 Pinned 之后,也可以在 Filebase 网站上看到状态:

filebase-status

Pinning 服务的集成,是一个很新也很复杂的功能,如果你在使用过程中遇到任何问题,欢迎加入 Planet 的 Telegram 群讨论或寻求开发者帮助:

https://t.me/+5bl7FIsxeChlOWIz

 
Planet Feature Update 3

欢迎来到 Planet 在 2022 年 9 月 18 日发布的 Feature Update 3。在这次的功能更新中,我们为你带来了 2 个大的主要功能,及诸多细节问题上的修复。

下面的链接是从 0.8.1 到 0.9.2 版本之间的所有改动的更新日志:

https://github.com/Planetable/Planet/compare/release-0.8.1...release-0.9.2

Follow .bit

现在在 Follow Planet 时,可以支持 .bit 域名。

.bit 域名是另外一个基于区块链的域名系统,底层数据存储和计算用的链是 Nervos Network

和 ENS 类似,.bit 也提供对 dWeb 的支持,你可以在给你的 .bit 域名绑定用 Planet 生成 IPNS 地址,这样你的 .bit 域名上就可以有用 Planet 构建的网站。.bit 的公共网关是 .bit.cc,比如 olivida.bit 上的 IPNS 可以用这个地址访问到:

https://olivida.bit.cc

和 ENS 不同的是,.bit 在更新 dWeb 纪录的时候,不需要付出额外的 gas 费,因为 .bit 在注册时,注册费中就已经包括了一定数量的数据更新所需要的费用。

dWebServices.xyz

dWebServices.xyz 提供托管的 IPNS 纪录。你可以在 Planet 的设置窗口中填入 dWebServices.xyz 的 API Key 和域名,之后每次你的 Planet 更新时,最后的 CID 就会被设置到 dWebServices.xyz 上的 IPNS 记录。这样,除了 Planet 自带的 IPNS 记录,你会获得一个额外的位于 dWebServices.xyz 上的 IPNS 记录。这对于笔记本电脑用户可能会更方便,因为这样你不需要一直开机来保证你的 IPNS 记录存活。但在 Pinning 服务被引入之前,依然需要确保网络上至少有一个节点保存了你的内容,这样其他人才能访问和 Follow 你的网站。

dwebservices-api-key

我们会在未来的功能更新中提供 Pinning 服务的集成,这样使用笔记本电脑运行 Planet 的用户,在每次内容更新后,只需要再稍微等一下,等远程的 Pinning 服务获得内容之后,就可以彻底把本子合上了。

或是通过一个 Pinning DAO 来实现这样的效果。

功能细节改进

  • 现在 Planet 应用的主窗口可以记住位置和尺寸,不会在每次关闭又重开的时候回到一个默认尺寸。
  • 全局设置中增加了选择公共网关的选项。
general-setting-public-gateway
  • 更新了和 Cloudflare 的 peering 设置,现在内容可以更顺畅地被 Cloudflare 的公共网关找到。
  • 本地 IPFS 设置中增加了对 webui.ipfs.io 的 CORS 允许,这样你可以通过 webui.ipfs.io 查看本地 IPFS 节点的一些状态。
  • 增加了对 Planet 内部链接的支持,如果现在你相对链接同一个 Planet 中的其他文章,那么应用将可以正确跳转和设置焦点。
  • 初步支持了链接到另外一个 Planet,比如 planet://zh.gamedb.eth 。如果你已经 Follow,那么会跳转到这个 Planet。如果你还没有 Follow,那么会尝试 Follow 这个地址。
  • 修复了文章列表中未读数更新不实时的问题。
  • 顶部工具栏增加了单篇文章的分享按钮。
  • 降低了 IPFS 进程保持的连接数,可以一定程度降低 IPFS 对资源的消耗。我们会在后续的更新中提供更细致的调整选项。
  • 修复了 Mark All as Read 没有正常工作的问题。
  • 修复了内容检查更新时可能导致风火轮的一个性能问题。
  • 在 Planet 的信息面板中,增加对了 ENS 类型 Planet 的标识。
  • 在 Planet 的信息面板中,可以正确显示其中的 Markdown 语法。也就是说,你可以在 Planet 的 about 信息中使用 Markdown。比如这样的链接:
planet-info-markdown
  • 在 Unfollow Planet 操作上增加了一个确认框防止误操作。
  • Planet 的信息设置窗口现在使用 TabView 来更好地组织更多信息。
  • Planet 信息中可以填入 GitHub / Twitter 用户名,在模版渲染时会用上这些信息。
  • 修复了打开 Plausible.io Dashboard URL 时的一个编码问题。(感谢来自 @Fatpandac 的 PR)
  • 修复了一个编辑器预览区域没有同步滚动的 regression 问题。
  • 编辑器窗口会按照所属的 Planet 记住尺寸和位置。
  • 支持自建版本的 Plausible.io 流量统计服务。
  • 首页模版渲染时新增变量 hasAvatar,模版设计者可以根据这个变量定制是否显示 Planet 的图标。
  • 如果为 Planet 设置了图标,那么图标也会被保存为 32x32 的位于根目录的 favicon.ico。
  • 支持通过 The Iconfactory 的 WorldWideWeb 应用来预览本地构建的网站。

以上是本次 0.9 更新里的主要新功能和改进。如果你在使用中遇到问题,可以从以下社区渠道向开发者反馈或者寻求社区协助:

如果你十分确定遇到了软件实现上的 bug,那么可以通过 GitHub Issues 向我们描述如何复现 bug,我们会尽快调查和解决。

 
Planet 的模版系统

Planet 的核心功能之一,是一个静态网站生成器。所以,用 Planet 做网站,是可以支持全站模版替换的。在这篇文章里,我们会向你介绍目前系统的内置模版,及如何制作自己的新模版。

内置模版

在目前的版本中,Planet 有两个内置模版:

Plain

demo-olivida.eth

外观简洁,尽量贴近操作系统原生 look-n-feel 的模版,支持自动切换 Light/Dark 模式。Planet 如果有新的媒体格式支持,那么 Plain 模版会最先更新,提供对新的媒体格式的支持。比如之前的更新中,对视频和音频,及附件下载的支持。

8-bit GameDB

demo-zh.gamedb.eth

一个 8-bit 风格的模版。一些新的前端技术会在这个实验性的模版中使用。比如目前这个模版中的很多组件,就是用 Vanilla JS Web Component 实现的。GameDB 模版在获得新的媒体格式支持方面会比 Plain 模版稍微慢一周。

制作自己的模版

如果你希望制作自己的新模版,那么目前我们推荐的步骤是:

  • 打开 Planet 的数据目录:~/Library/Containers/xyz.planetable.Planet/Data/Documents/Planet/Templates
  • 复制其中的 Plain 模版的目录到一个新的目录
  • 打开新目录中的 template.json 文件,编辑其中的 name 字段,给你的新模版一个新名字
  • 然后在下次启动 Planet 之后,就可以看到和选择这个新模版了。

编辑和预览模版

如果你改动了自己的新模版的 HTML / JS / CSS,想要快速预览的话,我们推荐的做法是:

安装来自 The Iconfactory 的 WorldWideWeb,这是一款非常简单好用的静态网站 HTTP 服务器。它可以快速将任意目录的内容以 HTTP 方式提供服务。

在安装完 WorldWideWeb 之后,你会在右键点击 My Planet 时在 Develop 菜单下看到新选项:Open in WorldWideWeb

Open in WorldWideWeb

然后 WorldWideWeb 就可以在 localhost 上预览你的 Planet 的新模版构建的网站。每次你做了修改时,只需要在 Develop 菜单下 Rebuild,然后就可以通过 WorldWideWeb 提供的 localhost 上的服务预览更改。

此外,你可以通过 Planet 的 Tools 菜单下的 Template Browser 看到目前你本地的 Planet 所安装的所有模版:

Template Browser

这个关于 Planet 的 Template Engine 模版引擎的文档会在未来持续更新。

 
Planet Feature Update 2

这是 Planet 的第二个功能更新,版本号 0.8.0,发布于 2022 年 8 月 13 日。这次的更新的代码来自于以下贡献者:

下面的链接是从 0.7.0 到 0.8.0 版本之间的所有改动的更新日志:

https://github.com/Planetable/Planet/compare/release-0.7.0...release-0.8.0

下面是这个版本里带来的新功能和改进。

Plausible.io 数据统计

Plausible.io 是一个开源的数据统计平台,创始团来自欧洲。现在 Planet 支持在 Info 面板中填入 Plausible 的 domain 和 API token,这样就可以通过 Plausible.io 看到有多少人访问过你的 Planet。

比如下面的链接是 olivida.eth 的访问数据例子:

https://plausible.io/olivida.eth.limo

另外一个例子,Plausible.io 官方网站的流量:

https://plausible.io/plausible.io

Plausible.io 的实现方式是尊重隐私的。这个平台不会收集个人信息,甚至都没有使用 cookie。因此不需要在使用 Plausible.io 的页面上弹出 cookie banner。

我们会在未来的版本更新中加入对 self-hosted 版本的 Plausible 的支持。

博客 Podcast 和附件支持

现在你可以在撰写内容时,选择附加一个音频文件,或者是直接将音频文件拖拽到写作窗口中。之后在发布时,页面上就会出现一个音频播放器。

在本篇博客的内容中,就附加了一段音频内容。这是我在 5 月份 Planet 上线之前,和 枫言枫语播客 录制的。里面分享了关于 Planet 在制作过程中的一些思考。

如果是在 0.8.0 之后版本的 Planet 客户端中访问这样的带有音频的内容,那么在工具栏中会看到一个耳机按钮,点击之后就会启动一个全局的音频播放器去播放内容中所携带的音频内容。得益于这个全局播放器的存在,播放时切换查看的文章内容,播放不会被打断。

planet-audio-player

我们会在未来的版本中继续优化这个全局音频播放器的使用体验。

如果你将其他格式的文件,比如 PDF 或者 DMG 之类拖拽进入写作窗口,那么这样的内容在发布之后,会在 0.8.0 的客户端中显示为附件。访客可以点击工具栏中的附件图标就可以下载。

内置模版的细节改进

Planet 目前内置了两个网站模版用于切换样式。

在这次的更新中,我们为这两个模版加入了众多的细节改进:

  • 对音频内容的支持
  • 针对视频和图片内容的 CSS 样式优化
  • 在顶部区域,从内容页面返回到首页的链接
  • 在 iOS 移动设备上访问时的 safe-area 问题
  • Plain 主题首页对 Dark Mode 的支持

模版的功能完备是 Planet 的重要部分。所有的内置模版和 Planet App 一样,也都是开源软件,所以如果你发现任何模版相关的问题,也可以通过 GitHub Issues 甚至 PR 的方式反馈给我们:

  • https://github.com/Planetable/SiteTemplatePlain
  • https://github.com/Planetable/SiteTemplate8bit

接下来,我们会在 2022 年 8 月发布关于如何自己构建新模版的详细文档。

下面这个项目是来自开发者 Fledge Shiu 的一个有意思的模版,实现了中文竖排的效果:

https://github.com/FledgeXu/Vertical

然后这里是一个用 8-bit 模版的关于经典老游戏的博客:

https://zh.gamedb.eth.limo/

内置 go-ipfs 版本升级

Planet 内置的 go-ipfs 版本从 0.12 升级到了 0.14。从 0.13 版本开始,上游 Protocol Labs 将 go-ipfs 项目更名为了 kubo,所以之后我们如果需要在文档中提到 go-ipfs,我们会使用它的新名字 kubo。

由于 kubo 的版本升级,会在 Planet 启动时有一个迁移仓库的操作。如果你的本地 IPFS repo 的文件数量较大,那么这个迁移可能会需要一些时间,让它跑一会就好。

我们会在未来的版本中提供更多针对本地 IPFS repo 的图形界面管理功能。

RSS 订阅器相关的细节改进

其实从 Planet 的第一个发布版本开始,这个软件就是带有 RSS 订阅功能的。但是因为一些细节还不够好用,所以我们之前没有公开宣布过这个功能的存在。

在这次的 0.8.0 更新中,我们针对 RSS 订阅的很多细节功能做了改进和测试,所以现在我们可以有一些信心来邀请你试用一下。

这里有一些有趣的 RSS 订阅源:

  • Low Tech Magazine: 一个完全靠太阳能驱动的网站,所以阴天的时候可能会断线。
  • YouTube 上的 Deep Look 频道:各种有趣动物的 4K 科普视频

YouTube Channel: Deep Look

很多会持续更新内容的网站,很可能都带有 RSS 订阅地址,一个例子就是 YouTube 上的各类 Channel 的首页。你可以尝试直接把网址填入到 Follow Planet 那里,如果内容源上确实存在 RSS 地址,那么就可以用 Planet 订阅。

如果你在使用 RSS 订阅功能的过程中遇到问题,欢迎反馈到下面这些社区渠道:

提醒相关的细节改进

我们在这次更新中进一步改进了 Local Notification 的工作方式。现在如果你收到了订阅的 Planet 的内容更新提醒,那么点击 Notification 就可以直接跳转到这篇文章。

其他细节改进

  • 更换了 Markdown 渲染引擎,现在 Planet 可以输出和 GitHub Flavored Markdown 完全一致的结果,同时也解决了之前由于使用 Ink 渲染所带来的一些 crash 问题。
  • 现在在查看文章时,如果执行了任何的下载相关的操作,那么这些操作可以正常工作了,并且可以从一个新的 Download Manager 窗口中看到下载进度。之前的版本中由于缺乏对 WKDownloadDelegate 的实现而导致了下载相关的操作没有反应。
  • 改进了对 DNSLink 加载内容的支持。值得注意的是,如果你希望以 DNSLink 方式订阅一个 IPFS 上的网站,那么需要在 Follow Planet 窗口使用 planet 协议,比如这样去输入域名 planet://zu1k.com
  • 从 Planet 发布的 IPNS 记录的 TTL 时间从 1 周调整到了 1 年。但 IPNS 记录在节点上的存在时间,依然取决于很多其他因素。所以,如果你希望保持你的 IPNS 记录有效,那么至少每周打开 Planet 运行一段时间,就肯定没有问题的。关于 IPNS 及 Pinning 这几个复杂而又重要的技术细节,我们会在接下来的一篇博客里详细介绍。

以上是本次 0.8.0 更新里的主要新功能和改进。如果你在使用中遇到问题,可以从以下社区渠道向开发者反馈或者寻求社区协助:

如果你十分确定遇到了软件实现上的 bug,那么可以通过 GitHub Issues 向我们描述如何复现 bug,我们会尽快调查和解决。

 
Planet Feature Update 1

这是 Planet 的第一个功能更新,版本号 0.7.0。

视频发布

现在在发布文章时,可以为文章附加一条视频。效果就像现在你看到的这篇一样。如果你现在在用的屏幕支持 HDR(比如新款 14 和 16 MacBook Pro 的屏幕),你会注意到这个视频是 HDR 的。

数据存储优化

我们对 App 底层的数据架构做了一次比较大的重构,来解决在上个月初次发布的版本中遇到的一些问题。在有了这个新的数据层之后,整个 App 的性能会有一个明显的提升。比如之前在打开 Unread 时可能会感受到的延迟现在消失了。如果你在升级之后遇到任何和数据相关的问题,可以到这个 Telegram 群寻求开发者支持 https://t.me/+5bl7FIsxeChlOWIz

另外就是,现在 App 在检查到新的内容更新时,会发送本地通知。我们会继续增强和 Notification 有关的功能的使用体验。

增强的 ENS 支持

最近我们发现了一个性能很好的 ENS Gateway——ETH.LIMO,然后我们把 App 里如果用传统浏览器打开 ENS 链接的地方都换成了这个。这样如果你需要把自己发布在 ENS 上的内容发给没有安装 Planet 也没有在使用 Brave 的朋友,那么你可以使用类似下面这样的连接:

https://olivida.eth.limo/

 
Introducing Planet

Planet 是一个开源的 macOS 原生 App,让你可以直接从自己的电脑上发布一个网站或者博客到 IPFS,并且这个网站或者博客可以绑定到一个 ENS 域名(比如 .eth 结尾)上。因为 IPFS 和 ENS 都是去中心化的,所以你发布的这个网站也是去中心化的。其他人可以通过这个 App 来 follow 你最新的更新,你的更新可以直接到达你的观众,不依赖一个中心化的云。

目前这个 App 还处在一个非常早期的阶段,还有很多实现上的问题。我们会在后续继续更新。如果你之前玩过 IPFS 或者 ENS,那么你可能会想要试试这个完全的 GUI 体验的发布方案。

开始使用

在 App 第一次启动时,会自动 follow 下面的这两个 ENS:

  • vitalik.eth - Ethereum 的创始人之一
  • planetable.eth - Planet 项目的博客

点击主界面下方的加号,就可以创建自己的 Planet。在创建并写了第一个篇文章之后,你的 Planet 就会被发布为一个 IPNS。右键点击侧栏里你的网站,选择 Copy IPNS。然后你就会在剪贴板中获得像这样的一串东西:

k51qzi5uqu5dgbfw2poynnynor8h9kqqoxmzdrxy4h4wnzx1x5p4n40ijtosxk

然后你把这串 IPNS 发给其他 Planet 用户,他们就可以收到来自你的更新了。

你用 Planet 发布的网站,也可能可以通过各种 Public Gateway 访问,比如这是你当前正在阅读的这篇文章在各个 Gateway 上的地址(URL 拼接规则是 Public Gateway 域名 + /ipns/ + Planet.ipns + / + Article.UUID):

绑定 ENS

你可以把 Planet 发布出来的 IPNS 设置为你的 ENS 域名的 Content Hash。这类似于在传统 DNS 中设置一条 A 记录。

打开 app.ens.domains 然后在 Content 处填入你刚才获得的 IPNS,记得在前面加上协议 ipns://,就像下面截图中这样:

set-content-hash.png

注意因为设定 Content Hash 会是一个 ENS 合约上的操作,所以这一步会有 gas 费。但是之后你在 Planet 里发布新的内容,你的 IPNS 不会发生改变,也不会再有 gas 费的问题。

在完成了 ENS 绑定之后,也可以直接用类似下面这样的地址通过 Public Gateway 打开你的 ENS:

在原生支持 IPFS 的 Brave 浏览器里,你甚至可以用 ipns://olivida.eth 这样的地址直接打开你用 Planet 发布的网站。

brave-eth.png

记得在 Brave 设置中将 Method to resolve IPFS resources 设置为 Brave local IPFS node,这样你才可以通过真正的去中心化方式访问。

因为目前 Planet 还处在一些非常大的变化中,因此时不时备份你的 IPNS key 是非常有必要的。在 0.8+ 版本中备份的操作方式是侧栏中选中自己的 Planet,然后从右键菜单中选择 Export Planet。

一些已知问题

由于 IPFS 的 DHT 本质,虽然你用 Planet 发布出来的 IPNS 可以通过 IPFS 的 Public Gateway 访问,但是第一次的速度可能会非常缓慢,甚至打不开。

当你把 IPNS 发给其他人,让其他人 follow 你时,你的 App 必须处于打开状态,否则别人无法获得内容。当然,如果你熟悉 IPFS 的特性,那么你可以用 Pin 的方式加速和解决这个问题。关于 Pin 的优化,我们会在之后的文档中详细解释。每一个 follower 的获取更新时,也会做一个 pin 操作。因此如果一个内容的访问者越多,那么在 IPFS 网络中的性能也就会越好。

你的网站内容每次更新时,所有 follow 你的人在获得更新时大概会是一个分钟级别的延迟。

目前 Planet 里有一些地方允许你用 Public Gateway 去测试打开你发布的内容。我们目前使用的 Public Gateway 是 dweb.link,之后这个地方会变成一个可以更改的选项。

另外值得说明的是,由于 IPFS 的 DHT 本质,所以是可以看到一条内容可以通过哪些 IP 提供服务。就像你通过 BitTorrent 下载时,你的 IP 也会被其他节点看到。

开源及下载

Planet 的最新版本会在 planetable.xyz 的首页或者我们的 GitHub 项目首页提供。

如果你遇到了什么问题,或者是想要新功能,可以在 GitHub 上以创建 issue 的方式提给我们。

或者加入我们在 Telegram 上的中文用户群:

https://t.me/+5bl7FIsxeChlOWIz

 
Hello World

按照两个月之前的计划,在 2022 年 6 月 1 日这天上线了 planetable.xyz

这一年一直在想的就是,如果我能够有机会,把一个 idea 给完整地执行出来会怎样。现在这个机会就这样正在实现中,我很感激走过来的每一步。

如果每一个细节背后,都能够有足够的思考和设计,那结果就不会是一个赶着上线的垃圾,而是在很多年之后,你甚至都会想去高清重制它。

我们生活在这样的一个千兆网络、高速 SSD、多核 CPU 逐渐变成日常用品的时代。未来已经到来,只是没有均匀分布。Planet 就是这个时代的一种全新的互联网内容创作和分发的试验。