{
  "about" : "Make · Believe",
  "articles" : [
    {
      "articleType" : 0,
      "attachments" : [
        "Wish You Were Here.mp3"
      ],
      "audioByteLength" : 7709910,
      "audioDuration" : 321,
      "audioFilename" : "Wish You Were Here.mp3",
      "cids" : {
        "Wish You Were Here.mp3" : "QmSfXMgBohkRvgk4HUoiC8nqfnvwjZQvDEvjNXcrDNDmwM"
      },
      "content" : "# JuiceboxDAO Town Hall Meeting Summary\n\n## Main Discussion Topics:\n\n",
      "contentRendered" : "<h1>JuiceboxDAO Town Hall Meeting Summary</h1>\n<h2>Main Discussion Topics:</h2>\n",
      "created" : 740487508.513649,
      "externalLink" : "",
      "hasAudio" : true,
      "hasVideo" : false,
      "id" : "1B32755D-BB05-41D4-B345-F67CA54E7C4E",
      "link" : "/1B32755D-BB05-41D4-B345-F67CA54E7C4E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "FC#65 Town Hall A"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "eventually, these imperfections in AI results will disappear.",
      "contentRendered" : "<p>eventually, these imperfections in AI results will disappear.</p>\n",
      "created" : 734982405.498404,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "3259AAA9-B6CC-4895-9694-F4532D68CF69",
      "link" : "/3259AAA9-B6CC-4895-9694-F4532D68CF69/",
      "slug" : "",
      "tags" : {

      },
      "title" : ""
    },
    {
      "articleType" : 0,
      "attachments" : [
        "C78A.png"
      ],
      "cids" : {
        "C78A.png" : "QmeZdcjT7GTFJErZr3fXrxXwxB3CYKwFH2QZ4EW36rqCvm"
      },
      "content" : "<img alt=\"C78A\" src=\"C78A.png\">\n",
      "contentRendered" : "<img alt=\"C78A\" src=\"C78A.png\">\n",
      "created" : 732783497.726651,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/88CFED01-E385-430B-AE6C-E876611B5CFA/C78A.png",
      "heroImageFilename" : "C78A.png",
      "heroImageHeight" : 2436,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/88CFED01-E385-430B-AE6C-E876611B5CFA/C78A.png",
      "heroImageWidth" : 1125,
      "id" : "88CFED01-E385-430B-AE6C-E876611B5CFA",
      "link" : "/88CFED01-E385-430B-AE6C-E876611B5CFA/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Multiline/long title when writing on mobile?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "contentRendered" : "",
      "created" : 732783440.830435,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "25ACFC9B-50FD-4EC1-95A6-5F0B7EB7E0A7",
      "link" : "/25ACFC9B-50FD-4EC1-95A6-5F0B7EB7E0A7/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Refresh after new post has been created?"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "2072.png"
      ],
      "cids" : {
        "2072.png" : "QmZKoQEfeNBRc2iNTLqA3mNZ8oWgTiCCpsPNw2Uj3FsDCm"
      },
      "content" : "<img alt=\"2072\" src=\"2072.png\">\n",
      "contentRendered" : "<img alt=\"2072\" src=\"2072.png\">\n",
      "created" : 732783384.250802,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/668EF612-486D-4559-9E50-D2F0A7416551/2072.png",
      "heroImageFilename" : "2072.png",
      "heroImageHeight" : 2436,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/668EF612-486D-4559-9E50-D2F0A7416551/2072.png",
      "heroImageWidth" : 1125,
      "id" : "668EF612-486D-4559-9E50-D2F0A7416551",
      "link" : "/668EF612-486D-4559-9E50-D2F0A7416551/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Online indicator?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- 视频应该尽可能显示在 viewport 之内\n- 图片的滚动是可以被接受的，并且最好不要在图片上有 clipping",
      "contentRendered" : "<ul>\n<li>视频应该尽可能显示在 viewport 之内</li>\n<li>图片的滚动是可以被接受的，并且最好不要在图片上有 clipping</li>\n</ul>\n",
      "created" : 732779794.952934,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "06632867-3453-4220-9A19-724692D31417",
      "link" : "06632867-3453-4220-9A19-724692D31417",
      "slug" : "",
      "tags" : {

      },
      "title" : "视频和图片不应该使用同样的 max-height 规则"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Screenshot 2024-03-14 at 1.40.52 AM.png",
        "app-settings.png",
        "planet-settings.png"
      ],
      "cids" : {
        "app-settings.png" : "QmQVnWFt4UZrt7FowhN8jyNzzx6kX11Mrx3rUwMCRMEhcn",
        "planet-settings.png" : "QmVMznBrN8J99taTRyCYoVqsMy2fp8ehM2U54LJiLwGDi7",
        "Screenshot 2024-03-14 at 1.40.52 AM.png" : "QmYDCqS9ka7aWeq69BHM3Ze1csp65yTcbpAmu756bo5UXh"
      },
      "content" : "我们为 Planet 构建了一个简单的 iPhone 应用，现在已经可以通过 TestFlight 安装使用：\n\nhttps://testflight.apple.com/join/I4tSZmug\n\n这个 App 是 Planet 桌面版的手机客户端，因此需要 Planet 桌面版作为服务器。\n\n需要从 Planet 桌面的 Settings 中打开 API Server 的支持（API Server 的支持是默认关闭的）。\n\n<img width=\"704\" alt=\"planet-settings\" src=\"planet-settings.png\">\n\n可以设置是否需要用户名密码验证。\n\n<img width=\"1064\" alt=\"Screenshot 2024-03-14 at 1.40.52 AM\" src=\"Screenshot 2024-03-14 at 1.40.52 AM.png\">\n\n然后在第一次启动 Planet iOS App 时，需要填入服务器地址。\n\n<img height=\"400\" alt=\"app-settings\" src=\"app-settings.png\">\n\n也可以通过 Discover Nearby Servers 来找到在同一个局域网里的 Planet 桌面版。\n\n## 远程访问\n\n那么你可能会问，如果和 Planet 桌面版不在同一个局域网里的时候怎么办？这也其实是我们大部分时候需要使用手机的场景。那么目前有两种可能的解决方案：\n\n### Tailscale\n\n在 Mac 和 iPhone 上都安装 [Tailscale](https://www.tailscale.com/)。这是一个非常不错的虚拟网络 App，可以让你的所有安装了 Tailscale 的设备始终处于同一个虚拟网络里。\n\n### Cloudflare Tunnel\n\n在 Mac 上安装 [Cloudflare Tunnel](https://www.cloudflare.com/products/tunnel/)。这个方案可以将本地内网里的任意应用暴露到你自己的一个域名上。假设 Planet 的 API 服务器的地址是 192.168.1.2:8086，那么你可以把这个地址暴露到自己你的域名上，比如 planet.example.com 这样的域名。只是这种方式因为将内网服务暴露到了公网，因此请一定设置用户名和密码验证。",
      "contentRendered" : "<p>我们为 Planet 构建了一个简单的 iPhone 应用，现在已经可以通过 TestFlight 安装使用：</p>\n<p><a href=\"https://testflight.apple.com/join/I4tSZmug\">https://testflight.apple.com/join/I4tSZmug</a></p>\n<p>这个 App 是 Planet 桌面版的手机客户端，因此需要 Planet 桌面版作为服务器。</p>\n<p>需要从 Planet 桌面的 Settings 中打开 API Server 的支持（API Server 的支持是默认关闭的）。</p>\n<img width=\"704\" alt=\"planet-settings\" src=\"planet-settings.png\">\n<p>可以设置是否需要用户名密码验证。</p>\n<img width=\"1064\" alt=\"Screenshot 2024-03-14 at 1.40.52 AM\" src=\"Screenshot 2024-03-14 at 1.40.52 AM.png\">\n<p>然后在第一次启动 Planet iOS App 时，需要填入服务器地址。</p>\n<img height=\"400\" alt=\"app-settings\" src=\"app-settings.png\">\n<p>也可以通过 Discover Nearby Servers 来找到在同一个局域网里的 Planet 桌面版。</p>\n<h2>远程访问</h2>\n<p>那么你可能会问，如果和 Planet 桌面版不在同一个局域网里的时候怎么办？这也其实是我们大部分时候需要使用手机的场景。那么目前有两种可能的解决方案：</p>\n<h3>Tailscale</h3>\n<p>在 Mac 和 iPhone 上都安装 <a href=\"https://www.tailscale.com/\">Tailscale</a>。这是一个非常不错的虚拟网络 App，可以让你的所有安装了 Tailscale 的设备始终处于同一个虚拟网络里。</p>\n<h3>Cloudflare Tunnel</h3>\n<p>在 Mac 上安装 <a href=\"https://www.cloudflare.com/products/tunnel/\">Cloudflare Tunnel</a>。这个方案可以将本地内网里的任意应用暴露到你自己的一个域名上。假设 Planet 的 API 服务器的地址是 192.168.1.2:8086，那么你可以把这个地址暴露到自己你的域名上，比如 planet.example.com 这样的域名。只是这种方式因为将内网服务暴露到了公网，因此请一定设置用户名和密码验证。</p>\n",
      "created" : 732081576.613954,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/404AA13D-46D1-453C-AC94-BAB9664BCAA2/app-settings.png",
      "heroImageFilename" : "app-settings.png",
      "heroImageHeight" : 2436,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/404AA13D-46D1-453C-AC94-BAB9664BCAA2/app-settings.png",
      "heroImageWidth" : 1125,
      "id" : "404AA13D-46D1-453C-AC94-BAB9664BCAA2",
      "link" : "/404AA13D-46D1-453C-AC94-BAB9664BCAA2/",
      "slug" : "",
      "tags" : {

      },
      "title" : "在 iPhone 上使用 Planet"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "判断标准可以是 item[0] 的 UUID\n\n既然在 eth.limo 上是不太可能用上 SSE 的。",
      "contentRendered" : "<p>判断标准可以是 item[0] 的 UUID</p>\n<p>既然在 eth.limo 上是不太可能用上 SSE 的。</p>\n",
      "created" : 722484155.830864,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "6CD0AA2B-5BA6-40F6-8BF8-3C1A2AFBECB2",
      "link" : "/6CD0AA2B-5BA6-40F6-8BF8-3C1A2AFBECB2/",
      "slug" : "",
      "tags" : {

      },
      "title" : "如果 Sepia 的 index page 每分钟检测到 planet.json 发生变化，就刷新自己？"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "contentRendered" : "",
      "created" : 721465051.403543,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "42061D1A-7AE2-4311-894F-B9A25C490C8E",
      "link" : "/42061D1A-7AE2-4311-894F-B9A25C490C8E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Check with Pinnable should return a confirmation dialog about the result?"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "blog-c9544e19e61acf884bd41fe6a9dae2dc.png",
        "manager-8830eca55b04ec903116f7ca258dd30d.png",
        "settings-381333eb919f114e102630eaf6b3347e.png"
      ],
      "cids" : {
        "blog-c9544e19e61acf884bd41fe6a9dae2dc.png" : "QmXwmq1n39SDfXVPcoMaw9M6uJN1h77BXVRBHiKvRY8agf",
        "manager-8830eca55b04ec903116f7ca258dd30d.png" : "QmSNFcxm7PGuhDhyYVFGnsq7cam1ffLFcFGmxvNLd3nrZF",
        "settings-381333eb919f114e102630eaf6b3347e.png" : "QmQfHkVPDL7zvfhiVJqTxNZhy8aVjpTq8eYTMaFWGUySx2"
      },
      "content" : "<img width=\"2013\" alt=\"blog-c9544e19e61acf884bd41fe6a9dae2dc\" src=\"blog-c9544e19e61acf884bd41fe6a9dae2dc.png\">\n\n<img width=\"2012\" alt=\"manager-8830eca55b04ec903116f7ca258dd30d\" src=\"manager-8830eca55b04ec903116f7ca258dd30d.png\">\n\n<img width=\"2012\" alt=\"settings-381333eb919f114e102630eaf6b3347e\" src=\"settings-381333eb919f114e102630eaf6b3347e.png\">",
      "contentRendered" : "<img width=\"2013\" alt=\"blog-c9544e19e61acf884bd41fe6a9dae2dc\" src=\"blog-c9544e19e61acf884bd41fe6a9dae2dc.png\">\n<img width=\"2012\" alt=\"manager-8830eca55b04ec903116f7ca258dd30d\" src=\"manager-8830eca55b04ec903116f7ca258dd30d.png\">\n<img width=\"2012\" alt=\"settings-381333eb919f114e102630eaf6b3347e\" src=\"settings-381333eb919f114e102630eaf6b3347e.png\">\n",
      "created" : 721079071.262537,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/94B18E44-892B-4914-871A-6BD4D0D29028/blog-c9544e19e61acf884bd41fe6a9dae2dc.png",
      "heroImageFilename" : "blog-c9544e19e61acf884bd41fe6a9dae2dc.png",
      "heroImageHeight" : 5141,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/94B18E44-892B-4914-871A-6BD4D0D29028/blog-c9544e19e61acf884bd41fe6a9dae2dc.png",
      "heroImageWidth" : 2013,
      "id" : "94B18E44-892B-4914-871A-6BD4D0D29028",
      "link" : "/94B18E44-892B-4914-871A-6BD4D0D29028/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Posthaven Screenshots"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Store or the API manager can hold a var like needsToRestart = false.\n\nEach time there is a change, set it to true. Then after restart, set it back to false.",
      "contentRendered" : "<p>Store or the API manager can hold a var like needsToRestart = false.</p>\n<p>Each time there is a change, set it to true. Then after restart, set it back to false.</p>\n",
      "created" : 720681950.676801,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "276B6A78-798A-49E6-9360-361C8B5FFAC9",
      "link" : "/276B6A78-798A-49E6-9360-361C8B5FFAC9/",
      "slug" : "",
      "tags" : {

      },
      "title" : "When to restart the API service?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "/about/ link on a followed site should not open /about/ of a local my site.",
      "contentRendered" : "<p>/about/ link on a followed site should not open /about/ of a local my site.</p>\n",
      "created" : 720660928.025609,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "D987C794-DD84-4403-8B81-105DFD7E26C2",
      "link" : "/D987C794-DD84-4403-8B81-105DFD7E26C2/",
      "slug" : "",
      "tags" : {

      },
      "title" : "bug: internal link"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Screenshot 2023-11-01 at 9.08.40 PM.png"
      ],
      "cids" : {
        "Screenshot 2023-11-01 at 9.08.40 PM.png" : "QmWAXG6xHcFbgfjwJRVE7VzPbnGjWvAypWRzbcJEJfh59Z"
      },
      "content" : "Would be great for here.",
      "contentRendered" : "<p>Would be great for here.</p>\n",
      "created" : 720590908.024533,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/F4368475-684B-435D-A7F8-3F24FB652078/Screenshot%202023-11-01%20at%209.08.40%E2%80%AFPM.png",
      "heroImageFilename" : "Screenshot 2023-11-01 at 9.08.40 PM.png",
      "heroImageHeight" : 1030,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/F4368475-684B-435D-A7F8-3F24FB652078/Screenshot%202023-11-01%20at%209.08.40%E2%80%AFPM.png",
      "heroImageWidth" : 768,
      "id" : "F4368475-684B-435D-A7F8-3F24FB652078",
      "link" : "/F4368475-684B-435D-A7F8-3F24FB652078/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planet Link Tree"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Visitors first go to the fast layer, the uncached RT backend (with super short timeout), if timed out or other error occurred, then try the cached backend.",
      "contentRendered" : "<p>Visitors first go to the fast layer, the uncached RT backend (with super short timeout), if timed out or other error occurred, then try the cached backend.</p>\n",
      "created" : 720538727.721949,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "5B634DC4-B250-4D52-8779-8CE2A8920A36",
      "link" : "/5B634DC4-B250-4D52-8779-8CE2A8920A36/",
      "slug" : "",
      "tags" : {

      },
      "title" : "What if the Pinnable origin has multi layer caching?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "contentRendered" : "",
      "created" : 720172631.189444,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "0D55D8DF-D651-4882-8B24-32C24CDEBCFA",
      "link" : "/0D55D8DF-D651-4882-8B24-32C24CDEBCFA/",
      "slug" : "",
      "tags" : {

      },
      "title" : "What if I made *.iweb.eth offchain?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "既然 `planet.json` 里已经有所有信息，那么这件事情应该不会太难？",
      "contentRendered" : "<p>既然 <code>planet.json</code> 里已经有所有信息，那么这件事情应该不会太难？</p>\n",
      "created" : 720171308.72788,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "AF867F0B-045B-4001-9535-7E7356211778",
      "link" : "/AF867F0B-045B-4001-9535-7E7356211778/",
      "slug" : "",
      "tags" : {
        "sepia" : "Sepia"
      },
      "title" : "Sepia 模版里的搜索"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "contentRendered" : "",
      "created" : 720170952.074043,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "86156E8A-31A1-4233-82DD-4A24FAE6799E",
      "link" : "/86156E8A-31A1-4233-82DD-4A24FAE6799E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Sepia 主题的模版里不应该有对 zora.co 的依赖"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "## Step 1 - 支持 *.example.org\n\n每次 pin 完成之后，将 pinned CID 写入传统域名的 DNSLink TXT 记录。\n\n这步完成之后，那么 /ipns/demo.example.org 就已经可以访问了。\n\n然后需要为这样的域名添加一条源站记录，这样就可以实现 https://demo.example.org 也可以访问。\n\n## Step 2 - 支持用户带入自己的域名",
      "contentRendered" : "<h2>Step 1 - 支持 *.example.org</h2>\n<p>每次 pin 完成之后，将 pinned CID 写入传统域名的 DNSLink TXT 记录。</p>\n<p>这步完成之后，那么 /ipns/demo.example.org 就已经可以访问了。</p>\n<p>然后需要为这样的域名添加一条源站记录，这样就可以实现 <a href=\"https://demo.example.org\">https://demo.example.org</a> 也可以访问。</p>\n<h2>Step 2 - 支持用户带入自己的域名</h2>\n",
      "created" : 720170699.023431,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "1CD61F99-DF54-4C71-8636-6B6E77D51B54",
      "link" : "/1CD61F99-DF54-4C71-8636-6B6E77D51B54/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Pinnable 帮助用户绑定传统域名"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://www.youtube.com/watch?v=KrPsyr8Ig6M\n\nCool things I learned from this video:\n\n* Automerge https://automerge.org\n* BroadcastChannel https://caniuse.com/broadcastchannel",
      "contentRendered" : "<iframe width=\"100%\" style=\"aspect-ratio: 16/9\" src=\"https://www.youtube.com/embed/KrPsyr8Ig6M\" title=\"YouTube Video\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n<p>Cool things I learned from this video:</p>\n<ul>\n<li>Automerge <a href=\"https://automerge.org\">https://automerge.org</a></li>\n<li>BroadcastChannel <a href=\"https://caniuse.com/broadcastchannel\">https://caniuse.com/broadcastchannel</a></li>\n</ul>\n",
      "created" : 720161177.36913,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "AB6C7B82-9A97-438D-BFEA-70BEEC2C37B2",
      "link" : "/AB6C7B82-9A97-438D-BFEA-70BEEC2C37B2/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Local-first software - Peter Van Hardenberg"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Things to do before we can launch the first test version of iOS app:\n\n- [x] Bonjour service browser\n- [x] Outbox view",
      "contentRendered" : "<p>Things to do before we can launch the first test version of iOS app:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Bonjour service browser</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Outbox view</li>\n</ul>\n",
      "created" : 720117017.120617,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "3A874AF6-2566-4047-A8EA-0A7124E407A6",
      "link" : "/3A874AF6-2566-4047-A8EA-0A7124E407A6/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Project Management"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- [ ] Launched on Juicebox: https://juicebox.money/v2/p/471\n- [ ] Juicebox Revenue\n- [ ] Launched Pinnable: https://pinnable.xyz\n- [ ] Pinnable ERC-20 and NFT benefits\n- [ ] Croptop\n- [ ] RevNet ",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> Launched on Juicebox: <a href=\"https://juicebox.money/v2/p/471\">https://juicebox.money/v2/p/471</a></li>\n<li><input type=\"checkbox\" disabled=\"\" /> Juicebox Revenue</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Launched Pinnable: <a href=\"https://pinnable.xyz\">https://pinnable.xyz</a></li>\n<li><input type=\"checkbox\" disabled=\"\" /> Pinnable ERC-20 and NFT benefits</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Croptop</li>\n<li><input type=\"checkbox\" disabled=\"\" /> RevNet</li>\n</ul>\n",
      "created" : 720111298.160749,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "9B1327BA-C4C9-4EC5-A920-C5C4DE3B7B9F",
      "link" : "/9B1327BA-C4C9-4EC5-A920-C5C4DE3B7B9F/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Good 2023"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "F5tiBU8bYAA8W5f.jpg",
        "F5tiBwLaYAAjUp6.jpg",
        "F5tiCHlboAAnsyk.jpg",
        "F5tiCceb0AAyeyQ.jpg"
      ],
      "cids" : {
        "F5tiBU8bYAA8W5f.jpg" : "QmQPLdUyK4epvcrx6gachjH8tie2WetfCXod3RB5oo5HxT",
        "F5tiBwLaYAAjUp6.jpg" : "QmWLnsPaqrjRkLhX2u1VeLoeWDPHtDG67d62rtEbM4FBby",
        "F5tiCceb0AAyeyQ.jpg" : "QmXuTnBtUrLkCYpgnomSnBKyuKXeY51K5tLhhv9nvbngWb",
        "F5tiCHlboAAnsyk.jpg" : "QmcQwpd6wsVjsVNiVrXiwbE2GBviS3KezP39mRoAF5UTFE"
      },
      "content" : "",
      "contentRendered" : "",
      "created" : 720106989.271221,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/71F6F423-E283-43EF-ACAC-8E64426AEAED/F5tiBwLaYAAjUp6.jpg",
      "heroImageFilename" : "F5tiBwLaYAAjUp6.jpg",
      "heroImageHeight" : 1461,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/71F6F423-E283-43EF-ACAC-8E64426AEAED/F5tiBwLaYAAjUp6.jpg",
      "heroImageWidth" : 2000,
      "id" : "71F6F423-E283-43EF-ACAC-8E64426AEAED",
      "link" : "/71F6F423-E283-43EF-ACAC-8E64426AEAED/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Backstages"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "当 RSS 这样的收发信息的方式能够被更充分地用起来的时候，V2EX 或许就只是一个信息的暂存地，意义在于帮助了信息的流动过程，仅此而已。如果有很多个这样的暂存地存在，同时信息的主要阅读和交互过程并不强依赖某个特定暂存地的功能，那或许可以开启一些非常有趣的新的未来的可能性。",
      "contentRendered" : "<p>当 RSS 这样的收发信息的方式能够被更充分地用起来的时候，V2EX 或许就只是一个信息的暂存地，意义在于帮助了信息的流动过程，仅此而已。如果有很多个这样的暂存地存在，同时信息的主要阅读和交互过程并不强依赖某个特定暂存地的功能，那或许可以开启一些非常有趣的新的未来的可能性。</p>\n",
      "created" : 720092108.663047,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "39EEED95-396B-445F-88E2-78FFB50885F2",
      "link" : "/39EEED95-396B-445F-88E2-78FFB50885F2/",
      "slug" : "",
      "tags" : {

      },
      "title" : "V2EX RSS"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Polyphia - Goose.m4a"
      ],
      "audioByteLength" : 3971631,
      "audioDuration" : 245,
      "audioFilename" : "Polyphia - Goose.m4a",
      "cids" : {
        "Polyphia - Goose.m4a" : "QmUZEMNKxMHAqgT6ddmsvFB3qKwj5s8wjuJsQqVXxKiCi1"
      },
      "content" : "Taken from the EP The Most Hated",
      "contentRendered" : "<p>Taken from the EP The Most Hated</p>\n",
      "created" : 720090400.238076,
      "externalLink" : "",
      "hasAudio" : true,
      "hasVideo" : false,
      "id" : "1317A153-DEAB-4AE4-9292-48FCCB7D21FA",
      "link" : "/1317A153-DEAB-4AE4-9292-48FCCB7D21FA/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Polyphia Goose"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Polyphia - G.O.A.T.m4a"
      ],
      "audioByteLength" : 3487599,
      "audioDuration" : 215,
      "audioFilename" : "Polyphia - G.O.A.T.m4a",
      "cids" : {
        "Polyphia - G.O.A.T.m4a" : "QmXgt1mJtWV8zqCdCLUHNnTJGyR2RPwBvuS8Fyfr2SAC4V"
      },
      "content" : "\"G.O.A.T\" is from Polyphia's album, New Levels New Devils.",
      "contentRendered" : "<p>&quot;G.O.A.T&quot; is from Polyphia's album, New Levels New Devils.</p>\n",
      "created" : 720088823.042557,
      "externalLink" : "",
      "hasAudio" : true,
      "hasVideo" : false,
      "id" : "347A8BCB-2F70-40FE-BF7C-6F34AE63E645",
      "link" : "/347A8BCB-2F70-40FE-BF7C-6F34AE63E645/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Polyphia G.O.A.T."
    },
    {
      "articleType" : 0,
      "attachments" : [
        "F-Zero.mp4"
      ],
      "cids" : {
        "F-Zero.mp4" : "QmXeu2FtYRjs4dhaj79tGBG7xFem3iex9K1ueqYXm7QQtE"
      },
      "content" : "Great racing game on SNES!",
      "contentRendered" : "<p>Great racing game on SNES!</p>\n",
      "created" : 720087060.875021,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : true,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/3FE70403-8E0D-4765-96B9-8440EF068F13/_videoThumbnail.png",
      "heroImageFilename" : "_videoThumbnail.png",
      "heroImageHeight" : 224,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/3FE70403-8E0D-4765-96B9-8440EF068F13/_videoThumbnail.png",
      "heroImageWidth" : 261,
      "id" : "3FE70403-8E0D-4765-96B9-8440EF068F13",
      "link" : "/3FE70403-8E0D-4765-96B9-8440EF068F13/",
      "slug" : "",
      "tags" : {

      },
      "title" : "F-Zero",
      "videoFilename" : "F-Zero.mp4"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "mcspin4.gif"
      ],
      "cids" : {
        "mcspin4.gif" : "QmcfydZTBwTqzZSEwby7YeH43nfXWxoqpQ6Bn3m5sMi2nX"
      },
      "content" : "<img width=\"192\" alt=\"mcspin4\" src=\"mcspin4.gif\" style=\"border: none !important; box-shadow: none !important;\">\n\n\n",
      "contentRendered" : "<img width=\"192\" alt=\"mcspin4\" src=\"mcspin4.gif\" style=\"border: none !important; box-shadow: none !important;\">\n",
      "created" : 720086022.69698,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/3745DD4E-70C3-40CE-87DF-40FA442CD1CB/mcspin4.gif",
      "heroImageFilename" : "mcspin4.gif",
      "heroImageHeight" : 40,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/3745DD4E-70C3-40CE-87DF-40FA442CD1CB/mcspin4.gif",
      "heroImageWidth" : 192,
      "id" : "3745DD4E-70C3-40CE-87DF-40FA442CD1CB",
      "link" : "/3745DD4E-70C3-40CE-87DF-40FA442CD1CB/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Made with Macintosh"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "When adding a new website to Pinnable:\n\n## Full URL\n\n- https://jango.eth.limo/\n\n## IPNS with Protocol\n\n- ipns://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm\n\n---\n\nPinnable backend should be able to extract the central piece of the information.",
      "contentRendered" : "<p>When adding a new website to Pinnable:</p>\n<h2>Full URL</h2>\n<ul>\n<li><a href=\"https://jango.eth.limo/\">https://jango.eth.limo/</a></li>\n</ul>\n<h2>IPNS with Protocol</h2>\n<ul>\n<li>ipns://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm</li>\n</ul>\n<hr />\n<p>Pinnable backend should be able to extract the central piece of the information.</p>\n",
      "created" : 719760179.336549,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "F14C0F3A-6111-4CB3-8C69-E7C0D73EDB21",
      "link" : "/F14C0F3A-6111-4CB3-8C69-E7C0D73EDB21/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Possible Things Users can Paste"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Meaningful things to have in Nov 2023.\n\n- [ ] Further touch of the mobile app\n- [x] Feature-complete Sepia template\n- [ ] Search\n- [ ] New tweet-like input window/sheet\n- [ ] Toggle: Publish to IPFS\n- [ ] **Warning if quit during publishing**",
      "contentRendered" : "<p>Meaningful things to have in Nov 2023.</p>\n<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> Further touch of the mobile app</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Feature-complete Sepia template</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Search</li>\n<li><input type=\"checkbox\" disabled=\"\" /> New tweet-like input window/sheet</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Toggle: Publish to IPFS</li>\n<li><input type=\"checkbox\" disabled=\"\" /> <strong>Warning if quit during publishing</strong></li>\n</ul>\n",
      "created" : 719753669.960628,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "4BB6C063-8B28-4DE1-8BBA-96563812B7BE",
      "link" : "/4BB6C063-8B28-4DE1-8BBA-96563812B7BE/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Nov 2023"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "F884p4gasAAQ3GT.png"
      ],
      "cids" : {
        "F884p4gasAAQ3GT.png" : "QmS8AUudEFXL23kGQ2WjLDKavo7gx1HG96xgfrCaj8VEUh"
      },
      "content" : "<img width=\"750\" alt=\"F884p4gasAAQ3GT\" src=\"F884p4gasAAQ3GT.png\">\n\n\n",
      "contentRendered" : "<img width=\"750\" alt=\"F884p4gasAAQ3GT\" src=\"F884p4gasAAQ3GT.png\">\n",
      "created" : 719571717.957419,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/1B3BC29F-ECD8-4CFF-8D9A-4EAF16F5715C/F884p4gasAAQ3GT.png",
      "heroImageFilename" : "F884p4gasAAQ3GT.png",
      "heroImageHeight" : 750,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/1B3BC29F-ECD8-4CFF-8D9A-4EAF16F5715C/F884p4gasAAQ3GT.png",
      "heroImageWidth" : 750,
      "id" : "1B3BC29F-ECD8-4CFF-8D9A-4EAF16F5715C",
      "link" : "/1B3BC29F-ECD8-4CFF-8D9A-4EAF16F5715C/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Volvelle"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Can be tested first in Croptop.",
      "contentRendered" : "<p>Can be tested first in Croptop.</p>\n",
      "created" : 719568053.211781,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "28983BD2-03E1-4204-AA2C-BCBA304FA0B5",
      "link" : "/28983BD2-03E1-4204-AA2C-BCBA304FA0B5/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Full Rebuild and Quick Rebuild"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Things you want to accomplish in October 2023:\n\n- [x] Fix Pinnable OOM\n- [x] Implement the first NFT benefit in Pinnable\n- [ ] Touch the mobile app\n- [x] Release Sepia\n- [x] Release Croptop build with better support for Pinning\n\n## Touch the mobile app\n\n- [ ] Bonjour Browser View\n- [ ] Outbox View\n\n## Documentation\n\n- [ ] Introduce Pinnable in olivida.eth and planetable.eth\n- [ ] Write about IPNS and self-host of pinning",
      "contentRendered" : "<p>Things you want to accomplish in October 2023:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Fix Pinnable OOM</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Implement the first NFT benefit in Pinnable</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Touch the mobile app</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Release Sepia</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Release Croptop build with better support for Pinning</li>\n</ul>\n<h2>Touch the mobile app</h2>\n<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> Bonjour Browser View</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Outbox View</li>\n</ul>\n<h2>Documentation</h2>\n<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> Introduce Pinnable in olivida.eth and planetable.eth</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Write about IPNS and self-host of pinning</li>\n</ul>\n",
      "created" : 719445801.94997,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "9EADE654-AD69-4DB2-AA2D-66BF658CB710",
      "link" : "/9EADE654-AD69-4DB2-AA2D-66BF658CB710/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Oct 2023"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "把 Planet 里所有你觉得不舒服的细节记录下来，即使你不能现在马上去解决，但只要是记录下来了的，就一定可以被解决。\n\n这些被记录下来的细节应该尽可能详细，这样如果你将来要解决它们的时候，就可以马上知道需要做的具体行动是什么。\n\n- [ ] Writer Preview 里应该使用和 Plain 一样的 To-Do CSS\n- [x] Sonoma 里 Writer 不能添加附件\n- [x] 从菜单里完成 Published Folder -> Add Folder 之后，应该呼出 Published Folder Dashboard\n- [ ] 优化 Rebuild 过程的体验\n- [ ] Prewarm more URLs: homepage, planet.json, rss.xml\n- [x] 如果一个 Planet 正在 rebuild，那么 publish 任务应该马上退出，或者等待当前 rebuild 完成之后再运行",
      "contentRendered" : "<p>把 Planet 里所有你觉得不舒服的细节记录下来，即使你不能现在马上去解决，但只要是记录下来了的，就一定可以被解决。</p>\n<p>这些被记录下来的细节应该尽可能详细，这样如果你将来要解决它们的时候，就可以马上知道需要做的具体行动是什么。</p>\n<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> Writer Preview 里应该使用和 Plain 一样的 To-Do CSS</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Sonoma 里 Writer 不能添加附件</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 从菜单里完成 Published Folder -&gt; Add Folder 之后，应该呼出 Published Folder Dashboard</li>\n<li><input type=\"checkbox\" disabled=\"\" /> 优化 Rebuild 过程的体验</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Prewarm more URLs: homepage, planet.json, rss.xml</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 如果一个 Planet 正在 rebuild，那么 publish 任务应该马上退出，或者等待当前 rebuild 完成之后再运行</li>\n</ul>\n",
      "created" : 718350628.953299,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "2CC17E54-E0F6-4F43-9DBC-717B3B9E0A5F",
      "link" : "/2CC17E54-E0F6-4F43-9DBC-717B3B9E0A5F/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Annoyance"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "-  [x] 增加一个每分钟的定时器，用于检查是否已经在 Pinnable 里同步完成。\n-  [ ] Also add these features to Croptop",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 增加一个每分钟的定时器，用于检查是否已经在 Pinnable 里同步完成。</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Also add these features to Croptop</li>\n</ul>\n",
      "created" : 716364395.785546,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "87B32F07-DEA7-4FC2-89CE-78DDB9980B69",
      "link" : "/87B32F07-DEA7-4FC2-89CE-78DDB9980B69/",
      "slug" : "",
      "tags" : {

      },
      "title" : "0.15 里需要更多和 Pinnable 的交互"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Planet Intro.m4a"
      ],
      "audioByteLength" : 1251098,
      "audioDuration" : 40,
      "audioFilename" : "Planet Intro.m4a",
      "cids" : {
        "Planet Intro.m4a" : "QmTrTVoAzDnAcqsR6NEXeGzn71WVAqBGJb1jrWxBD4FyFw"
      },
      "content" : "",
      "created" : 715000709.828294,
      "externalLink" : "",
      "hasAudio" : true,
      "hasVideo" : false,
      "id" : "D392A9F5-58E6-4FF5-B86C-674268329F73",
      "link" : "/D392A9F5-58E6-4FF5-B86C-674268329F73/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planet Intro Audio"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://rinyuu.itch.io/pixsocials-pixelart-social-icon-set",
      "contentRendered" : "<p><a href=\"https://rinyuu.itch.io/pixsocials-pixelart-social-icon-set\">https://rinyuu.itch.io/pixsocials-pixelart-social-icon-set</a></p>\n",
      "created" : 714996287.63126,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "DF299919-02BE-41E4-822A-3FAA619AB1EA",
      "link" : "/DF299919-02BE-41E4-822A-3FAA619AB1EA/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Social Icons for the GameDB Template"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- [ ] My Article 的 Toolbar？",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> My Article 的 Toolbar？</li>\n</ul>\n",
      "created" : 714905470.81848,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "EA4801ED-A0CE-4370-B8C4-5086047D9BCF",
      "link" : "/EA4801ED-A0CE-4370-B8C4-5086047D9BCF/",
      "slug" : "",
      "tags" : {
        "planet" : "Planet",
        "tags" : "Tags"
      },
      "title" : "Tags 接下来需要在界面上有的"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "contentRendered" : "",
      "created" : 713797903.453599,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "E3C0AFC6-DA2C-4A9C-897B-4E849CBA2EA0",
      "link" : "/E3C0AFC6-DA2C-4A9C-897B-4E849CBA2EA0/",
      "slug" : "",
      "tags" : {
        "planet" : "Planet"
      },
      "title" : "How could I include Release Notes for the Insider builds?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://braid.org/",
      "contentRendered" : "<p><a href=\"https://braid.org/\">https://braid.org/</a></p>\n",
      "created" : 713783627.875468,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "C2B70688-F322-4259-B3B2-6BBF011EE4DB",
      "link" : "/C2B70688-F322-4259-B3B2-6BBF011EE4DB/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Braid"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/amark/gun",
      "contentRendered" : "<p><a href=\"https://github.com/amark/gun\">https://github.com/amark/gun</a></p>\n",
      "created" : 713783544.445508,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "B30DAF15-2CDD-454D-9430-A3DAD6C4C3F0",
      "link" : "/B30DAF15-2CDD-454D-9430-A3DAD6C4C3F0/",
      "slug" : "",
      "tags" : {

      },
      "title" : "amark/gun"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/sahib/brig",
      "contentRendered" : "<p><a href=\"https://github.com/sahib/brig\">https://github.com/sahib/brig</a></p>\n",
      "created" : 713783338.171929,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "168CDFB0-D78E-4FA5-9056-FF3CFAB2F1C8",
      "link" : "/168CDFB0-D78E-4FA5-9056-FF3CFAB2F1C8/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Brig: Ship your data around the world"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "但是在 Edit Article 保存时，却没有这个风火轮。所以应该是发生在 SettingsView 的保存逻辑里。\n\n---\n\nMyPlanetModel 的 savePublic 修改为 async 之后似乎解决了这个问题。",
      "contentRendered" : "<p>但是在 Edit Article 保存时，却没有这个风火轮。所以应该是发生在 SettingsView 的保存逻辑里。</p>\n<hr />\n<p>MyPlanetModel 的 savePublic 修改为 async 之后似乎解决了这个问题。</p>\n",
      "created" : 713688253.27592,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "A6D8F155-A83A-4CE4-88E6-9D755FB8D66A",
      "link" : "/A6D8F155-A83A-4CE4-88E6-9D755FB8D66A/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Article Settings 保存时有一个风火轮"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- [ ] How to use Article Settings\n- [ ] How to use Pinnable",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> How to use Article Settings</li>\n<li><input type=\"checkbox\" disabled=\"\" /> How to use Pinnable</li>\n</ul>\n",
      "created" : 712884760.901507,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "8ECC870C-0CDA-4763-893C-AFCA5E56B4E4",
      "link" : "/8ECC870C-0CDA-4763-893C-AFCA5E56B4E4/",
      "slug" : "",
      "tags" : {

      },
      "title" : "More detailed documentation to write"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "[Test](#link)\n\n## Link",
      "contentRendered" : "<p><a href=\"#link\">Test</a></p>\n<h2>Link</h2>\n",
      "created" : 711405895.854081,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "2A359C5B-F909-4429-8E93-89C6BCC871FF",
      "link" : "/2A359C5B-F909-4429-8E93-89C6BCC871FF/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Test MD Link"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Flowcharts use various shapes to signify different types of actions or steps in a process. Here are the common ones:\n\n1. **Oval**: This shape usually represents the start or end of a process.\n2. **Rectangle**: This is used to show an action or operation. It represents a step in the process where something is done.\n3. **Diamond**: This shape is used to represent a decision point. Typically, it contains a yes/no question or true/false test. From the diamond, there are usually two paths (yes and no) that lead to different rectangles (actions or operations).\n4. **Parallelogram**: This is used to represent inputs or outputs. It signifies that information is being entered into the system or result/output is being produced.\n5. **Arrow**: Arrows are used to guide the viewer through the process, showing the flow from one step to the next.\n6. **Circle or Ellipse**: Often used to represent a connector in a flowchart, showing that the flow continues elsewhere on the chart. This is often used in complex flowcharts.\n7. **Rectangle with Double Stripes (Subroutine)**: This represents a predefined process or operation, often known as a subroutine or a function that is already defined elsewhere.\n8. **Comment or Annotation**: It's a bracket or a note for adding additional comments about the process for clarification.\n\nRemember, these are typical uses and could vary depending on specific rules of a given organization or industry. The key is to ensure consistency and clarity in whatever system you use, and to provide a legend or key if the chart might be seen by others who aren't familiar with your symbols.",
      "contentRendered" : "<p>Flowcharts use various shapes to signify different types of actions or steps in a process. Here are the common ones:</p>\n<ol>\n<li><strong>Oval</strong>: This shape usually represents the start or end of a process.</li>\n<li><strong>Rectangle</strong>: This is used to show an action or operation. It represents a step in the process where something is done.</li>\n<li><strong>Diamond</strong>: This shape is used to represent a decision point. Typically, it contains a yes/no question or true/false test. From the diamond, there are usually two paths (yes and no) that lead to different rectangles (actions or operations).</li>\n<li><strong>Parallelogram</strong>: This is used to represent inputs or outputs. It signifies that information is being entered into the system or result/output is being produced.</li>\n<li><strong>Arrow</strong>: Arrows are used to guide the viewer through the process, showing the flow from one step to the next.</li>\n<li><strong>Circle or Ellipse</strong>: Often used to represent a connector in a flowchart, showing that the flow continues elsewhere on the chart. This is often used in complex flowcharts.</li>\n<li><strong>Rectangle with Double Stripes (Subroutine)</strong>: This represents a predefined process or operation, often known as a subroutine or a function that is already defined elsewhere.</li>\n<li><strong>Comment or Annotation</strong>: It's a bracket or a note for adding additional comments about the process for clarification.</li>\n</ol>\n<p>Remember, these are typical uses and could vary depending on specific rules of a given organization or industry. The key is to ensure consistency and clarity in whatever system you use, and to provide a legend or key if the chart might be seen by others who aren't familiar with your symbols.</p>\n",
      "created" : 710608351.812035,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "082C8328-0025-4472-8E63-F4BA6A64EEF1",
      "link" : "/082C8328-0025-4472-8E63-F4BA6A64EEF1/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Flowcharts"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- Video\n- Audio",
      "contentRendered" : "<ul>\n<li>Video</li>\n<li>Audio</li>\n</ul>\n",
      "created" : 708685756.78142,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "B43414FC-6E66-422D-BE92-283098FB0B21",
      "link" : "/B43414FC-6E66-422D-BE92-283098FB0B21/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Two more Article List filter options:"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "OTF.zip"
      ],
      "cids" : {
        "OTF.zip" : "QmckhEHF8PUiu6DCKA2otffboxWV5hNhzM5Ht8vDCCsu17"
      },
      "content" : "<a href=\"OTF.zip\">OTF.zip</a>",
      "contentRendered" : "<p><a href=\"OTF.zip\">OTF.zip</a></p>\n",
      "created" : 707531545.106719,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "8965C87A-4FE7-4F38-9D08-661559E972AA",
      "link" : "/8965C87A-4FE7-4F38-9D08-661559E972AA/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Berkeley Mono"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "http://localhost:8086/v0/planets/my/86CD840C-45FB-4226-93DB-C9AB68D9BAFD/public/D494EB17-AABE-4C27-B893-C8EEEA9583A2/index.html\n\nI can probably call it MyArticleModel.publicURLviaAPI",
      "contentRendered" : "<p><a href=\"http://localhost:8086/v0/planets/my/86CD840C-45FB-4226-93DB-C9AB68D9BAFD/public/D494EB17-AABE-4C27-B893-C8EEEA9583A2/index.html\">http://localhost:8086/v0/planets/my/86CD840C-45FB-4226-93DB-C9AB68D9BAFD/public/D494EB17-AABE-4C27-B893-C8EEEA9583A2/index.html</a></p>\n<p>I can probably call it MyArticleModel.publicURLviaAPI</p>\n",
      "created" : 707317894.24073,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "564E1232-6AE2-4D1B-98CA-D69B7A403B00",
      "link" : "/564E1232-6AE2-4D1B-98CA-D69B7A403B00/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Another way to load an article"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "If I can get it right with dry runs, we are getting closer to Sync.",
      "contentRendered" : "<p>If I can get it right with dry runs, we are getting closer to Sync.</p>\n",
      "created" : 706603047.105326,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "E9852669-0556-47C3-8651-8706692CF189",
      "link" : "/E9852669-0556-47C3-8651-8706692CF189/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Merge Dryrun"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "0a13eef722156602.mp4",
        "Screenshot 2023-05-23 at 11.23.43 PM.png"
      ],
      "cids" : {
        "0a13eef722156602.mp4" : "QmZx9v4HzNccZj5jdptq9j7jY1Pw6r94n5sEfhaP4D22Bo",
        "Screenshot 2023-05-23 at 11.23.43 PM.png" : "QmQ2ApvmQ655Pvw4RzqRSRrmyozxJVfSJS8UdCEBvNzyct"
      },
      "content" : "- [x] Must have: CI flow\n- [ ] Customizations in the CI flow for name, icon, and update\n- [ ] Test auto updating\n- [x] Must have: Icon design\n- [ ] Fully Working template and contracts and JB projects\n- [ ] Nice to have #1: WaterfallGrid\n- [ ] Nice to have #2: Nicer picture view\n- [x] Bundle the pixel font\n\n---\n\nWaterfallGrid\n\nSee the attached video.\n\n---\n\nNicer picture view window like this:\n\n<img width=\"1824\" alt=\"Screenshot 2023-05-23 at 11.23.43 PM\" src=\"Screenshot 2023-05-23 at 11.23.43 PM.png\">",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Must have: CI flow</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Customizations in the CI flow for name, icon, and update</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Test auto updating</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Must have: Icon design</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Fully Working template and contracts and JB projects</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Nice to have #1: WaterfallGrid</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Nice to have #2: Nicer picture view</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Bundle the pixel font</li>\n</ul>\n<hr />\n<p>WaterfallGrid</p>\n<p>See the attached video.</p>\n<hr />\n<p>Nicer picture view window like this:</p>\n<img width=\"1824\" alt=\"Screenshot 2023-05-23 at 11.23.43 PM\" src=\"Screenshot 2023-05-23 at 11.23.43 PM.png\">\n",
      "created" : 706602861.939579,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : true,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/9D1397DC-38A3-49BA-97E7-A9DB52FCE0FC/_videoThumbnail.png",
      "heroImageFilename" : "_videoThumbnail.png",
      "heroImageHeight" : 1238,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/9D1397DC-38A3-49BA-97E7-A9DB52FCE0FC/_videoThumbnail.png",
      "heroImageWidth" : 1860,
      "id" : "9D1397DC-38A3-49BA-97E7-A9DB52FCE0FC",
      "link" : "/9D1397DC-38A3-49BA-97E7-A9DB52FCE0FC/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Things to have for the Croptop app",
      "videoFilename" : "0a13eef722156602.mp4"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/paololeonardi/WaterfallGrid",
      "contentRendered" : "<p><a href=\"https://github.com/paololeonardi/WaterfallGrid\">https://github.com/paololeonardi/WaterfallGrid</a></p>\n",
      "created" : 706594134.386067,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "01644F5F-47A0-4818-8720-6AAAC7D5E7A8",
      "link" : "/01644F5F-47A0-4818-8720-6AAAC7D5E7A8/",
      "slug" : "",
      "tags" : {

      },
      "title" : "WaterfallGrid"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 706075908.3114,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "23399AED-E57F-4D99-930C-DDF1EBC88733",
      "link" : "/23399AED-E57F-4D99-930C-DDF1EBC88733/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Hero Grid 的异步任务需要检查，可能会造成 Grid 主题里的 Video Thumbnail 问题"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 706075108.842407,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "F7B78872-49C1-4E6A-836C-C9F14743C938",
      "link" : "/F7B78872-49C1-4E6A-836C-C9F14743C938/",
      "slug" : "",
      "tags" : {

      },
      "title" : "如果直接就在 toolbar 上显示 page views today？"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 706074970.576002,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "2823BD8C-7D6C-450E-82A7-892BBF366897",
      "link" : "/2823BD8C-7D6C-450E-82A7-892BBF366897/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Advanced Feature/Usage Page on Planetable.eth Site"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "似乎和图片有关。\n\n可以检查一下 Writer 的 send 相关的逻辑。",
      "contentRendered" : "<p>似乎和图片有关。</p>\n<p>可以检查一下 Writer 的 send 相关的逻辑。</p>\n",
      "created" : 706008384.405122,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "453AD101-2853-41BF-8B9A-C63DEE80594E",
      "link" : "/453AD101-2853-41BF-8B9A-C63DEE80594E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Writer 里点击 Send 之后有一个可以被感知到的延迟"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "## Method 1\n\nextra key `settings` in template.json:\n\n```json\n\"settings\": [\n  {\"name\": \"Juicebox Project ID\", \"type\": \"int\"}\n]\n```\n\na new settings UI for my planet, save the result in a new model: TemplateSettings\n\n```swift\nstruct TemplateSettings {\n  var templateName: String\n  var settings: [[String : String]] = []\n}\n```\n\n## Method 2\n\nOr we just expose an editor panel for editing `/vars.json` or even just `/planet.ini`?",
      "contentRendered" : "<h2>Method 1</h2>\n<p>extra key <code>settings</code> in template.json:</p>\n<pre><code class=\"language-json\">&quot;settings&quot;: [\n  {&quot;name&quot;: &quot;Juicebox Project ID&quot;, &quot;type&quot;: &quot;int&quot;}\n]\n</code></pre>\n<p>a new settings UI for my planet, save the result in a new model: TemplateSettings</p>\n<pre><code class=\"language-swift\">struct TemplateSettings {\n  var templateName: String\n  var settings: [[String : String]] = []\n}\n</code></pre>\n<h2>Method 2</h2>\n<p>Or we just expose an editor panel for editing <code>/vars.json</code> or even just <code>/planet.ini</code>?</p>\n",
      "created" : 705929199.53242,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "000CA2E1-5C62-453D-AE5F-FA3E629D3208",
      "link" : "/000CA2E1-5C62-453D-AE5F-FA3E629D3208/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Template Settings"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 705918385.689707,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "747D8E8E-7CDF-4172-887C-61C051C4BF81",
      "link" : "/747D8E8E-7CDF-4172-887C-61C051C4BF81/",
      "slug" : "",
      "tags" : {

      },
      "title" : "用拖拽的方式调整 Following Planet 的顺序"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "If nothing is entered for a Planet-level draft, it should not create anything on the disk.",
      "contentRendered" : "<p>If nothing is entered for a Planet-level draft, it should not create anything on the disk.</p>\n",
      "created" : 705581700.254428,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "6C757E7D-9F1C-48FC-82AA-1B05D6739142",
      "link" : "/6C757E7D-9F1C-48FC-82AA-1B05D6739142/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Empty Planet-level Draft"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "最近把移动文章相关的逻辑全部重新看了一遍，里面的几个重型操作已经被优化。",
      "contentRendered" : "<p>最近把移动文章相关的逻辑全部重新看了一遍，里面的几个重型操作已经被优化。</p>\n",
      "created" : 705491800.423059,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "7C3C7C4D-D179-47ED-AF4F-00A80E4D24E5",
      "link" : "/7C3C7C4D-D179-47ED-AF4F-00A80E4D24E5/",
      "slug" : "",
      "tags" : {

      },
      "title" : "在移动文章的时候有一个风火轮？"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "It would be a good idea to lock this process with a `.sheet {}` progress view.",
      "contentRendered" : "<p>It would be a good idea to lock this process with a <code>.sheet {}</code> progress view.</p>\n",
      "created" : 705364068.050182,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "4E392605-FEE5-4D46-930B-D3FEEBEC9A6C",
      "link" : "/4E392605-FEE5-4D46-930B-D3FEEBEC9A6C/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Progress Bar for Rebuild"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- [x] Progress view\n- [x] Progress is updated after each article.savePublic()\n- [x] And one more",
      "contentRendered" : "<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Progress view</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Progress is updated after each article.savePublic()</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> And one more</li>\n</ul>\n",
      "created" : 705157640.714468,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "B17E897F-F8F1-4763-9363-DFAC813D4880",
      "link" : "/B17E897F-F8F1-4763-9363-DFAC813D4880/",
      "slug" : "",
      "tags" : {

      },
      "title" : "How about using a progress view for site rebuilding?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 704785780.490899,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "91C59001-2436-44C3-9DB3-93707F0CACC1",
      "link" : "/91C59001-2436-44C3-9DB3-93707F0CACC1/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Quick Share 之后似乎没有 Publish？"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://www.storiesofapple.net/",
      "contentRendered" : "<p><a href=\"https://www.storiesofapple.net/\">https://www.storiesofapple.net/</a></p>\n",
      "created" : 704449200.692253,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "97CF5A49-56C0-428A-8894-227769E5357D",
      "link" : "/97CF5A49-56C0-428A-8894-227769E5357D/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Why can't I follow this?"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://docs.astro.build/en/tutorial/2-pages/2/",
      "contentRendered" : "<p><a href=\"https://docs.astro.build/en/tutorial/2-pages/2/\">https://docs.astro.build/en/tutorial/2-pages/2/</a></p>\n",
      "created" : 704016797.531119,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "F1FEE454-F571-4D75-A9FA-28F528AE9191",
      "link" : "/F1FEE454-F571-4D75-A9FA-28F528AE9191/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Astro Docs"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://www.youtube.com/watch?v=aMz5XmSrHsU\n\nA link like that should be auto-converted to a player?",
      "contentRendered" : "<iframe width=\"100%\" style=\"aspect-ratio: 16/9\" src=\"https://www.youtube.com/embed/aMz5XmSrHsU\" title=\"YouTube Video\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n<p>A link like that should be auto-converted to a player?</p>\n",
      "created" : 703839436.253688,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "590B46A5-0632-4B12-A511-FA11BF93B415",
      "link" : "/590B46A5-0632-4B12-A511-FA11BF93B415/",
      "slug" : "",
      "tags" : {

      },
      "title" : "YouTube Embed"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Screenshot 2023-04-16 at 1.30.44 AM.png"
      ],
      "cids" : {
        "Screenshot 2023-04-16 at 1.30.44 AM.png" : "QmZWse5pRXUBffAA8xcg3zTAv1o6NQzedC4Fu2Jag7jhMp"
      },
      "content" : "How about a Refresh button here?\n\n<img width=\"1228\" alt=\"Screenshot 2023-04-16 at 1.30.44 AM\" src=\"Screenshot 2023-04-16 at 1.30.44 AM.png\">",
      "contentRendered" : "<p>How about a Refresh button here?</p>\n<img width=\"1228\" alt=\"Screenshot 2023-04-16 at 1.30.44 AM\" src=\"Screenshot 2023-04-16 at 1.30.44 AM.png\">\n",
      "created" : 703326673.498352,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/B1748560-09EA-4D5D-835D-C2B2142589E4/Screenshot%202023-04-16%20at%201.30.44%20AM.png",
      "heroImageFilename" : "Screenshot 2023-04-16 at 1.30.44 AM.png",
      "heroImageHeight" : 556,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/B1748560-09EA-4D5D-835D-C2B2142589E4/Screenshot%202023-04-16%20at%201.30.44%20AM.png",
      "heroImageWidth" : 1228,
      "id" : "B1748560-09EA-4D5D-835D-C2B2142589E4",
      "link" : "/B1748560-09EA-4D5D-835D-C2B2142589E4/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Screenshot 2023-04-16 at 1.30.44 AM.png"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Screen Shot 2023-04-15 at 11.55.48 PM.png"
      ],
      "cids" : {
        "Screen Shot 2023-04-15 at 11.55.48 PM.png" : "QmPBd4pmziAvG6djA1WL1dZxc13p2hrfFdTMmwp1iAEsen"
      },
      "content" : "<img width=\"3200\" alt=\"Screen Shot 2023-04-15 at 11.55.48 PM\" src=\"Screen Shot 2023-04-15 at 11.55.48 PM.png\"></br>",
      "contentRendered" : "<p><img width=\"3200\" alt=\"Screen Shot 2023-04-15 at 11.55.48 PM\" src=\"Screen Shot 2023-04-15 at 11.55.48 PM.png\"></br></p>\n",
      "created" : 703322019.243905,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/498E32EA-70A6-425D-A1DB-62858051B71E/Screen%20Shot%202023-04-15%20at%2011.55.48%20PM.png",
      "heroImageFilename" : "Screen Shot 2023-04-15 at 11.55.48 PM.png",
      "heroImageHeight" : 1800,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/498E32EA-70A6-425D-A1DB-62858051B71E/Screen%20Shot%202023-04-15%20at%2011.55.48%20PM.png",
      "heroImageWidth" : 3200,
      "id" : "498E32EA-70A6-425D-A1DB-62858051B71E",
      "link" : "/498E32EA-70A6-425D-A1DB-62858051B71E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Screen Shot 2023-04-15 at 11.55.48 PM.png"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "* Hello World\n* Foobar\n* Everything is awesome\n\n---\n\n1. Hello World\n2. Foobar\n3. Everything is awesome",
      "contentRendered" : "<ul>\n<li>Hello World</li>\n<li>Foobar</li>\n<li>Everything is awesome</li>\n</ul>\n<hr />\n<ol>\n<li>Hello World</li>\n<li>Foobar</li>\n<li>Everything is awesome</li>\n</ol>\n",
      "created" : 702368804.462828,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "9FE4798A-398C-4A67-A1D0-9943EA13468F",
      "link" : "/9FE4798A-398C-4A67-A1D0-9943EA13468F/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Test ul and ol"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "1. Seek wealth, not money or status. \n\n• Wealth is having assets that earn while you sleep. \n• Money is how we transfer time and wealth. \n• Status is your place in the social hierarchy.\n\n---\n\n2. Understand that ethical wealth creation is possible. \n\nIf you secretly despise wealth, it will elude you.\n\n---\n\n3. Ignore people playing status games. \n\nThey gain status by attacking people playing wealth creation games.\n\n---\n\n4. You’re not going to get rich renting out your time. \n\nYou must own equity - a piece of a business - to gain your financial freedom.\n\n---\n\n5. You will get rich by giving society what it wants but does not yet know how to get. \n\nAt scale.\n\n---\n\n6. Pick an industry where you can play long term games with long term people.\n\n---\n\n7. The Internet has massively broadened the possible space of careers. \n\nMost people haven't figured this out yet.\n\n---\n\n8. Play iterated games. \n\nAll the returns in life, whether in wealth, relationships, or knowledge, come from compound interest.\n\n---\n\n9. Pick business partners with:\n\n• High intelligence\n• Energy\n• And, above all, integrity.\n\n---\n\n10. Don't partner with cynics and pessimists. \n\nTheir beliefs are self-fulfilling.\n\n---\n\n11. Learn how to build. Learn how to sell. \n\nIf you can do both, you will be unstoppable.\n\n---\n\n12. Arm yourself with:\n\n• Specific knowledge\n• Accountability\n• Leverage\n\n---\n\n13. Specific knowledge is knowledge that you cannot be trained for. \n\nIf society can train you, it can train someone else, and replace you.\n\n---\n\n14. Specific knowledge is found by pursuing your genuine curiosity and passion rather than whatever is hot right now.\n\n---\n\n15. Building specific knowledge will feel like play to you but will look like work to others.\n\n• When specific knowledge is taught, it’s through apprenticeships, not schools.\n\n• Specific knowledge is often highly technical or creative. It cannot be outsourced or automated.\n\n---\n\n16. Embrace accountability, and take business risks under your own name. \n\nSociety will reward you with responsibility, equity, and leverage.\n\nThe most accountable people have singular, public, and risky brands: \n\n• @Oprah\n \n• @elonmusk\n \n• @realDonaldTrump\n\n---\n\n17. “Give me a lever long enough, and a place to stand, and I will move the earth.” \n\n- Archimedes\n\n---\n\n18. Fortunes require leverage. \n\nBusiness leverage comes from:\n\n• Capital\n• People\n• Products with no marginal cost of replication (code and media)\n\n---\n\n19. Capital means money. \n\nTo raise money, apply your specific knowledge, with accountability, and show resulting good judgment.\n\n---\n\n20. Labor means people working for you. \n\nIt's the oldest and most fought-over form of leverage. \n\nLabor leverage will impress your parents, but don’t waste your life chasing it.\n\n---\n\n21. Capital and labor are permissioned leverage. \n\n• Everyone is chasing capital, but someone has to give it to you. \n\n• Everyone is trying to lead, but someone has to follow you.\n\n---\n\n22. Code and media are permissionless leverage. \n\nThey're the leverage behind the newly rich. \n\nYou can create software and media that works for you while you sleep.\n\n---\n\n23. An army of robots is freely available - it's just packed in data centers for heat and space efficiency. \n\nUse it.\n\n---\n\n24. If you can't code:\n\n• Write books\n• Write blogs\n• Record videos\n• Record podcasts\n\n---\n\n25. Leverage is a force multiplier for your judgement.\n\n---\n\n26. Judgement requires experience, but can be built faster by learning foundational skills.\n\n---\n\n27. There is no skill called “business.” \n\nAvoid business magazines and business classes.\n\n---\n\n28. Study:\n\n• Microeconomics\n• Game theory\n• Mathematics\n• Psychology\n• Computers\n• Persuasion\n• Ethics\n\n---\n\n29. Reading is faster than listening. \n\nDoing is faster than watching.\n\n---\n\n30. You should be too busy to “do coffee,\" while still keeping an uncluttered calendar.\n\n---\n\n31. Set and enforce an aspirational personal hourly rate. \n\n• If fixing a problem will save less than your hourly rate, ignore it. \n\n• If outsourcing a task will cost less than your hourly rate, outsource it.\n\n---\n\n32. Work as hard as you can. \n\nEven though who you work with and what you work on are more important than how hard you work.\n\n---\n\n33. Become the best in the world at what you do. \n\nKeep redefining what you do until this is true.\n\n---\n\n34. There are no get rich quick schemes. \n\nThat's just someone else getting rich off you.\n\n---\n\n35. Apply specific knowledge, with leverage, and eventually you will get what you deserve.\n\n---\n\n36. When you're finally wealthy, you'll realize that it wasn't what you were seeking in the first place. \n\nBut that's for another day.",
      "contentRendered" : "<ol>\n<li>Seek wealth, not money or status.</li>\n</ol>\n<p>• Wealth is having assets that earn while you sleep.<br />\n• Money is how we transfer time and wealth.<br />\n• Status is your place in the social hierarchy.</p>\n<hr />\n<ol start=\"2\">\n<li>Understand that ethical wealth creation is possible.</li>\n</ol>\n<p>If you secretly despise wealth, it will elude you.</p>\n<hr />\n<ol start=\"3\">\n<li>Ignore people playing status games.</li>\n</ol>\n<p>They gain status by attacking people playing wealth creation games.</p>\n<hr />\n<ol start=\"4\">\n<li>You’re not going to get rich renting out your time.</li>\n</ol>\n<p>You must own equity - a piece of a business - to gain your financial freedom.</p>\n<hr />\n<ol start=\"5\">\n<li>You will get rich by giving society what it wants but does not yet know how to get.</li>\n</ol>\n<p>At scale.</p>\n<hr />\n<ol start=\"6\">\n<li>Pick an industry where you can play long term games with long term people.</li>\n</ol>\n<hr />\n<ol start=\"7\">\n<li>The Internet has massively broadened the possible space of careers.</li>\n</ol>\n<p>Most people haven't figured this out yet.</p>\n<hr />\n<ol start=\"8\">\n<li>Play iterated games.</li>\n</ol>\n<p>All the returns in life, whether in wealth, relationships, or knowledge, come from compound interest.</p>\n<hr />\n<ol start=\"9\">\n<li>Pick business partners with:</li>\n</ol>\n<p>• High intelligence<br />\n• Energy<br />\n• And, above all, integrity.</p>\n<hr />\n<ol start=\"10\">\n<li>Don't partner with cynics and pessimists.</li>\n</ol>\n<p>Their beliefs are self-fulfilling.</p>\n<hr />\n<ol start=\"11\">\n<li>Learn how to build. Learn how to sell.</li>\n</ol>\n<p>If you can do both, you will be unstoppable.</p>\n<hr />\n<ol start=\"12\">\n<li>Arm yourself with:</li>\n</ol>\n<p>• Specific knowledge<br />\n• Accountability<br />\n• Leverage</p>\n<hr />\n<ol start=\"13\">\n<li>Specific knowledge is knowledge that you cannot be trained for.</li>\n</ol>\n<p>If society can train you, it can train someone else, and replace you.</p>\n<hr />\n<ol start=\"14\">\n<li>Specific knowledge is found by pursuing your genuine curiosity and passion rather than whatever is hot right now.</li>\n</ol>\n<hr />\n<ol start=\"15\">\n<li>Building specific knowledge will feel like play to you but will look like work to others.</li>\n</ol>\n<p>• When specific knowledge is taught, it’s through apprenticeships, not schools.</p>\n<p>• Specific knowledge is often highly technical or creative. It cannot be outsourced or automated.</p>\n<hr />\n<ol start=\"16\">\n<li>Embrace accountability, and take business risks under your own name.</li>\n</ol>\n<p>Society will reward you with responsibility, equity, and leverage.</p>\n<p>The most accountable people have singular, public, and risky brands:</p>\n<p>• @Oprah</p>\n<p>• @elonmusk</p>\n<p>• @realDonaldTrump</p>\n<hr />\n<ol start=\"17\">\n<li>“Give me a lever long enough, and a place to stand, and I will move the earth.”</li>\n</ol>\n<ul>\n<li>Archimedes</li>\n</ul>\n<hr />\n<ol start=\"18\">\n<li>Fortunes require leverage.</li>\n</ol>\n<p>Business leverage comes from:</p>\n<p>• Capital<br />\n• People<br />\n• Products with no marginal cost of replication (code and media)</p>\n<hr />\n<ol start=\"19\">\n<li>Capital means money.</li>\n</ol>\n<p>To raise money, apply your specific knowledge, with accountability, and show resulting good judgment.</p>\n<hr />\n<ol start=\"20\">\n<li>Labor means people working for you.</li>\n</ol>\n<p>It's the oldest and most fought-over form of leverage.</p>\n<p>Labor leverage will impress your parents, but don’t waste your life chasing it.</p>\n<hr />\n<ol start=\"21\">\n<li>Capital and labor are permissioned leverage.</li>\n</ol>\n<p>• Everyone is chasing capital, but someone has to give it to you.</p>\n<p>• Everyone is trying to lead, but someone has to follow you.</p>\n<hr />\n<ol start=\"22\">\n<li>Code and media are permissionless leverage.</li>\n</ol>\n<p>They're the leverage behind the newly rich.</p>\n<p>You can create software and media that works for you while you sleep.</p>\n<hr />\n<ol start=\"23\">\n<li>An army of robots is freely available - it's just packed in data centers for heat and space efficiency.</li>\n</ol>\n<p>Use it.</p>\n<hr />\n<ol start=\"24\">\n<li>If you can't code:</li>\n</ol>\n<p>• Write books<br />\n• Write blogs<br />\n• Record videos<br />\n• Record podcasts</p>\n<hr />\n<ol start=\"25\">\n<li>Leverage is a force multiplier for your judgement.</li>\n</ol>\n<hr />\n<ol start=\"26\">\n<li>Judgement requires experience, but can be built faster by learning foundational skills.</li>\n</ol>\n<hr />\n<ol start=\"27\">\n<li>There is no skill called “business.”</li>\n</ol>\n<p>Avoid business magazines and business classes.</p>\n<hr />\n<ol start=\"28\">\n<li>Study:</li>\n</ol>\n<p>• Microeconomics<br />\n• Game theory<br />\n• Mathematics<br />\n• Psychology<br />\n• Computers<br />\n• Persuasion<br />\n• Ethics</p>\n<hr />\n<ol start=\"29\">\n<li>Reading is faster than listening.</li>\n</ol>\n<p>Doing is faster than watching.</p>\n<hr />\n<ol start=\"30\">\n<li>You should be too busy to “do coffee,&quot; while still keeping an uncluttered calendar.</li>\n</ol>\n<hr />\n<ol start=\"31\">\n<li>Set and enforce an aspirational personal hourly rate.</li>\n</ol>\n<p>• If fixing a problem will save less than your hourly rate, ignore it.</p>\n<p>• If outsourcing a task will cost less than your hourly rate, outsource it.</p>\n<hr />\n<ol start=\"32\">\n<li>Work as hard as you can.</li>\n</ol>\n<p>Even though who you work with and what you work on are more important than how hard you work.</p>\n<hr />\n<ol start=\"33\">\n<li>Become the best in the world at what you do.</li>\n</ol>\n<p>Keep redefining what you do until this is true.</p>\n<hr />\n<ol start=\"34\">\n<li>There are no get rich quick schemes.</li>\n</ol>\n<p>That's just someone else getting rich off you.</p>\n<hr />\n<ol start=\"35\">\n<li>Apply specific knowledge, with leverage, and eventually you will get what you deserve.</li>\n</ol>\n<hr />\n<ol start=\"36\">\n<li>When you're finally wealthy, you'll realize that it wasn't what you were seeking in the first place.</li>\n</ol>\n<p>But that's for another day.</p>\n",
      "created" : 702361310.409117,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "4CBDBA7A-3555-4C19-9B84-512E68AA5236",
      "link" : "/4CBDBA7A-3555-4C19-9B84-512E68AA5236/",
      "slug" : "",
      "tags" : {

      },
      "title" : "How to Get Rich (without getting lucky)"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Seems a bug?\n\nFixed.",
      "contentRendered" : "<p>Seems a bug?</p>\n<p>Fixed.</p>\n",
      "created" : 701808478.970729,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "A97269A5-20E1-44DE-9B5E-67FBEF7CD3CD",
      "link" : "/A97269A5-20E1-44DE-9B5E-67FBEF7CD3CD/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Sometimes when loading draft, Writer reads a previous article.draft?"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "insider-and-debug.png",
        "juicebox.png",
        "planet-api-server.png",
        "social.png",
        "stars.png",
        "writer-date-picker.png"
      ],
      "cids" : {
        "insider-and-debug.png" : "Qmccmyjnv1VyWwbF5BkMvYo487SaAMjVGPotZZBNXKzvWB",
        "juicebox.png" : "QmfJaNySxSkhnZijiMNWwBAWuD5F6eo6zPHmfYZ4y9bE8W",
        "planet-api-server.png" : "QmYcQf8Kvcd77LpQPUbqrt4N8WsHFFcUH17nT72AjXHXdo",
        "social.png" : "QmSpKiJ4biy62eKgtSMnKprv65HFP2VWJcVrxcGaadrz9G",
        "stars.png" : "QmeLAGT8f2MFohmparJ9rNCfYR7W6Mgfv2ESdWcKXoA3bT",
        "writer-date-picker.png" : "QmeGG3cLaemKMKWReGnUYv5jhV4QYDZzLNyGo3Xg54dnQT"
      },
      "content" : "这次的更新包括了新的星标类型，Planet 的 API 服务器，对移动主数据目录的支持，IPNS 私钥管理器，支持更多的社交网络连接，Insider 和 Debug 版本的新图标，及 bug 修复和功能改进。\n\n## 星标类型\n\n现在当你在给一篇文章添加星标时，你可以选择几种新的类型，来为星标赋予一个更明确的含义。其中几种类型会让 Planet 具有 To-Do 管理软件的感觉。除了右键点击，现在还可以从工具栏中来管理文章的星标。\n\n<img width=\"484\" alt=\"Stars\" src=\"stars.png\">\n\n在后续的更新中，我们将会支持更具星标类型过滤文章。\n\n## 文章的日期选择器\n\n当你在编辑文章时，可以为文章选择任意日期。无论是过去还是将来。\n\n<img width=\"1002\" alt=\"Writer Date Picker\" src=\"writer-date-picker.png\">\n\n## API 服务器\n\n在 Planet 应用运行的时候，现在可以提供一个 HTTP API 服务器。下面是目前能支持的请求的列表，我们会通过文档提供更具体的使用信息。这是一个 v0 版本的 API，因此在后续的更新中有可能会更改。API 服务器为第三方客户端提供了可能性，尤其是后续对移动设备的支持。\n\n* `GET /v0/planets/my` - List all my Planets\n* `POST /v0/planets/my` - Create a new Planet\n* `GET /v0/planets/my/:uuid` - Info of a specific My Planet\n* `POST /v0/planets/my/:uuid` - Modify my Planet\n* `POST /v0/planets/my/:uuid/publish` - Publish My Planet\n* `GET /v0/planets/my/:uuid/public` - Expose the content built\n* `GET /v0/planets/my/:uuid/articles` - List articles under My Planet\n* `POST /v0/planets/my/:uuid/articles` - Create a new Article\n* `GET /v0/planets/my/:uuid/articles/:uuid` - Get an article by UUID\n* `POST /v0/planets/my/:uuid/articles/:uuid` - Modify an article\n* `DELETE /v0/planets/my/:uuid/articles/:uuid` - Delete an article\n\n<img width=\"501\" alt=\"Planet API Server\" src=\"planet-api-server.png\">\n\n你可以在应用的设置中打开 API 服务器，并设置端口号、用户名及密码。\n\n## 移动主数据目录及 IPNS 私钥管理器\n\n**这还是一个试验性的功能，在使用时请注意数据备份**\n\nPlanet 应用在默认情况下，所有的数据存放在这个位置：\n\n```\n~/Library/Containers/xyz.planetable.Planet/Data/Documents/Planet\n```\n\n现在在应用设置中，你可以移动这个位置。如果新位置位于 iCloud Drive 或者 Dropbox，那么相当于你就通过云服务备份了数据。\n\n于此同时，本地的所有 IPNS 私钥，现在可以通过一个新的 Key Manager 来管理及通过 iCloud Keychain 备份，如果你在 iCloud 设置中打开了 iCloud Keychain 功能的话。你可以在 Tools 菜单下找到新的 Key Manager。\n\n对于所有数据同步的支持还在测试中。上面提到的移动主目录功能，及新的 Key Manager 功能，为数据在几台 Mac 之间的完全同步提供了可能性。但是目前还有一些边缘情况，需要更多的测试及代码上的处理。因此我们任务这个功能目前还处在一个试验性的阶段。在使用时需要小心。如果你需要任何帮助，欢迎加入我们的 nftychat 社区的 Planet 频道询问：\n\nhttps://nftychat.xyz/community/e767e0b\n\n## 更多的社交网络连接支持\n\n现在你可以为你的 Planet 填入这些社交网络的 ID，之后会显示在生成的网站首页，及其他人追随你的 Planet 时看到的信息面板里。\n\n- Juicebox\n- Mastodon\n- Twitter\n- Telegram\n- GitHub\n\n<img width=\"570\" alt=\"Juicebox\" src=\"juicebox.png\">\n\n<img width=\"551\" alt=\"Social\" src=\"social.png\">\n\n## Insider 和 Debug 版本的新图标\n\n我们会时不时发布 Insider 版本。Insider 版本中包括了最新的功能。这些功能通常在进入稳定版本之前，需要更多的测试。因此我们通过 Insider 版本来让新功能在发布之前能够获得更充分的测试。你可以从 Planet 项目的 GitHub Releases 页面下载最新的 Insider 版本。\n\nhttps://github.com/Planetable/Planet/releases\n\n如果你下载并运行了 Insider 版本，那么你会注意到这个版本现在具有一个独特的蓝色图标，具有类似 Xcode 及其他 Apple 开发工具的风格。同时我们也为 Insider 版本添加了专有的升级通道，因此现在 Insider 版本也可以获得自动升级。\n\n如果你是从源代码构建 Planet，那么你就可以获得这款黄色的具有建设中意味的图标。\n\n<img width=\"1200\" alt=\"Icons: Insider and Debug\" src=\"insider-and-debug.png\" style=\"border-radius: 8px\">\n\n在后续的更新中，我们会提供更多的图标选项。比如最近在 [Pinnable](https://pinnable.xyz) 项目中出现的[新设计](https://juicebox.money/v2/p/471)。\n\n## 其他细节改进\n\n* 在默认模版中为表格和 To-Do 列表增加了 CSS 样式\n* 为 HTML 中的社交网络分享图片使用了更兼容的绝对 URL 地址\n* 修复了一个在添加视频时的崩溃问题\n* 修复了之前版本中音频播放器按钮不响应的问题\n* 为工具栏中的 ETH 打赏功能换上了一个由 SF Symbol 驱动的图标\n* 默认的 Plain 主题中的样式微调，带来整体更好的对比度\n* 侧栏中的 Planet 图标增加了边框和投影以实现更好的对比度效果\n* 模版中现在可以使用一个新的变量用于引用社交网络分享大图 `social_image_url`",
      "contentRendered" : "<p>这次的更新包括了新的星标类型，Planet 的 API 服务器，对移动主数据目录的支持，IPNS 私钥管理器，支持更多的社交网络连接，Insider 和 Debug 版本的新图标，及 bug 修复和功能改进。</p>\n<h2>星标类型</h2>\n<p>现在当你在给一篇文章添加星标时，你可以选择几种新的类型，来为星标赋予一个更明确的含义。其中几种类型会让 Planet 具有 To-Do 管理软件的感觉。除了右键点击，现在还可以从工具栏中来管理文章的星标。</p>\n<img width=\"484\" alt=\"Stars\" src=\"stars.png\">\n<p>在后续的更新中，我们将会支持更具星标类型过滤文章。</p>\n<h2>文章的日期选择器</h2>\n<p>当你在编辑文章时，可以为文章选择任意日期。无论是过去还是将来。</p>\n<img width=\"1002\" alt=\"Writer Date Picker\" src=\"writer-date-picker.png\">\n<h2>API 服务器</h2>\n<p>在 Planet 应用运行的时候，现在可以提供一个 HTTP API 服务器。下面是目前能支持的请求的列表，我们会通过文档提供更具体的使用信息。这是一个 v0 版本的 API，因此在后续的更新中有可能会更改。API 服务器为第三方客户端提供了可能性，尤其是后续对移动设备的支持。</p>\n<ul>\n<li><code>GET /v0/planets/my</code> - List all my Planets</li>\n<li><code>POST /v0/planets/my</code> - Create a new Planet</li>\n<li><code>GET /v0/planets/my/:uuid</code> - Info of a specific My Planet</li>\n<li><code>POST /v0/planets/my/:uuid</code> - Modify my Planet</li>\n<li><code>POST /v0/planets/my/:uuid/publish</code> - Publish My Planet</li>\n<li><code>GET /v0/planets/my/:uuid/public</code> - Expose the content built</li>\n<li><code>GET /v0/planets/my/:uuid/articles</code> - List articles under My Planet</li>\n<li><code>POST /v0/planets/my/:uuid/articles</code> - Create a new Article</li>\n<li><code>GET /v0/planets/my/:uuid/articles/:uuid</code> - Get an article by UUID</li>\n<li><code>POST /v0/planets/my/:uuid/articles/:uuid</code> - Modify an article</li>\n<li><code>DELETE /v0/planets/my/:uuid/articles/:uuid</code> - Delete an article</li>\n</ul>\n<img width=\"501\" alt=\"Planet API Server\" src=\"planet-api-server.png\">\n<p>你可以在应用的设置中打开 API 服务器，并设置端口号、用户名及密码。</p>\n<h2>移动主数据目录及 IPNS 私钥管理器</h2>\n<p><strong>这还是一个试验性的功能，在使用时请注意数据备份</strong></p>\n<p>Planet 应用在默认情况下，所有的数据存放在这个位置：</p>\n<pre><code>~/Library/Containers/xyz.planetable.Planet/Data/Documents/Planet\n</code></pre>\n<p>现在在应用设置中，你可以移动这个位置。如果新位置位于 iCloud Drive 或者 Dropbox，那么相当于你就通过云服务备份了数据。</p>\n<p>于此同时，本地的所有 IPNS 私钥，现在可以通过一个新的 Key Manager 来管理及通过 iCloud Keychain 备份，如果你在 iCloud 设置中打开了 iCloud Keychain 功能的话。你可以在 Tools 菜单下找到新的 Key Manager。</p>\n<p>对于所有数据同步的支持还在测试中。上面提到的移动主目录功能，及新的 Key Manager 功能，为数据在几台 Mac 之间的完全同步提供了可能性。但是目前还有一些边缘情况，需要更多的测试及代码上的处理。因此我们任务这个功能目前还处在一个试验性的阶段。在使用时需要小心。如果你需要任何帮助，欢迎加入我们的 nftychat 社区的 Planet 频道询问：</p>\n<p><a href=\"https://nftychat.xyz/community/e767e0b\">https://nftychat.xyz/community/e767e0b</a></p>\n<h2>更多的社交网络连接支持</h2>\n<p>现在你可以为你的 Planet 填入这些社交网络的 ID，之后会显示在生成的网站首页，及其他人追随你的 Planet 时看到的信息面板里。</p>\n<ul>\n<li>Juicebox</li>\n<li>Mastodon</li>\n<li>Twitter</li>\n<li>Telegram</li>\n<li>GitHub</li>\n</ul>\n<img width=\"570\" alt=\"Juicebox\" src=\"juicebox.png\">\n<img width=\"551\" alt=\"Social\" src=\"social.png\">\n<h2>Insider 和 Debug 版本的新图标</h2>\n<p>我们会时不时发布 Insider 版本。Insider 版本中包括了最新的功能。这些功能通常在进入稳定版本之前，需要更多的测试。因此我们通过 Insider 版本来让新功能在发布之前能够获得更充分的测试。你可以从 Planet 项目的 GitHub Releases 页面下载最新的 Insider 版本。</p>\n<p><a href=\"https://github.com/Planetable/Planet/releases\">https://github.com/Planetable/Planet/releases</a></p>\n<p>如果你下载并运行了 Insider 版本，那么你会注意到这个版本现在具有一个独特的蓝色图标，具有类似 Xcode 及其他 Apple 开发工具的风格。同时我们也为 Insider 版本添加了专有的升级通道，因此现在 Insider 版本也可以获得自动升级。</p>\n<p>如果你是从源代码构建 Planet，那么你就可以获得这款黄色的具有建设中意味的图标。</p>\n<img width=\"1200\" alt=\"Icons: Insider and Debug\" src=\"insider-and-debug.png\" style=\"border-radius: 8px\">\n<p>在后续的更新中，我们会提供更多的图标选项。比如最近在 <a href=\"https://pinnable.xyz\">Pinnable</a> 项目中出现的<a href=\"https://juicebox.money/v2/p/471\">新设计</a>。</p>\n<h2>其他细节改进</h2>\n<ul>\n<li>在默认模版中为表格和 To-Do 列表增加了 CSS 样式</li>\n<li>为 HTML 中的社交网络分享图片使用了更兼容的绝对 URL 地址</li>\n<li>修复了一个在添加视频时的崩溃问题</li>\n<li>修复了之前版本中音频播放器按钮不响应的问题</li>\n<li>为工具栏中的 ETH 打赏功能换上了一个由 SF Symbol 驱动的图标</li>\n<li>默认的 Plain 主题中的样式微调，带来整体更好的对比度</li>\n<li>侧栏中的 Planet 图标增加了边框和投影以实现更好的对比度效果</li>\n<li>模版中现在可以使用一个新的变量用于引用社交网络分享大图 <code>social_image_url</code></li>\n</ul>\n",
      "created" : 701693931.094458,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/38B3673F-4D0B-4A26-8E41-67D64376AAD4/insider-and-debug.png",
      "heroImageFilename" : "insider-and-debug.png",
      "heroImageHeight" : 600,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/38B3673F-4D0B-4A26-8E41-67D64376AAD4/insider-and-debug.png",
      "heroImageWidth" : 1200,
      "id" : "38B3673F-4D0B-4A26-8E41-67D64376AAD4",
      "link" : "/38B3673F-4D0B-4A26-8E41-67D64376AAD4/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planet Feature Update 7"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "To Do:\n\n- [x] Test To Do\n- [x] Test Table\n- [ ] Fix the draft handling logic with attachments\n\n---\n\n||Tier 1|Tier 2|Tier 3|\n|---|---|---|---|\n|Pay|0.05|0.1|0.25|\n|NFT|The Original|The Neon Light|The CRT Glitch|",
      "contentRendered" : "<p>To Do:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Test To Do</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Test Table</li>\n<li><input type=\"checkbox\" disabled=\"\" /> Fix the draft handling logic with attachments</li>\n</ul>\n<hr />\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Tier 1</th>\n<th>Tier 2</th>\n<th>Tier 3</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Pay</td>\n<td>0.05</td>\n<td>0.1</td>\n<td>0.25</td>\n</tr>\n<tr>\n<td>NFT</td>\n<td>The Original</td>\n<td>The Neon Light</td>\n<td>The CRT Glitch</td>\n</tr>\n</tbody>\n</table>\n",
      "created" : 701681752.736676,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "3264923D-7AD6-47CC-A1F5-46C57537E270",
      "link" : "/3264923D-7AD6-47CC-A1F5-46C57537E270/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Writer CSS Test"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "I am almost there:\n\nhttps://github.com/spruceid/siwe-py",
      "contentRendered" : "<p>I am almost there:</p>\n<p><a href=\"https://github.com/spruceid/siwe-py\">https://github.com/spruceid/siwe-py</a></p>\n",
      "created" : 701417058.035505,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "80613920-450A-46FC-918D-F1C666F9E34D",
      "link" : "/80613920-450A-46FC-918D-F1C666F9E34D/",
      "slug" : "",
      "tags" : {

      },
      "title" : "siwe-py"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://docs.ethers.org/v6-beta/getting-started/",
      "contentRendered" : "<p><a href=\"https://docs.ethers.org/v6-beta/getting-started/\">https://docs.ethers.org/v6-beta/getting-started/</a></p>\n",
      "created" : 701416990.268872,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "1757E8DC-89A2-4D6A-9CBA-60E13F550780",
      "link" : "/1757E8DC-89A2-4D6A-9CBA-60E13F550780/",
      "slug" : "",
      "tags" : {

      },
      "title" : "ethers.js V6"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export",
      "contentRendered" : "<p><a href=\"https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export\">https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export</a></p>\n",
      "created" : 701416896.27008,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "702CB2FD-424F-4F41-9F59-A8F5CCCABF0E",
      "link" : "/702CB2FD-424F-4F41-9F59-A8F5CCCABF0E/",
      "slug" : "",
      "tags" : {

      },
      "title" : "如果我要对 JS 觉得舒服，那么最好的方式就是把所有文档读一遍"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Sign in with Ethereum\n\nhttps://docs.login.xyz/general-information/siwe-overview/eip-4361",
      "contentRendered" : "<p>Sign in with Ethereum</p>\n<p><a href=\"https://docs.login.xyz/general-information/siwe-overview/eip-4361\">https://docs.login.xyz/general-information/siwe-overview/eip-4361</a></p>\n",
      "created" : 701416789.021323,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "BD963BF0-34A5-41F0-92AB-DAAF6026CFE7",
      "link" : "/BD963BF0-34A5-41F0-92AB-DAAF6026CFE7/",
      "slug" : "",
      "tags" : {

      },
      "title" : "EIP-4361"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "|Project Name|Planet|\n|---|---|\n|Website|https://planetable.xyz|\n|Twitter|[@PlanetableXYZ](https://twitter.com/PlanetableXYZ)|\n|Juicebox|[https://juicebox.money/@pinnable](https://juicebox.money/@pinnable)|\n|English Intro|Planet is a native macOS application designed for creating and hosting decentralized websites. With this app, you can effortlessly build a blog featuring audio and video content, select from various theme designs, and publish it as an IPNS accessible via the IPFS P2P network or HTTP gateways. Moreover, you can link the IPNS to your ENS, enabling you to host your website on your ENS.|\n|中文介绍|Planet 是一款 macOS 上的原生应用。可以帮助用户制作和自托管（self-host）一个去中心化的网站。支持音频和视频内容，有多个主题可以选择，网站内容会发布到 IPFS 并通过本地的节点直接向互联网提供服务，不需要依赖中心化服务器或者云。可以绑定到 ENS 及 .bit 等区块链域名。|\n|Demo Site (Official Blog)|[planetable.eth.limo](https://planetable.eth.limo)|\n|Demo Site (A Photo Blog)|[yihanphotos.eth.limo](https://yihanphotos.eth.limo)|\n|Demo Site (Retro Gaming Theme)|[gamedb.eth.limo](https://gamedb.eth.limo)|\n\n",
      "contentRendered" : "<table>\n<thead>\n<tr>\n<th>Project Name</th>\n<th>Planet</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Website</td>\n<td><a href=\"https://planetable.xyz\">https://planetable.xyz</a></td>\n</tr>\n<tr>\n<td>Twitter</td>\n<td><a href=\"https://twitter.com/PlanetableXYZ\">@PlanetableXYZ</a></td>\n</tr>\n<tr>\n<td>Juicebox</td>\n<td><a href=\"https://juicebox.money/@pinnable\">https://juicebox.money/@pinnable</a></td>\n</tr>\n<tr>\n<td>English Intro</td>\n<td>Planet is a native macOS application designed for creating and hosting decentralized websites. With this app, you can effortlessly build a blog featuring audio and video content, select from various theme designs, and publish it as an IPNS accessible via the IPFS P2P network or HTTP gateways. Moreover, you can link the IPNS to your ENS, enabling you to host your website on your ENS.</td>\n</tr>\n<tr>\n<td>中文介绍</td>\n<td>Planet 是一款 macOS 上的原生应用。可以帮助用户制作和自托管（self-host）一个去中心化的网站。支持音频和视频内容，有多个主题可以选择，网站内容会发布到 IPFS 并通过本地的节点直接向互联网提供服务，不需要依赖中心化服务器或者云。可以绑定到 ENS 及 .bit 等区块链域名。</td>\n</tr>\n<tr>\n<td>Demo Site (Official Blog)</td>\n<td><a href=\"https://planetable.eth.limo\">planetable.eth.limo</a></td>\n</tr>\n<tr>\n<td>Demo Site (A Photo Blog)</td>\n<td><a href=\"https://yihanphotos.eth.limo\">yihanphotos.eth.limo</a></td>\n</tr>\n<tr>\n<td>Demo Site (Retro Gaming Theme)</td>\n<td><a href=\"https://gamedb.eth.limo\">gamedb.eth.limo</a></td>\n</tr>\n</tbody>\n</table>\n",
      "created" : 701381581.485574,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "569017AE-DEA0-439F-829D-4104726FDF03",
      "link" : "/569017AE-DEA0-439F-829D-4104726FDF03/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planetable.xyz Info for HashGlobal"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "```\nsqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/14/3o7r)\n```\n\nFixed with:\n\n```\nself.session.close()\n```",
      "contentRendered" : "<pre><code>sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00 (Background on this error at: https://sqlalche.me/e/14/3o7r)\n</code></pre>\n<p>Fixed with:</p>\n<pre><code>self.session.close()\n</code></pre>\n",
      "created" : 700994975.134063,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "BAE2514D-32A0-4138-9391-29EF3058E52A",
      "link" : "/BAE2514D-32A0-4138-9391-29EF3058E52A/",
      "slug" : "",
      "tags" : {

      },
      "title" : "SQLAlchemy Pool Issue in Project Ivalice"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/Planetable/Planet/actions/runs/4343048566/jobs/7584606968\n\nhttps://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/",
      "contentRendered" : "<p><a href=\"https://github.com/Planetable/Planet/actions/runs/4343048566/jobs/7584606968\">https://github.com/Planetable/Planet/actions/runs/4343048566/jobs/7584606968</a></p>\n<p><a href=\"https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/\">https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/</a></p>\n",
      "created" : 699796288.048697,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "6BAA18C7-DA04-4EB4-8FA6-5C6DFE022DDE",
      "link" : "/6BAA18C7-DA04-4EB4-8FA6-5C6DFE022DDE/",
      "slug" : "",
      "tags" : {

      },
      "title" : "set-output deprecation"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/rthalley/dnspython/blob/master/examples/doh-json.py",
      "contentRendered" : "<p><a href=\"https://github.com/rthalley/dnspython/blob/master/examples/doh-json.py\">https://github.com/rthalley/dnspython/blob/master/examples/doh-json.py</a></p>\n",
      "created" : 697025998.958852,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "61E906C2-98B7-4D70-AD6B-8D9E3707D530",
      "link" : "/61E906C2-98B7-4D70-AD6B-8D9E3707D530/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Python DoH"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Anna's Hummingbird Perching and Stretching Wings.mov"
      ],
      "cids" : {
        "Anna's Hummingbird Perching and Stretching Wings.mov" : "Qmd8XkD5NcZ2n5hZiKbCY13fvkwPbmodjb8du5a2BbP46Q"
      },
      "content" : "",
      "created" : 695805167.421461,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : true,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/A02EC818-25B8-453E-A625-7D8A9F0C10CE/_videoThumbnail.png",
      "heroImageFilename" : "_videoThumbnail.png",
      "heroImageHeight" : 720,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/A02EC818-25B8-453E-A625-7D8A9F0C10CE/_videoThumbnail.png",
      "heroImageWidth" : 1280,
      "id" : "A02EC818-25B8-453E-A625-7D8A9F0C10CE",
      "link" : "/A02EC818-25B8-453E-A625-7D8A9F0C10CE/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Test Video: Anna's Hummingbird",
      "videoFilename" : "Anna's Hummingbird Perching and Stretching Wings.mov"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "When the Planet app is running, it provides an optimized @IPFS gateway on localhost:18181 that you can use in Brave. Then you can speedily open any .eth website with it. Here is a video demo.\n\n---\n\nWhen the Planet app is running, it provides an optimized IPFS gateway on localhost:18181 that you can use in Brave. This allows you to quickly open any .eth website. Here is a video demonstration.",
      "contentRendered" : "<p>When the Planet app is running, it provides an optimized @IPFS gateway on localhost:18181 that you can use in Brave. Then you can speedily open any .eth website with it. Here is a video demo.</p>\n<hr />\n<p>When the Planet app is running, it provides an optimized IPFS gateway on localhost:18181 that you can use in Brave. This allows you to quickly open any .eth website. Here is a video demonstration.</p>\n",
      "created" : 695698561.07345,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "C824592C-7337-4F0A-ACD3-57D916FFA9C6",
      "link" : "/C824592C-7337-4F0A-ACD3-57D916FFA9C6/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Tweet: Planet + Brave"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "## API\n\n## Juicebox Integration\n\n## Remove Items in Following Planets",
      "contentRendered" : "<h2>API</h2>\n<h2>Juicebox Integration</h2>\n<h2>Remove Items in Following Planets</h2>\n",
      "created" : 695335937.833556,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "623ED455-1976-4BA3-A00D-6CFACE61C7A0",
      "link" : "/623ED455-1976-4BA3-A00D-6CFACE61C7A0/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planet Feature Update 7"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "<figure>\n  <img src=\"https://planetable.xyz/assets/screenshots/create-planet.png\" alt=\"Create Planet\" class=\"screenshot\">\n  <figcaption>Create a new website with Planet</figcaption>\n</figure>",
      "contentRendered" : "<figure>\n  <img src=\"https://planetable.xyz/assets/screenshots/create-planet.png\" alt=\"Create Planet\" class=\"screenshot\">\n  <figcaption>Create a new website with Planet</figcaption>\n</figure>\n",
      "created" : 695255084.937363,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "6C822F6C-70FC-4A50-B723-068E2DE8057D",
      "link" : "/6C822F6C-70FC-4A50-B723-068E2DE8057D/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Test figure"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://api.thegraph.com/subgraphs/id/QmcKc84SeJy1BJVH74YGJpfnjgbZtdG6MuifH9BfSf9fKP/graphql?query=query+project%28%24id%3A+ID%21%29+%7B%0A++++project%28id%3A+%24id%29+%7B%0A++++++++metadataUri%0A++++++++owner%0A++++++++handle%0A++++++++totalPaid%0A++++++++totalRedeemed%0A++++++++trendingPaymentsCount%0A++++++++trendingVolume%0A++++++++currentBalance%0A++++++++createdAt%0A++++%7D%0A++%7D&variables=%22%7B%5C%22id%5C%22%3A+%5C%222-1%5C%22%7D%22&operationName=project",
      "contentRendered" : "<p><a href=\"https://api.thegraph.com/subgraphs/id/QmcKc84SeJy1BJVH74YGJpfnjgbZtdG6MuifH9BfSf9fKP/graphql?query=query+project%28%24id%3A+ID%21%29+%7B%0A++++project%28id%3A+%24id%29+%7B%0A++++++++metadataUri%0A++++++++owner%0A++++++++handle%0A++++++++totalPaid%0A++++++++totalRedeemed%0A++++++++trendingPaymentsCount%0A++++++++trendingVolume%0A++++++++currentBalance%0A++++++++createdAt%0A++++%7D%0A++%7D&amp;variables=%22%7B%5C%22id%5C%22%3A+%5C%222-1%5C%22%7D%22&amp;operationName=project\">https://api.thegraph.com/subgraphs/id/QmcKc84SeJy1BJVH74YGJpfnjgbZtdG6MuifH9BfSf9fKP/graphql?query=query+project%28%24id%3A+ID%21%29+%7B%0A++++project%28id%3A+%24id%29+%7B%0A++++++++metadataUri%0A++++++++owner%0A++++++++handle%0A++++++++totalPaid%0A++++++++totalRedeemed%0A++++++++trendingPaymentsCount%0A++++++++trendingVolume%0A++++++++currentBalance%0A++++++++createdAt%0A++++%7D%0A++%7D&amp;variables=%22%7B%5C%22id%5C%22%3A+%5C%222-1%5C%22%7D%22&amp;operationName=project</a></p>\n",
      "created" : 694976543.122406,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "66CEF585-EA57-4F1C-B7CD-E641BF93DE78",
      "link" : "/66CEF585-EA57-4F1C-B7CD-E641BF93DE78/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Juicebox Thegraph"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Docs for Pay:\n\nhttps://info.juicebox.money/dev/api/contracts/or-payment-terminals/or-abstract/jbpayoutredemptionpaymentterminal/write/pay/\n\nDocs for JBTokens:\n\nhttps://info.juicebox.money/dev/api/libraries/jbtokens/\n\nExample Transaction on Goerli:\n\nhttps://goerli.etherscan.io/tx/0xe0c882505ed0fad8f4b5fe7e5bac8b5c6d336c379d96b6b2f246e68feb19fea3\n\nExplore Contract:\n\nhttps://etherfunk.io\n\nThe Test Project:\n\nhttps://goerli.juicebox.money/v2/p/207",
      "contentRendered" : "<p>Docs for Pay:</p>\n<p><a href=\"https://info.juicebox.money/dev/api/contracts/or-payment-terminals/or-abstract/jbpayoutredemptionpaymentterminal/write/pay/\">https://info.juicebox.money/dev/api/contracts/or-payment-terminals/or-abstract/jbpayoutredemptionpaymentterminal/write/pay/</a></p>\n<p>Docs for JBTokens:</p>\n<p><a href=\"https://info.juicebox.money/dev/api/libraries/jbtokens/\">https://info.juicebox.money/dev/api/libraries/jbtokens/</a></p>\n<p>Example Transaction on Goerli:</p>\n<p><a href=\"https://goerli.etherscan.io/tx/0xe0c882505ed0fad8f4b5fe7e5bac8b5c6d336c379d96b6b2f246e68feb19fea3\">https://goerli.etherscan.io/tx/0xe0c882505ed0fad8f4b5fe7e5bac8b5c6d336c379d96b6b2f246e68feb19fea3</a></p>\n<p>Explore Contract:</p>\n<p><a href=\"https://etherfunk.io\">https://etherfunk.io</a></p>\n<p>The Test Project:</p>\n<p><a href=\"https://goerli.juicebox.money/v2/p/207\">https://goerli.juicebox.money/v2/p/207</a></p>\n",
      "created" : 694701879.143401,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "A866B2A4-F0EE-4804-B0EA-34D33A08BC93",
      "link" : "/A866B2A4-F0EE-4804-B0EA-34D33A08BC93/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Juicebox Pay Button"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Add support for kbd tags:\n\nhttps://twitter.com/github/status/1610707658352345115",
      "contentRendered" : "<p>Add support for kbd tags:</p>\n<p><a href=\"https://twitter.com/github/status/1610707658352345115\">https://twitter.com/github/status/1610707658352345115</a></p>\n",
      "created" : 694571969.876277,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "47E4501A-DE36-46F7-97C9-30E87D412751",
      "link" : "/47E4501A-DE36-46F7-97C9-30E87D412751/",
      "slug" : "",
      "tags" : {

      },
      "title" : "kbd tag"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "I have been following [this tutorial](https://sboots.ca/2021/07/20/installing-jekyll-locally-on-macos-big-sur/) by Sean Boots on how to install Jekyll on previous versions of macOS. It worked really well and provided a smooth installation process. However, since the latest version of macOS (Ventura) still ships with Ruby 2.6, some Gems started to complain about that. So, I found a new method that uses the excellent [rbenv](https://github.com/rbenv/rbenv) project to install a newer version of Ruby.\n\n1. Install rbenv with Homebrew.\n\n```\nbrew install rbenv ruby-build\n```\n\nAdd this to `~/.zshrc` if you are using zsh:\n\n```\neval \"$(rbenv init - zsh)\"\n```\n\n2. Change to your Jekyll blog's work directory, and install a newer version of Ruby:\n\n```\nrbenv install 3.1.3\n```\n\n3. Activate it for your Jekyll:\n\n```\nrbenv local 3.1.3\n```\n\nCheck if you have got the desired version:\n\n```\nruby -v\n```\n\nIt should output something like this:\n\n```\nruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [arm64-darwin22]\n```\n\nIf you see an older version like this:\n\n```\nruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin22]\n```\n\nCheck previous steps.\n\n4. Install the two essential gems:\n\n```\ngem install bundler jekyll\n```\n\n5. Configure bundle to use a local folder inside your website:\n\n```\nbundle config set --local path 'vendor/bundle'\n```\n\n6. Install the rest gems:\n\n```\nbundle install\n```\n\nIf you encounter any issues with any Gems, try deleting the Gemfile.lock and running the command again.\n\n7. Exclude the vendor folder in your Jekyll config file, for example:\n\n```\nexclude:\n- .ruby-gemset\n- .ruby-version\n- Gemfile\n- Gemfile.lock\n- Makefile\n- README.md\n- vendor/\n```\n\nYou will also need to add the following lines into `.gitignore`:\n\n```\nvendor/\n.bundle/\n```\n\n8. Your Jekyll installation is now set up and ready to use. To launch a live preview, try running the following command:\n\n```\nbundle exec jekyll serve --watch\n```\n\nI hope you are enjoying the ride. However, that is also part of the reason I started working on [Planetable.xyz](https://planetable.xyz), a static site generator with a graphical interface and built-in IPFS node. With the Planet app, you don't need any command line knowledge to start blogging and self-hosting on your Mac.",
      "contentRendered" : "<p>I have been following <a href=\"https://sboots.ca/2021/07/20/installing-jekyll-locally-on-macos-big-sur/\">this tutorial</a> by Sean Boots on how to install Jekyll on previous versions of macOS. It worked really well and provided a smooth installation process. However, since the latest version of macOS (Ventura) still ships with Ruby 2.6, some Gems started to complain about that. So, I found a new method that uses the excellent <a href=\"https://github.com/rbenv/rbenv\">rbenv</a> project to install a newer version of Ruby.</p>\n<ol>\n<li>Install rbenv with Homebrew.</li>\n</ol>\n<pre><code>brew install rbenv ruby-build\n</code></pre>\n<p>Add this to <code>~/.zshrc</code> if you are using zsh:</p>\n<pre><code>eval &quot;$(rbenv init - zsh)&quot;\n</code></pre>\n<ol start=\"2\">\n<li>Change to your Jekyll blog's work directory, and install a newer version of Ruby:</li>\n</ol>\n<pre><code>rbenv install 3.1.3\n</code></pre>\n<ol start=\"3\">\n<li>Activate it for your Jekyll:</li>\n</ol>\n<pre><code>rbenv local 3.1.3\n</code></pre>\n<p>Check if you have got the desired version:</p>\n<pre><code>ruby -v\n</code></pre>\n<p>It should output something like this:</p>\n<pre><code>ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [arm64-darwin22]\n</code></pre>\n<p>If you see an older version like this:</p>\n<pre><code>ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin22]\n</code></pre>\n<p>Check previous steps.</p>\n<ol start=\"4\">\n<li>Install the two essential gems:</li>\n</ol>\n<pre><code>gem install bundler jekyll\n</code></pre>\n<ol start=\"5\">\n<li>Configure bundle to use a local folder inside your website:</li>\n</ol>\n<pre><code>bundle config set --local path 'vendor/bundle'\n</code></pre>\n<ol start=\"6\">\n<li>Install the rest gems:</li>\n</ol>\n<pre><code>bundle install\n</code></pre>\n<p>If you encounter any issues with any Gems, try deleting the Gemfile.lock and running the command again.</p>\n<ol start=\"7\">\n<li>Exclude the vendor folder in your Jekyll config file, for example:</li>\n</ol>\n<pre><code>exclude:\n- .ruby-gemset\n- .ruby-version\n- Gemfile\n- Gemfile.lock\n- Makefile\n- README.md\n- vendor/\n</code></pre>\n<p>You will also need to add the following lines into <code>.gitignore</code>:</p>\n<pre><code>vendor/\n.bundle/\n</code></pre>\n<ol start=\"8\">\n<li>Your Jekyll installation is now set up and ready to use. To launch a live preview, try running the following command:</li>\n</ol>\n<pre><code>bundle exec jekyll serve --watch\n</code></pre>\n<p>I hope you are enjoying the ride. However, that is also part of the reason I started working on <a href=\"https://planetable.xyz\">Planetable.xyz</a>, a static site generator with a graphical interface and built-in IPFS node. With the Planet app, you don't need any command line knowledge to start blogging and self-hosting on your Mac.</p>\n",
      "created" : 694517640.805232,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "85429447-E7A3-4F1D-9623-D6201151508B",
      "link" : "/85429447-E7A3-4F1D-9623-D6201151508B/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Installing Jekyll on macOS Ventura"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "One day, I was scrolling through Twitter and I noticed that many people were using the .eth domain in their nicknames. I was curious and wondered if it was possible to have a website running on that domain. I decided to do some research and I was pleasantly surprised to find out that I could indeed have a website on the .eth domain.\n\nI learned that the Ethereum community has a standard called EIP 1577, which allows users to set a content source for a domain. Unlike traditional DNS, where A records are used to specify the server responsible for serving the content, EIP 1577 supports the use of decentralized storage technologies like IPFS and Swarm.\n\nI had played with IPFS before and I knew that it is a peer-to-peer way to publish content on the internet. To use IPFS, you first need to download and install a program on your computer. This program allows you to add and publish files to the IPFS peer-to-peer network. Instead of uploading files to the cloud, the program adds the files to its local repository and assigns a unique content ID to each file. When someone needs to download a file, they can request the content ID and the IPFS client will locate it from the network.\n\nBut I realized that the process of publishing a website on IPFS can be quite complex and difficult, as it involves using a Terminal and typing out commands. I thought to myself, what if I could create a native macOS app that would make this process easier? The app could have a three-column UI like the Mail app, which would be great for following and reading multiple websites. It could also have a two-column Markdown editor for writing and previewing side by side, with an easy way to attach video and audio.\n\nThe app could also generate and host static websites using a local IPFS node, allowing users to use their Mac as a server. Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any single entity, the user's content is controlled by their private keys. This offers a fully decentralized way to publish content on the internet.",
      "contentRendered" : "<p>One day, I was scrolling through Twitter and I noticed that many people were using the .eth domain in their nicknames. I was curious and wondered if it was possible to have a website running on that domain. I decided to do some research and I was pleasantly surprised to find out that I could indeed have a website on the .eth domain.</p>\n<p>I learned that the Ethereum community has a standard called EIP 1577, which allows users to set a content source for a domain. Unlike traditional DNS, where A records are used to specify the server responsible for serving the content, EIP 1577 supports the use of decentralized storage technologies like IPFS and Swarm.</p>\n<p>I had played with IPFS before and I knew that it is a peer-to-peer way to publish content on the internet. To use IPFS, you first need to download and install a program on your computer. This program allows you to add and publish files to the IPFS peer-to-peer network. Instead of uploading files to the cloud, the program adds the files to its local repository and assigns a unique content ID to each file. When someone needs to download a file, they can request the content ID and the IPFS client will locate it from the network.</p>\n<p>But I realized that the process of publishing a website on IPFS can be quite complex and difficult, as it involves using a Terminal and typing out commands. I thought to myself, what if I could create a native macOS app that would make this process easier? The app could have a three-column UI like the Mail app, which would be great for following and reading multiple websites. It could also have a two-column Markdown editor for writing and previewing side by side, with an easy way to attach video and audio.</p>\n<p>The app could also generate and host static websites using a local IPFS node, allowing users to use their Mac as a server. Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any single entity, the user's content is controlled by their private keys. This offers a fully decentralized way to publish content on the internet.</p>\n",
      "created" : 692783067.869196,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "8EAE17CB-0198-4254-BEEF-D0558923AED5",
      "link" : "/8EAE17CB-0198-4254-BEEF-D0558923AED5/",
      "slug" : "",
      "tags" : {

      },
      "title" : "The Origin Story"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "### Original Writing\n\nWhen I first saw people using .eth in their nicknames on Twitter, I wondered, it looks like a domain name, so can I have a website running on it?\n\nThen I started a little research, and it turned out, yes, I can have a website on the .eth domain. They have a standard called EIP 1577, which makes it possible to set a content source for a domain.\n\nBut it is different from A records for traditional DNS. With traditional DNS, A record set on a domain tells the user which server is responsible for serving the content. With ENS' EIP 1577, two supported content sources are IPFS and Swarm, and both are decentralized storage technologies.\n\nI have played with IPFS before. First, you download and install a program on your computer. Then you can use it to add and publish files to the IPFS peer-to-peer network. Publishing here does not mean uploading your files to the cloud. Instead, the program adds your files to its local repository and assigns a unique content ID to each file. Then, if someone else needs to download a file, they can request the content ID, and the IPFS network has a mechanism to locate it from the network.\n\nBut if you google how to publish a website on IPFS, you will most likely see a page full of commands to be typed in a Terminal, which could be too hard for many users.\n\nSo I was thinking, what if I can create a native macOS app to make those things easier? First, it should have a three-column UI like the Mail app, great for following and reading many different websites.\n\nWhen writing, it should have a two-column Markdown editor, loved by many, including me. With an easy way to attach video and audio.\n\nAnd this app can generate and host websites with a local IPFS node. So users can use their Mac as servers, and third-party services or cloud are optional.\n\nWebsites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any corporate, your content is controlled by your private keys. It is a fully decentralized way to publish your writings on the Internet.\n\n### Rewrote by Mia\n\nWhen I first saw people using .eth in their Twitter nicknames, I wondered, since it looked like a domain name, would I be able to have a website running on it?\n\nThen I started a little bit of research, and it turned out, yes, I can have a website on the .eth domain. The Ethereum community has a standard called EIP 1577, which makes it possible to set a content source for a domain.\n\nHowever, it is different from A records for traditional DNS. With traditional DNS, A record set on a domain tells the user which server is responsible for serving the content. With ENS' EIP 1577, two supported content sources are IPFS and Swarm, and both are decentralized storage technologies.\n\nI have played with IPFS before. First, you download and install a program on your computer. Then you can utilize it to add and publish files to the IPFS peer-to-peer network. Publishing here does not mean uploading your files to the cloud; instead, the program adds your files to its local repository and assigns a unique content ID to each file. Then, if someone else needs to download a file, they can request the content ID, and the IPFS network can locate it from the network.\n\nBut if you google how to publish a website on IPFS, you will most likely see a page full of commands to be typed in a Terminal, which could be too complex and problematic for many users.\n\nSo I was thinking, what if I can create a native macOS app to make those things easier? First, it should have a three-column UI like the Mail app, great for following and reading many different websites.\n\nWhen writing, it should have a two-column Markdown editor, loved by many, including me. With an easy way to attach video and audio.\n\nFurthermore, this app can generate and host websites with a local IPFS node so that users can use the Mac as server.\n\nWebsites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not entirely controlled by any corporate, your content is controlled by your private keys. It is a fully decentralized way to publish your writings on the Internet.\n\n### AI Version 1\n\nHello and welcome to the first episode of the Planetable podcast.\n\n\n\nIn this episode, we will be discussing the use of the .eth domain and how it can be used to host a website. The Ethereum community has a standard called EIP 1577, which allows users to set a content source for a domain. Unlike traditional DNS, where A records are used to specify the server responsible for serving the content, EIP 1577 supports the use of decentralized storage technologies like IPFS and Swarm.\n\nPublishing a website on IPFS can be done by downloading and installing a program on your computer. The program is used to add and publish files to the IPFS peer-to-peer network. Instead of uploading files to the cloud, the program adds the files to its local repository and assigns a unique content ID to each file. When someone needs to download a file, they can request the content ID and the IPFS client will locate it from the network.\n\nHowever, many users may find the process of publishing a website on IPFS to be too complex and difficult, as it involves using a Terminal and typing out commands. This is where a native macOS app could be useful. The app could have a three-column UI similar to the Mail app, making it easy to follow and read multiple websites. It could also have a two-column Markdown editor for writing and previewing side by side, with an easy way to attach video and audio.\n\nThe app could also generate and host websites using a local IPFS node, allowing users to use their Mac as a server. Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any single entity, the user's content is controlled by their private keys. This offers a fully decentralized way to publish content on the internet.",
      "contentRendered" : "<h3>Original Writing</h3>\n<p>When I first saw people using .eth in their nicknames on Twitter, I wondered, it looks like a domain name, so can I have a website running on it?</p>\n<p>Then I started a little research, and it turned out, yes, I can have a website on the .eth domain. They have a standard called EIP 1577, which makes it possible to set a content source for a domain.</p>\n<p>But it is different from A records for traditional DNS. With traditional DNS, A record set on a domain tells the user which server is responsible for serving the content. With ENS' EIP 1577, two supported content sources are IPFS and Swarm, and both are decentralized storage technologies.</p>\n<p>I have played with IPFS before. First, you download and install a program on your computer. Then you can use it to add and publish files to the IPFS peer-to-peer network. Publishing here does not mean uploading your files to the cloud. Instead, the program adds your files to its local repository and assigns a unique content ID to each file. Then, if someone else needs to download a file, they can request the content ID, and the IPFS network has a mechanism to locate it from the network.</p>\n<p>But if you google how to publish a website on IPFS, you will most likely see a page full of commands to be typed in a Terminal, which could be too hard for many users.</p>\n<p>So I was thinking, what if I can create a native macOS app to make those things easier? First, it should have a three-column UI like the Mail app, great for following and reading many different websites.</p>\n<p>When writing, it should have a two-column Markdown editor, loved by many, including me. With an easy way to attach video and audio.</p>\n<p>And this app can generate and host websites with a local IPFS node. So users can use their Mac as servers, and third-party services or cloud are optional.</p>\n<p>Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any corporate, your content is controlled by your private keys. It is a fully decentralized way to publish your writings on the Internet.</p>\n<h3>Rewrote by Mia</h3>\n<p>When I first saw people using .eth in their Twitter nicknames, I wondered, since it looked like a domain name, would I be able to have a website running on it?</p>\n<p>Then I started a little bit of research, and it turned out, yes, I can have a website on the .eth domain. The Ethereum community has a standard called EIP 1577, which makes it possible to set a content source for a domain.</p>\n<p>However, it is different from A records for traditional DNS. With traditional DNS, A record set on a domain tells the user which server is responsible for serving the content. With ENS' EIP 1577, two supported content sources are IPFS and Swarm, and both are decentralized storage technologies.</p>\n<p>I have played with IPFS before. First, you download and install a program on your computer. Then you can utilize it to add and publish files to the IPFS peer-to-peer network. Publishing here does not mean uploading your files to the cloud; instead, the program adds your files to its local repository and assigns a unique content ID to each file. Then, if someone else needs to download a file, they can request the content ID, and the IPFS network can locate it from the network.</p>\n<p>But if you google how to publish a website on IPFS, you will most likely see a page full of commands to be typed in a Terminal, which could be too complex and problematic for many users.</p>\n<p>So I was thinking, what if I can create a native macOS app to make those things easier? First, it should have a three-column UI like the Mail app, great for following and reading many different websites.</p>\n<p>When writing, it should have a two-column Markdown editor, loved by many, including me. With an easy way to attach video and audio.</p>\n<p>Furthermore, this app can generate and host websites with a local IPFS node so that users can use the Mac as server.</p>\n<p>Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not entirely controlled by any corporate, your content is controlled by your private keys. It is a fully decentralized way to publish your writings on the Internet.</p>\n<h3>AI Version 1</h3>\n<p>Hello and welcome to the first episode of the Planetable podcast.</p>\n<p>In this episode, we will be discussing the use of the .eth domain and how it can be used to host a website. The Ethereum community has a standard called EIP 1577, which allows users to set a content source for a domain. Unlike traditional DNS, where A records are used to specify the server responsible for serving the content, EIP 1577 supports the use of decentralized storage technologies like IPFS and Swarm.</p>\n<p>Publishing a website on IPFS can be done by downloading and installing a program on your computer. The program is used to add and publish files to the IPFS peer-to-peer network. Instead of uploading files to the cloud, the program adds the files to its local repository and assigns a unique content ID to each file. When someone needs to download a file, they can request the content ID and the IPFS client will locate it from the network.</p>\n<p>However, many users may find the process of publishing a website on IPFS to be too complex and difficult, as it involves using a Terminal and typing out commands. This is where a native macOS app could be useful. The app could have a three-column UI similar to the Mail app, making it easy to follow and read multiple websites. It could also have a two-column Markdown editor for writing and previewing side by side, with an easy way to attach video and audio.</p>\n<p>The app could also generate and host websites using a local IPFS node, allowing users to use their Mac as a server. Websites hosted with IPFS can be set as the content source for ENS domains. Since IPFS and ENS are not controlled by any single entity, the user's content is controlled by their private keys. This offers a fully decentralized way to publish content on the internet.</p>\n",
      "created" : 692776260.669308,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "949C54F6-3012-4B6F-B18A-E459B3AC7005",
      "link" : "/949C54F6-3012-4B6F-B18A-E459B3AC7005/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Podcast EP1 - The origin story of Planet"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://validator.jsonfeed.org/",
      "contentRendered" : "<p><a href=\"https://validator.jsonfeed.org/\">https://validator.jsonfeed.org/</a></p>\n",
      "created" : 692759714.789578,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "EA2B0523-04B2-4CDB-BA2E-5727812FE1E3",
      "link" : "/EA2B0523-04B2-4CDB-BA2E-5727812FE1E3/",
      "slug" : "",
      "tags" : {

      },
      "title" : "JSON Feed Validator"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://microformats.org/wiki/microformats2",
      "contentRendered" : "<p><a href=\"https://microformats.org/wiki/microformats2\">https://microformats.org/wiki/microformats2</a></p>\n",
      "created" : 692757570.726234,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "934CB98C-7212-490B-92D0-305E6DEF85E3",
      "link" : "/934CB98C-7212-490B-92D0-305E6DEF85E3/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Nice to have: mf2"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "banana-ol.webp"
      ],
      "cids" : {
        "banana-ol.webp" : "QmXKuGUvdCRGGZQ8vk9GQhVdUg9zSLqZgFDiXNaehHaQ8o"
      },
      "content" : "Juicebox is awesome!\n\n<img width=\"800\" alt=\"banana-ol\" src=\"banana-ol.webp\">\n",
      "contentRendered" : "<p>Juicebox is awesome!</p>\n<img width=\"800\" alt=\"banana-ol\" src=\"banana-ol.webp\">\n",
      "created" : 692054535.115639,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/D3342E6B-4C4C-478D-9B98-D4924B8C6EE4/banana-ol.webp",
      "heroImageFilename" : "banana-ol.webp",
      "heroImageHeight" : 800,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/D3342E6B-4C4C-478D-9B98-D4924B8C6EE4/banana-ol.webp",
      "heroImageWidth" : 800,
      "id" : "D3342E6B-4C4C-478D-9B98-D4924B8C6EE4",
      "link" : "/D3342E6B-4C4C-478D-9B98-D4924B8C6EE4/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Prepare for a new demo"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- New Planet\n- Follow Planet\n\n---\n\n- Import\n\n---\n\n- Publish all\n- Update all\n\n---\n\n- Close",
      "contentRendered" : "<ul>\n<li>New Planet</li>\n<li>Follow Planet</li>\n</ul>\n<hr />\n<ul>\n<li>Import</li>\n</ul>\n<hr />\n<ul>\n<li>Publish all</li>\n<li>Update all</li>\n</ul>\n<hr />\n<ul>\n<li>Close</li>\n</ul>\n",
      "created" : 691998493.991602,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "83AF9980-A080-4F67-9532-C7A019A705A6",
      "link" : "/83AF9980-A080-4F67-9532-C7A019A705A6/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Things to have in the File Menu"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "Screenshot 2022-12-01 at 12.54.20 AM.png"
      ],
      "cids" : {
        "Screenshot 2022-12-01 at 12.54.20 AM.png" : "QmW1Dx77Rt2eGJnvcgmHBArhM6QMZSFzBQ2TspGaZGQRng"
      },
      "content" : "<img width=\"1444\" alt=\"Screenshot 2022-12-01 at 12.54.20 AM\" src=\"Screenshot 2022-12-01 at 12.54.20 AM.png\">\n\nSwift GraphQL: https://www.swift-graphql.com/docs\n\nENS Subgraph: https://github.com/ensdomains/ens-subgraph\n\n---\n\nhttps://api.thegraph.com/subgraphs/name/ensdomains/ens/graphql?query=query+getNames%28%24id%3A+ID%21%2C+%24expiryDate%3A+Int%29+%7B%0A++account%28id%3A+%24id%29+%7B%0A++++registrations%28first%3A+1000%2C+where%3A+%7BexpiryDate_gt%3A+%24expiryDate%7D%29+%7B%0A++++++registrationDate%0A++++++expiryDate%0A++++++domain+%7B%0A++++++++id%0A++++++++labelName%0A++++++++labelhash%0A++++++++name%0A++++++++isMigrated%0A++++++++parent+%7B%0A++++++++++name%0A++++++++++id%0A++++++++%7D%0A++++++%7D%0A++++%7D%0A++++domains%28first%3A+1000%29+%7B%0A++++++id%0A++++++labelName%0A++++++labelhash%0A++++++name%0A++++++isMigrated%0A++++++parent+%7B%0A++++++++name%0A++++++++id%0A++++++%7D%0A++++++createdAt%0A++++%7D%0A++%7D%0A%7D%0A\n\n---\n\nInput:\n\n```graphql\nquery getNames($id: ID!, $expiryDate: Int) {\n  account(id: $id) {\n    registrations(first: 1000, where: {expiryDate_gt: $expiryDate}) {\n      registrationDate\n      expiryDate\n      domain {\n        id\n        labelName\n        labelhash\n        name\n        isMigrated\n        parent {\n          name\n          id\n        }\n      }\n    }\n    domains(first: 1000) {\n      id\n      labelName\n      labelhash\n      name\n      isMigrated\n      parent {\n        name\n        id\n      }\n      createdAt\n    }\n  }\n}\n```\n\nVariables:\n\n- id: ETH address\n- expiryDate: Unix Timestamp, current one minus 3 months\n\n```\n{\"id\":\"0x18deee9699526f8c8a87004b2e4e55029fb26b9a\",\"expiryDate\":1662107562}\n```",
      "contentRendered" : "<img width=\"1444\" alt=\"Screenshot 2022-12-01 at 12.54.20 AM\" src=\"Screenshot 2022-12-01 at 12.54.20 AM.png\">\n<p>Swift GraphQL: <a href=\"https://www.swift-graphql.com/docs\">https://www.swift-graphql.com/docs</a></p>\n<p>ENS Subgraph: <a href=\"https://github.com/ensdomains/ens-subgraph\">https://github.com/ensdomains/ens-subgraph</a></p>\n<hr />\n<p><a href=\"https://api.thegraph.com/subgraphs/name/ensdomains/ens/graphql?query=query+getNames%28%24id%3A+ID%21%2C+%24expiryDate%3A+Int%29+%7B%0A++account%28id%3A+%24id%29+%7B%0A++++registrations%28first%3A+1000%2C+where%3A+%7BexpiryDate_gt%3A+%24expiryDate%7D%29+%7B%0A++++++registrationDate%0A++++++expiryDate%0A++++++domain+%7B%0A++++++++id%0A++++++++labelName%0A++++++++labelhash%0A++++++++name%0A++++++++isMigrated%0A++++++++parent+%7B%0A++++++++++name%0A++++++++++id%0A++++++++%7D%0A++++++%7D%0A++++%7D%0A++++domains%28first%3A+1000%29+%7B%0A++++++id%0A++++++labelName%0A++++++labelhash%0A++++++name%0A++++++isMigrated%0A++++++parent+%7B%0A++++++++name%0A++++++++id%0A++++++%7D%0A++++++createdAt%0A++++%7D%0A++%7D%0A%7D%0A\">https://api.thegraph.com/subgraphs/name/ensdomains/ens/graphql?query=query+getNames%28%24id%3A+ID%21%2C+%24expiryDate%3A+Int%29+%7B%0A++account%28id%3A+%24id%29+%7B%0A++++registrations%28first%3A+1000%2C+where%3A+%7BexpiryDate_gt%3A+%24expiryDate%7D%29+%7B%0A++++++registrationDate%0A++++++expiryDate%0A++++++domain+%7B%0A++++++++id%0A++++++++labelName%0A++++++++labelhash%0A++++++++name%0A++++++++isMigrated%0A++++++++parent+%7B%0A++++++++++name%0A++++++++++id%0A++++++++%7D%0A++++++%7D%0A++++%7D%0A++++domains%28first%3A+1000%29+%7B%0A++++++id%0A++++++labelName%0A++++++labelhash%0A++++++name%0A++++++isMigrated%0A++++++parent+%7B%0A++++++++name%0A++++++++id%0A++++++%7D%0A++++++createdAt%0A++++%7D%0A++%7D%0A%7D%0A</a></p>\n<hr />\n<p>Input:</p>\n<pre><code class=\"language-graphql\">query getNames($id: ID!, $expiryDate: Int) {\n  account(id: $id) {\n    registrations(first: 1000, where: {expiryDate_gt: $expiryDate}) {\n      registrationDate\n      expiryDate\n      domain {\n        id\n        labelName\n        labelhash\n        name\n        isMigrated\n        parent {\n          name\n          id\n        }\n      }\n    }\n    domains(first: 1000) {\n      id\n      labelName\n      labelhash\n      name\n      isMigrated\n      parent {\n        name\n        id\n      }\n      createdAt\n    }\n  }\n}\n</code></pre>\n<p>Variables:</p>\n<ul>\n<li>id: ETH address</li>\n<li>expiryDate: Unix Timestamp, current one minus 3 months</li>\n</ul>\n<pre><code>{&quot;id&quot;:&quot;0x18deee9699526f8c8a87004b2e4e55029fb26b9a&quot;,&quot;expiryDate&quot;:1662107562}\n</code></pre>\n",
      "created" : 691577680.974288,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/CBC462FA-182B-4C72-8AEE-3DEA496ADCFB/Screenshot%202022-12-01%20at%2012.54.20%20AM.png",
      "heroImageFilename" : "Screenshot 2022-12-01 at 12.54.20 AM.png",
      "heroImageHeight" : 1938,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/CBC462FA-182B-4C72-8AEE-3DEA496ADCFB/Screenshot%202022-12-01%20at%2012.54.20%20AM.png",
      "heroImageWidth" : 2888,
      "id" : "CBC462FA-182B-4C72-8AEE-3DEA496ADCFB",
      "link" : "/CBC462FA-182B-4C72-8AEE-3DEA496ADCFB/",
      "slug" : "",
      "tags" : {

      },
      "title" : "ENS GraphQL"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "show-ipns-and-cid.png",
        "automatically-publish.png"
      ],
      "cids" : {
        "automatically-publish.png" : "QmZzrsQTzpWQEXqZQUAb2F1DZhsC9ibAgi7XdUPFCNrYHc",
        "show-ipns-and-cid.png" : "QmXGtUUZ5oVxaBN4X7LLy9CszBEipWG83pWY8u6aUaBpj6"
      },
      "content" : "这次的功能更新会是首先以 Insider Build 的方式发布，需要从下面的这个 GitHub 链接去下载。因为其中的一些大的变更，在通过自动更新推送给所有用户之前，我们希望能够更充分地测试一下。\n\n[https://github.com/Planetable/Planet/releases/tag/insider-20221129-2](https://github.com/Planetable/Planet/releases/tag/insider-20221129-2)\n\n因为这次会有一个主要的新功能——通过 ETH 直接给内容创作者打赏。具体的使用方式是这样的：\n\n## ETH Tipping\n\n在 0.11 版本的 Planet 中，可以在菜单 Planet 下找到一个新的选项——Connect Wallet。\n\n然后用支持 WalletConnect 的钱包应用扫描这个二维码，然后 Planet 应用里就可以知道你的钱包地址及向应用发起交易请求。在这个阶段，不会有签名操作。\n\n之后当你在 Planet 里访问 .eth 域名上的网站时，在 Toolbar 里会出现这个新的打赏按钮。按下之后就可以选择打赏金额——从 0.02E 到 1E 的几个不同的级别。如果你使用的是 MetaMask 的手机版本，那么这里还可以选择使用哪个网络发送，目前支持主网、测试网 Goerli 和测试网 Sepolia。\n\n如果你在连接钱包的时候使用的应用是 [Rainbow](https://rainbow.me)，那么需要注意的是 Rainbow 会在连接界面的右下角让你选择网络。如果你希望连接的是测试网 Goerli，那么需要在这里选择。如果你没有看到 Goerli 的选项，那么需要在 Rainbow 的设置中打开对 Testnet 的支持。之后在发送交易时，Rainbow 不支持交易时切换网络，会永远使用一开始的选择。\n\nMetaMask 和 Rainbow 是我们在开发这个功能的过程中，主要测试过的两个应用。如果你使用的是其他支持 WalletConnect 的应用，可以在 GitHub 的 [Discussions](https://github.com/Planetable/Planet/discussions) 里告知我们，我们来试着进行更多的测试。目前，我们推荐使用的手机钱包是 MetaMask 和 Rainbow。\n\n---\n\n上面是 0.11 版本中新增的 ETH 打赏功能的介绍。\n\n下面是本次更新中带来的其他功能和修复。\n\n## Published Folder 的自动发布\n\nPublished Folder 是我们在上一个版本中加入的新功能——你可以把任意的本地文件夹发布为一个 IPNS。如果你之前已经在使用某个静态网站生成器，那么这个功能可以帮助你快速把构建结果发布为 IPNS。\n\n<img width=\"1039\" alt=\"Automatically Publish\" src=\"automatically-publish.png\">\n\n新增加的 Automatically Publish 开关可以自动监测文件夹内的内容变化，然后在每次变化发生时，将最新的 CID 写入 IPNS 实现内容的自动更新。\n\n## 在不同的 Planet 之间移动文章\n\n现在如果你右键点击文章，就可以找到一个新的选项让你可以在 Planet 之间移动文章。\n\n比如你可以指定一个 Planet 来作为你的草稿箱，在里面写作和调整文章的样式，然后在完全满意之后，再把这篇文章移动到需要正式发布的那个 Planet。\n\n## Archive/Unarchive\n\n现在你可以把你自己的或者你追踪的 Planet 设置为 Archive 状态。Archive 状态的 Planet 不会显示在侧栏中，也不会被自动发布或者更新，但是所有的数据会在本地保留。\n\n之后如果你想找回，可以从 Planet 的设置面板中 Unarchive。\n\n## 用于显示 Planet 的 IPNS 和 CID 信息的新面板\n\n如果你需要获得一个 Planet 的 IPNS 或者最新的 CID，那么现在可以右键单击，然后找到一个新的菜单选项 Show IPNS and CID 就可以看到。\n\n<img width=\"1140\" alt=\"show-ipns-and-cid\" src=\"show-ipns-and-cid.png\">",
      "contentRendered" : "<p>这次的功能更新会是首先以 Insider Build 的方式发布，需要从下面的这个 GitHub 链接去下载。因为其中的一些大的变更，在通过自动更新推送给所有用户之前，我们希望能够更充分地测试一下。</p>\n<p><a href=\"https://github.com/Planetable/Planet/releases/tag/insider-20221129-2\">https://github.com/Planetable/Planet/releases/tag/insider-20221129-2</a></p>\n<p>因为这次会有一个主要的新功能——通过 ETH 直接给内容创作者打赏。具体的使用方式是这样的：</p>\n<h2>ETH Tipping</h2>\n<p>在 0.11 版本的 Planet 中，可以在菜单 Planet 下找到一个新的选项——Connect Wallet。</p>\n<p>然后用支持 WalletConnect 的钱包应用扫描这个二维码，然后 Planet 应用里就可以知道你的钱包地址及向应用发起交易请求。在这个阶段，不会有签名操作。</p>\n<p>之后当你在 Planet 里访问 .eth 域名上的网站时，在 Toolbar 里会出现这个新的打赏按钮。按下之后就可以选择打赏金额——从 0.02E 到 1E 的几个不同的级别。如果你使用的是 MetaMask 的手机版本，那么这里还可以选择使用哪个网络发送，目前支持主网、测试网 Goerli 和测试网 Sepolia。</p>\n<p>如果你在连接钱包的时候使用的应用是 <a href=\"https://rainbow.me\">Rainbow</a>，那么需要注意的是 Rainbow 会在连接界面的右下角让你选择网络。如果你希望连接的是测试网 Goerli，那么需要在这里选择。如果你没有看到 Goerli 的选项，那么需要在 Rainbow 的设置中打开对 Testnet 的支持。之后在发送交易时，Rainbow 不支持交易时切换网络，会永远使用一开始的选择。</p>\n<p>MetaMask 和 Rainbow 是我们在开发这个功能的过程中，主要测试过的两个应用。如果你使用的是其他支持 WalletConnect 的应用，可以在 GitHub 的 <a href=\"https://github.com/Planetable/Planet/discussions\">Discussions</a> 里告知我们，我们来试着进行更多的测试。目前，我们推荐使用的手机钱包是 MetaMask 和 Rainbow。</p>\n<hr />\n<p>上面是 0.11 版本中新增的 ETH 打赏功能的介绍。</p>\n<p>下面是本次更新中带来的其他功能和修复。</p>\n<h2>Published Folder 的自动发布</h2>\n<p>Published Folder 是我们在上一个版本中加入的新功能——你可以把任意的本地文件夹发布为一个 IPNS。如果你之前已经在使用某个静态网站生成器，那么这个功能可以帮助你快速把构建结果发布为 IPNS。</p>\n<img width=\"1039\" alt=\"Automatically Publish\" src=\"automatically-publish.png\">\n<p>新增加的 Automatically Publish 开关可以自动监测文件夹内的内容变化，然后在每次变化发生时，将最新的 CID 写入 IPNS 实现内容的自动更新。</p>\n<h2>在不同的 Planet 之间移动文章</h2>\n<p>现在如果你右键点击文章，就可以找到一个新的选项让你可以在 Planet 之间移动文章。</p>\n<p>比如你可以指定一个 Planet 来作为你的草稿箱，在里面写作和调整文章的样式，然后在完全满意之后，再把这篇文章移动到需要正式发布的那个 Planet。</p>\n<h2>Archive/Unarchive</h2>\n<p>现在你可以把你自己的或者你追踪的 Planet 设置为 Archive 状态。Archive 状态的 Planet 不会显示在侧栏中，也不会被自动发布或者更新，但是所有的数据会在本地保留。</p>\n<p>之后如果你想找回，可以从 Planet 的设置面板中 Unarchive。</p>\n<h2>用于显示 Planet 的 IPNS 和 CID 信息的新面板</h2>\n<p>如果你需要获得一个 Planet 的 IPNS 或者最新的 CID，那么现在可以右键单击，然后找到一个新的菜单选项 Show IPNS and CID 就可以看到。</p>\n<img width=\"1140\" alt=\"show-ipns-and-cid\" src=\"show-ipns-and-cid.png\">\n",
      "created" : 691552601.589445,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/511E11E7-5E56-4B63-AB40-5EA36B00E646/show-ipns-and-cid.png",
      "heroImageFilename" : "show-ipns-and-cid.png",
      "heroImageHeight" : 1672,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/511E11E7-5E56-4B63-AB40-5EA36B00E646/show-ipns-and-cid.png",
      "heroImageWidth" : 2280,
      "id" : "511E11E7-5E56-4B63-AB40-5EA36B00E646",
      "link" : "/511E11E7-5E56-4B63-AB40-5EA36B00E646/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Planet Feature Update 5"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "- Blog Publishing Feature Parity\n- Interactions\n  - Pub/Sub\n- Monetization for Content Creators",
      "contentRendered" : "<ul>\n<li>Blog Publishing Feature Parity</li>\n<li>Interactions\n<ul>\n<li>Pub/Sub</li>\n</ul>\n</li>\n<li>Monetization for Content Creators</li>\n</ul>\n",
      "created" : 690868425.00257,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "F341399E-7C48-4234-B83A-3EAFB5E0E19D",
      "link" : "/F341399E-7C48-4234-B83A-3EAFB5E0E19D/",
      "slug" : "",
      "tags" : {

      },
      "title" : "What's Next for Planet"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "## Must Have\n\n- [x] 选择在哪个网络上发送交易：mainnet or goerli\n- [x] 发送交易时的 progress view\n\n## Nice to Have",
      "contentRendered" : "<h2>Must Have</h2>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 选择在哪个网络上发送交易：mainnet or goerli</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 发送交易时的 progress view</li>\n</ul>\n<h2>Nice to Have</h2>\n",
      "created" : 690447495.575368,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "C8AEC85C-695B-4A0B-80AC-AFF2A8B2DB4F",
      "link" : "/C8AEC85C-695B-4A0B-80AC-AFF2A8B2DB4F/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Wallet Connect 这件事情的完整 Scope"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://github.com/eth-clients/sepolia\n\n---\n\nCloudflare Ethereum Gateway\n\nhttps://developers.cloudflare.com/web3/how-to/use-ethereum-gateway/",
      "contentRendered" : "<p><a href=\"https://github.com/eth-clients/sepolia\">https://github.com/eth-clients/sepolia</a></p>\n<hr />\n<p>Cloudflare Ethereum Gateway</p>\n<p><a href=\"https://developers.cloudflare.com/web3/how-to/use-ethereum-gateway/\">https://developers.cloudflare.com/web3/how-to/use-ethereum-gateway/</a></p>\n",
      "created" : 690427515.105697,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "2125C330-DAA2-428F-807D-C8E81A693BDC",
      "link" : "/2125C330-DAA2-428F-807D-C8E81A693BDC/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Sepolia"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "blockquote:\n\n> This is a quote\n\ncode block:\n\n```python\nfrom future import dreams\n\ndreams.Dreaming()\n```",
      "contentRendered" : "<p>blockquote:</p>\n<blockquote>\n<p>This is a quote</p>\n</blockquote>\n<p>code block:</p>\n<pre><code class=\"language-python\">from future import dreams\n\ndreams.Dreaming()\n</code></pre>\n",
      "created" : 690081358.647172,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "C945D8FB-C613-4367-9813-DBA6CA27286D",
      "link" : "/C945D8FB-C613-4367-9813-DBA6CA27286D/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Test new styles"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "https://developers.cloudflare.com/web3/ethereum-gateway/reference/supported-networks/",
      "contentRendered" : "<p><a href=\"https://developers.cloudflare.com/web3/ethereum-gateway/reference/supported-networks/\">https://developers.cloudflare.com/web3/ethereum-gateway/reference/supported-networks/</a></p>\n",
      "created" : 689859280.559188,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "C51A64B7-34EC-4D12-ABA6-5B1D8A232D83",
      "link" : "/C51A64B7-34EC-4D12-ABA6-5B1D8A232D83/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Cloudflare ETH Gateway"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "我们生活在一个边际效用递减的时代。每一件有需求的事情，看起来都已经有了又不是不能用的解决方案。\n\n对于已经习惯了某件事物的人，你很难去向他介绍任何你觉得更好的解决方案。你只能去做一些非常不同的，这样别人或许才会有那么一点点来了解的欲望。\n\n---\n\nWe live in an era of diminishing marginal utility. For every thing that is in demand, it seems that there is already a solution that is not unavailable.\n\nFor someone who is used to something, it's hard to introduce them to any solution that you think is better. You can only do something very different, so that others may have a little desire to understand.",
      "contentRendered" : "<p>我们生活在一个边际效用递减的时代。每一件有需求的事情，看起来都已经有了又不是不能用的解决方案。</p>\n<p>对于已经习惯了某件事物的人，你很难去向他介绍任何你觉得更好的解决方案。你只能去做一些非常不同的，这样别人或许才会有那么一点点来了解的欲望。</p>\n<hr />\n<p>We live in an era of diminishing marginal utility. For every thing that is in demand, it seems that there is already a solution that is not unavailable.</p>\n<p>For someone who is used to something, it's hard to introduce them to any solution that you think is better. You can only do something very different, so that others may have a little desire to understand.</p>\n",
      "created" : 689501870.492735,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "0B4BBF4F-EBCD-4198-B30F-5AEFE4A0FA3F",
      "link" : "/0B4BBF4F-EBCD-4198-B30F-5AEFE4A0FA3F/",
      "slug" : "",
      "tags" : {

      },
      "title" : "边际效用递减"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "Must have:\n\n- [x] Sign in with Ethereum\n- [x] 一个类似 Instagram 的主题\n\nNice to have:\n\n- [x] Fix the writer and @main issue\n- [x] Use `:has` for the styling of `- [ ] To Do Item`: https://developer.mozilla.org/en-US/docs/Web/CSS/:has\n  - Remove list dot if li has input[type=\"checkbox\"]\n  - https://css-tricks.com/the-css-has-selector/\n\nBetter Programming:\n\n- [x] Better draft handling",
      "contentRendered" : "<p>Must have:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Sign in with Ethereum</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> 一个类似 Instagram 的主题</li>\n</ul>\n<p>Nice to have:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Fix the writer and @main issue</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Use <code>:has</code> for the styling of <code>- [ ] To Do Item</code>: <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/:has\">https://developer.mozilla.org/en-US/docs/Web/CSS/:has</a>\n<ul>\n<li>Remove list dot if li has input[type=&quot;checkbox&quot;]</li>\n<li><a href=\"https://css-tricks.com/the-css-has-selector/\">https://css-tricks.com/the-css-has-selector/</a></li>\n</ul>\n</li>\n</ul>\n<p>Better Programming:</p>\n<ul>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> Better draft handling</li>\n</ul>\n",
      "created" : 689358989.300959,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "12D1AE21-2F72-41B4-AC5C-E2A351EC3C56",
      "link" : "/12D1AE21-2F72-41B4-AC5C-E2A351EC3C56/",
      "slug" : "",
      "tags" : {

      },
      "title" : "一些想在 Planet 里做的事情"
    },
    {
      "articleType" : 0,
      "attachments" : [
        "15737.jpg"
      ],
      "cids" : {
        "15737.jpg" : "QmNaaU1Ms7z67RjwoeUYytCQjUJvg9KrRC8CpoMZs2TbMy"
      },
      "content" : "<img width=\"1122\" alt=\"15737\" src=\"15737.jpg\">\n\n一些还没有完全完成的文章，可以先放到这个 Planet 里，在完成之后再移动到其他 Planet 用于发布。\n",
      "contentRendered" : "<img width=\"1122\" alt=\"15737\" src=\"15737.jpg\">\n<p>一些还没有完全完成的文章，可以先放到这个 Planet 里，在完成之后再移动到其他 Planet 用于发布。</p>\n",
      "created" : 689350441.842406,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "heroImage" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/28E803BE-64B3-4744-AA0C-EC4501910F27/15737.jpg",
      "heroImageFilename" : "15737.jpg",
      "heroImageHeight" : 4675,
      "heroImageURL" : "https://k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm.eth.sucks/28E803BE-64B3-4744-AA0C-EC4501910F27/15737.jpg",
      "heroImageWidth" : 4675,
      "id" : "28E803BE-64B3-4744-AA0C-EC4501910F27",
      "link" : "/28E803BE-64B3-4744-AA0C-EC4501910F27/",
      "slug" : "",
      "tags" : {

      },
      "title" : "Drafts Planet"
    },
    {
      "articleType" : 0,
      "attachments" : [

      ],
      "cids" : {

      },
      "content" : "",
      "created" : 675673247.080538,
      "externalLink" : "",
      "hasAudio" : false,
      "hasVideo" : false,
      "id" : "040A0D6E-9828-4169-BC0A-5C84239234AC",
      "link" : "/040A0D6E-9828-4169-BC0A-5C84239234AC/",
      "slug" : "",
      "tags" : {

      },
      "title" : "20220531"
    }
  ],
  "created" : 689350356.664012,
  "discordLink" : "",
  "githubUsername" : "livid",
  "id" : "7AAD5722-B4B1-48E6-B001-078286971D2D",
  "ipns" : "k51qzi5uqu5dksffcrl5u1gcj0drylsi9mnp4ta415li7t3kyam2o9o2fucihm",
  "juiceboxEnabled" : true,
  "juiceboxProjectID" : 471,
  "mastodonUsername" : "@livid@mastodon.world",
  "name" : "Drafts",
  "plausibleAPIServer" : "plausible.io",
  "plausibleDomain" : "",
  "plausibleEnabled" : false,
  "podcastCategories" : {

  },
  "podcastExplicit" : false,
  "podcastLanguage" : "en",
  "tags" : {
    "planet" : "Planet",
    "sepia" : "Sepia",
    "tags" : "Tags"
  },
  "telegramUsername" : "OLIVIDA",
  "twitterUsername" : "livid",
  "updated" : 740487666.276077
}