跳到主要内容

更轻松的开源应用程序自动更新

·3 分钟阅读

今天,我们发布了一个免费、开源、托管的 更新网络服务 和配套的 npm 包,以方便开源 Electron 应用程序的自动更新。这是使应用程序开发人员减少对部署的考虑,而更多地考虑为其用户开发高质量体验的一步。


The new updater module in action

让生活更轻松

Electron 有一个 autoUpdater API,使应用程序能够使用来自远程端点的元数据来检查更新,在后台下载它们,并自动安装它们。

对于许多 Electron 应用程序开发人员来说,启用这些更新一直是部署过程中的一个繁琐步骤,因为它需要部署和维护 Web 服务器,仅用于提供应用程序版本历史记录元数据。

今天,我们宣布了一个新的即插即用解决方案,用于自动应用程序更新。如果您的 Electron 应用程序位于公共 GitHub 存储库中,并且您使用 GitHub Releases 发布构建,则可以使用此服务向您的用户提供持续的应用程序更新。

使用新模块

为了最大限度地减少您的配置,我们创建了 update-electron-app,这是一个与新的 update.electronjs.org 网络服务集成的 npm 模块。

安装模块

npm install update-electron-app

从应用程序的 主进程 中的任何位置调用它

require('update-electron-app')();

就是这样!该模块将在应用程序启动时以及每十分钟检查一次更新。找到更新后,它将在后台自动下载,并在更新准备就绪时显示一个对话框。

迁移现有应用程序

已经使用 Electron 的 autoUpdater API 的应用程序也可以使用此服务。为此,您可以 自定义 update-electron-app 模块或 直接与 update.electronjs.org 集成

替代方案

如果您使用 electron-builder 打包您的应用程序,则可以使用其内置的更新程序。有关详细信息,请参见 electron.build/auto-update

如果您的应用程序是私有的,则可能需要运行自己的更新服务器。有许多开源工具可以做到这一点,包括 Zeit 的 Hazel 和 Atlassian 的 Nucleus。有关更多信息,请参见 部署更新服务器 教程。

致谢

感谢 Julian Gruber 帮助设计和构建此简单且可扩展的网络服务。感谢 Zeit 的人们提供的开源 Hazel 服务,从中我们汲取了设计灵感。感谢 Samuel Attard 的代码审查。感谢 Electron 社区帮助测试此服务。

🌲 祝 Electron 应用程序拥有常青的未来!

Electron 2 新特性:应用内购买

·2 分钟阅读

新的 Electron 2.0 版本线 充满了 新特性和修复。此新主要版本的一个亮点是适用于 Apple Mac App Store 的新 inAppPurchase API


应用内购买使可以直接从应用内购买内容或订阅。这为开发者提供了一种拥抱 免费增值商业模式 的简便方法,其中用户无需付费即可下载应用,并提供可选的应用内购买以获取高级功能、其他内容或订阅。

新的 API 由社区贡献者 Adrien Fery 添加到 Electron,以在 Amanote(一个用于讲座和会议的笔记 Electron 应用)中启用应用内购买。Amanote 可以免费下载,并允许将清晰且结构化的笔记添加到 PDF 中,包括数学公式、绘图、录音等功能。

自从向 Mac 版本的 Amanote 添加应用内购买支持以来,Adrien 指出销售额增长了 40%

开始使用

新的 inAppPurchase API 已经登陆最新的 Electron beta 版本

npm i -D electron@beta

API 的文档可以在 GitHub 上找到,并且 Adrien 非常好心地编写了一个关于如何使用该 API 的教程。要开始向您的应用程序添加应用内购买,请 参阅该教程

正在进行中 对 API 的更多改进,并将很快登陆即将发布的 Electron beta 版本。

Windows 可能是下一个

接下来,Adrien 希望通过在 Electron 中添加对 Microsoft Store 应用内购买的支持来为 Amanote 开辟新的收入渠道。请继续关注这方面的进展!

Webview 漏洞修复

·2 分钟阅读

发现了一个漏洞,允许在某些禁用 Node.js 集成的 Electron 应用程序中重新启用 Node.js 集成。此漏洞已分配 CVE 标识符 CVE-2018-1000136


受影响的应用程序

如果以下所有条件都为真,则应用程序会受到影响

  1. 在 Electron 1.7、1.8 或 2.0.0-beta 上运行
  2. 允许执行任意远程代码
  3. 禁用 Node.js 集成
  4. 未在其 webPreferences 中显式声明 webviewTag: false
  5. 未启用 nativeWindowOption 选项
  6. 不拦截 new-window 事件并手动覆盖 event.newGuest,而不使用提供的 options 标签

尽管这似乎是少数 Electron 应用程序,但我们鼓励所有应用程序都升级以防万一。

缓解

此漏洞已在今天的 1.7.131.8.42.0.0-beta.5 版本中修复。

无法升级其应用程序的 Electron 版本的开发人员可以使用以下代码缓解该漏洞

app.on('web-contents-created', (event, win) => {
win.on(
'new-window',
(event, newURL, frameName, disposition, options, additionalFeatures) => {
if (!options.webPreferences) options.webPreferences = {};
options.webPreferences.nodeIntegration = false;
options.webPreferences.nodeIntegrationInWorker = false;
options.webPreferences.webviewTag = false;
delete options.webPreferences.preload;
},
);
});

// and *IF* you don't use WebViews at all,
// you might also want
app.on('web-contents-created', (event, win) => {
win.on('will-attach-webview', (event, webPreferences, params) => {
event.preventDefault();
});
});

更多信息

此漏洞由 Trustwave SpiderLabs 的 Brendan Scarvell 发现并负责任地报告给 Electron 项目。

要了解有关保持 Electron 应用程序安全的最佳实践的更多信息,请参阅我们的 安全教程

要报告 Electron 中的漏洞,请发送电子邮件至 security@electronjs.org

请加入我们的 电子邮件列表 以接收有关版本和安全更新的更新。

网站小故障

·2 分钟阅读

上周,electronjs.org 网站宕机了几分钟。如果您受到这些短暂中断的影响,我们对给您带来的不便表示歉意。经过今天的调查,我们已经诊断出根本原因并部署了 修复


为了防止将来发生此类停机,我们已经在我们的应用程序上启用了 Heroku 阈值警报。每当我们的 Web 服务器积累的失败请求或慢响应超出某个阈值时,我们的团队将收到通知,以便我们可以快速解决问题。

每种语言的离线文档

下次您在飞机上或地下咖啡店开发 Electron 应用程序时,您可能需要一份文档副本以供离线参考。幸运的是,Electron 的文档以 Markdown 文件的形式提供,支持超过 20 种语言。

git clone https://github.com/electron/electron-i18n
ls electron-i18n/content

带有 GUI 的离线文档

devdocs.io/electron 是一个方便的网站,可以存储文档以供离线使用,不仅适用于 Electron,还适用于许多其他项目,如 JavaScript、TypeScript、Node.js、React、Angular 等。当然,还有一个 Electron 应用程序也可以做到这一点。请在 Electron 网站上查看 devdocs-app

devdocs-app

如果您喜欢在不使用鼠标或触控板的情况下安装应用程序,请尝试使用 Electron Forgeinstall 命令

npx electron-forge install egoist/devdocs-app

协议处理程序漏洞修复

·2 分钟阅读

发现了一个远程代码执行漏洞,该漏洞影响使用自定义协议处理程序的 Electron 应用程序。此漏洞已分配 CVE 标识符 CVE-2018-1000006


受影响的平台

设计为在 Windows 上运行的 Electron 应用程序,这些应用程序将自己注册为协议(如 myapp://)的默认处理程序,则容易受到攻击。

无论协议是如何注册的(例如,使用本机代码、Windows 注册表或 Electron 的 app.setAsDefaultProtocolClient API),此类应用程序都可能受到影响。

macOS 和 Linux 不会受到 此问题的影响。

缓解

我们发布了新版本的 Electron,其中包含此漏洞的修复:1.8.2-beta.51.7.121.6.17。我们敦促所有 Electron 开发者立即将其应用程序更新到最新的稳定版本。

如果由于某种原因您无法升级您的 Electron 版本,您可以在调用 app.setAsDefaultProtocolClient 时,将 -- 作为最后一个参数附加,这会阻止 Chromium 解析其他选项。双破折号 -- 表示命令选项的结尾,之后只接受位置参数。

app.setAsDefaultProtocolClient(protocol, process.execPath, [
'--your-switches-here',
'--',
]);

有关更多详细信息,请参阅 app.setAsDefaultProtocolClient API。

要了解有关保持 Electron 应用程序安全的最佳实践的更多信息,请参阅我们的 安全教程

如果您想报告 Electron 中的漏洞,请发送电子邮件至 security@electronjs.org

Electron 2.0 及更高版本 - 语义化版本控制

·一分钟阅读

Electron 的新主要版本正在开发中,并对我们的版本控制策略进行了一些更改。从 2.0.0 版本开始,Electron 将严格遵守语义化版本控制。


此更改意味着您会更频繁地看到主版本升级,并且它通常是对 Chromium 的主要更新。补丁版本也将更加稳定,因为它们现在只会包含错误修复,而不会包含新功能。

主版本增量

  • Chromium 版本更新
  • Node.js 主要版本更新
  • Electron 破坏性 API 更改

次要版本增量

  • Node.js 次要版本更新
  • Electron 非破坏性 API 更改

补丁版本增量

  • Node.js 补丁版本更新
  • 与修复相关的 Chromium 补丁
  • Electron 错误修复

由于 Electron 的语义版本控制范围现在将更有意义,我们建议使用 npm 的默认 --save-dev 标志安装 Electron,该标志将以 ^ 为版本添加前缀,使您安全地保持最新的次要版本和补丁更新。

npm install --save-dev electron

对于只对错误修复感兴趣的开发者,您应该使用波浪号语义版本前缀,例如 ~2.0.0,它永远不会引入新功能,只会修复以提高稳定性。

有关更多详细信息,请参阅 electronjs.org/docs/tutorial/electron-versioning

Electron 全新的国际化网站

·7 分钟阅读

Electron 有一个新网站,网址为 electronjs.org!我们用 Node.js Web 服务器替换了我们的静态 Jekyll 站点,从而可以灵活地对站点进行国际化,并为更多令人兴奋的新功能铺平道路。


🌍 翻译

我们已经开始了网站国际化的过程,目标是让全球开发者都能轻松进行 Electron 应用程序开发。我们正在使用一个名为 Crowdin 的本地化平台,该平台与 GitHub 集成,当内容被翻译成不同的语言时,会自动打开和更新拉取请求。

Electron Nav in Simplified Chinese

尽管我们一直在默默地努力,但已有超过 75 名 Electron 社区成员有机地发现了该项目,并加入了网站国际化和将 Electron 文档翻译成 20 多种语言的工作。我们看到来自世界各地的人们的每日贡献,法语、越南语、印度尼西亚语和中文等语言的翻译处于领先地位。

要选择您的语言并查看翻译进度,请访问 electronjs.org/languages

Translations in progress on Crowdin

如果您精通多种语言并有兴趣帮助翻译 Electron 的文档和网站,请访问 electron/electron-i18n 存储库,或者直接在 Crowdin 上进行翻译,您可以使用您的 GitHub 帐户登录。

目前在 Crowdin 上为 Electron 项目启用了 21 种语言。添加对更多语言的支持很容易,因此如果您有兴趣帮助翻译但没有看到您的语言列出,请告诉我们,我们将启用它。

原始翻译文档

如果您更喜欢阅读原始 markdown 文件中的文档,您现在可以用任何语言执行此操作

git clone https://github.com/electron/electron-i18n
ls electron-i18n/content

应用程序页面

从今天开始,任何 Electron 应用程序都可以轻松地在 Electron 网站上拥有自己的页面。 例如,请查看 Etcher, 1Clipboard, or GraphQL Playground,如图所示,这是该网站的日语版本。

GraphQL Playground

有很多令人难以置信的 Electron 应用程序,但它们并不总是容易找到,而且并非每个开发者都有时间和资源来构建合适的网站来营销和分发他们的应用程序。

仅使用 PNG 图标文件和少量应用程序元数据,我们就可以收集有关给定应用程序的许多信息。 使用从 GitHub 收集的数据,应用程序页面现在可以为每个具有公共存储库的应用程序显示屏幕截图、下载链接、版本、发行说明和 README。 使用从每个应用程序图标中提取的调色板,我们可以产生大胆且易于访问的颜色,从而使每个应用程序页面都具有一定的视觉区别。

应用程序索引页面现在还具有类别和关键字过滤器,用于查找有趣的应用程序,例如 GraphQL GUIp2p 工具

如果您有一个希望在网站上展示的 Electron 应用程序,请在 electron/electron-apps 存储库上打开一个拉取请求。

使用 Homebrew 一行安装

macOS 的 Homebrew 包管理器有一个名为 cask 的子命令,它可以让您使用终端中的单个命令轻松安装桌面应用程序,例如 brew cask install atom

我们已经开始收集流行 Electron 应用程序的 Homebrew cask 名称,并且现在在每个具有 cask 的应用程序页面上显示安装命令(对于 macOS 访问者)

Installation options tailored for your platform: macOS, Windows, Linux

要查看所有具有 homebrew cask 名称的应用程序,请访问 electronjs.org/apps?q=homebrew。 如果您知道我们尚未索引的其他具有 cask 的应用程序,请添加它们!

🌐 新域名

我们已将该网站从 electron.atom.io 移至新域名:electronjs.org

Electron 项目诞生于 Atom,GitHub 基于 Web 技术构建的开源文本编辑器。 Electron 最初被称为 atom-shell。 Atom 是第一个使用它的应用程序,但人们很快意识到这种神奇的 Chromium + Node 运行时可以用于各种不同的应用程序。 当 Microsoft 和 Slack 等公司开始使用 atom-shell 时,很明显该项目需要一个新名称。

因此,“Electron”诞生了。 在 2016 年初,GitHub 组建了一个新团队,专门负责 Electron 的开发和维护,与 Atom 分开。 从那时起,Electron 被成千上万的应用程序开发者采用,现在被许多大公司所依赖,其中许多公司都有自己的 Electron 团队。

支持 GitHub 的 Electron 项目(如 Atom 和 GitHub Desktop)仍然是我们团队的首要任务,但是通过迁移到新域名,我们希望帮助明确 Atom 和 Electron 之间的技术区别。

🐢🚀 Node.js 无处不在

之前的 Electron 网站是使用 Jekyll 构建的,Jekyll 是流行的基于 Ruby 的静态站点生成器。 Jekyll 是构建静态网站的绝佳工具,但该网站已开始超越它。 我们需要更多的动态功能,例如适当的重定向和动态内容渲染,因此 Node.js 服务器是显而易见的选择。

Electron 生态系统包括使用许多不同编程语言(从 Python 到 C++ 到 Bash)编写的组件的项目。 但是 JavaScript 是 Electron 的基础,并且是我们社区中使用最多的语言。

通过将网站从 Ruby 迁移到 Node.js,我们的目标是降低希望为网站做出贡献的人们的入门门槛。

⚡️ 更轻松的开源参与

如果在您的系统上安装了 Node.js(8 或更高版本)和 git,则可以轻松地在本地运行该站点

git clone https://github.com/electron/electronjs.org
cd electronjs.org
npm install
npm run dev

新网站托管在 Heroku 上。 我们使用部署管道和 Review Apps 功能,该功能会自动为每个拉取请求创建应用程序的运行副本。 这使审阅者可以轻松地查看拉取请求对站点的实时副本的实际影响。

🙏 感谢贡献者

我们要特别感谢世界各地所有贡献自己的时间和精力来帮助改进 Electron 的人们。 开源社区的热情极大地帮助 Electron 取得了成功。 谢谢!

Thumbs up!

Chromium RCE 漏洞修复

·一分钟阅读

在 Google Chromium 中发现了一个远程代码执行漏洞,该漏洞会影响所有最新版本的 Electron。 任何访问远程内容的 Electron 应用程序都容易受到此漏洞的攻击,无论是否启用了沙盒选项

我们发布了两个新版本的 electron 1.7.81.6.14,这两个版本都包含此漏洞的修复程序。 我们敦促所有 Electron 开发者立即将其应用程序更新到最新的稳定版本

npm i electron@latest --save-dev

要了解有关保持 Electron 应用程序安全的最佳实践的更多信息,请参阅我们的 安全教程

如果您希望报告 Electron 中的漏洞,请联系 security@electronjs.org

宣布 Electron 中的 TypeScript 支持

·5 分钟阅读

electron npm 包现在包含一个 TypeScript 定义文件,该文件提供了整个 Electron API 的详细注释。 这些注释可以改善您的 Electron 开发体验,即使您正在编写原始 JavaScript。 只需 npm install electron 即可在您的项目中获取最新的 Electron 类型。


TypeScript 是一种由 Microsoft 创建的开源编程语言。 它是 JavaScript 的超集,通过添加对静态类型的支持来扩展该语言。 近年来,TypeScript 社区发展迅速,并且 TypeScript 在最近的 Stack Overflow 开发者调查中被评为最受欢迎的编程语言之一。 TypeScript 被描述为“可扩展的 JavaScript”,并且 GitHubSlackMicrosoft 的团队都在使用它来编写数百万用户使用的可扩展 Electron 应用程序。

TypeScript 支持 JavaScript 中的许多较新语言特性,如类、对象解构和 async/await,但其真正的区别特性是 类型注释。 声明您的程序期望的输入和输出数据类型可以通过在编译时帮助您查找错误来减少错误,并且注释还可以用作程序如何工作的正式声明。

当库是用原始 Javascript 编写时,类型通常在编写文档时被模糊地定义为事后想法。 函数通常可以接受比文档中记录的更多类型,或者函数可能具有未记录的隐藏约束,这可能会导致运行时错误。

TypeScript 使用 定义文件 解决了这个问题。 TypeScript 定义文件描述了库的所有函数及其预期的输入和输出类型。 当库作者将 TypeScript 定义文件与其发布的库捆绑在一起时,该库的使用者可以在其编辑器中探索其 API 并立即开始使用它,通常无需查阅库的文档。

许多流行的项目(如 AngularVue.jsnode-github(现在还有 Electron!)编译自己的定义文件并将其与其发布的 npm 包捆绑在一起。 对于不捆绑自己的定义文件的项目,有一个 DefinitelyTyped,这是一个由社区维护的第三方定义文件的生态系统。

安装

从 1.6.10 版本开始,每个 Electron 版本都包含其自己的 TypeScript 定义文件。 当您从 npm 安装 electron 包时,electron.d.ts 文件会自动与安装的包捆绑在一起。

安装 Electron 的最安全的方法是使用精确的版本号

npm install electron --save-dev --save-exact

或者如果您正在使用 yarn

yarn add electron --dev --exact

如果您已经在使用第三方定义(如 @types/electron@types/node),则应从您的 Electron 项目中删除它们,以防止发生任何冲突。

该定义文件源自我们的结构化 API 文档,因此它将始终与 Electron 的 API 文档保持一致。 只需安装 electron,您将始终获得与您使用的 Electron 版本保持最新的 TypeScript 定义。

用法

有关如何安装和使用 Electron 的新 TypeScript 注释的摘要,请观看此简短的演示截屏

如果您正在使用 Visual Studio Code,您已经内置了 TypeScript 支持。 还有用于 AtomSublimevim其他编辑器 的社区维护的插件。

一旦您的编辑器配置了 TypeScript,您将开始看到更多上下文相关的行为,如自动完成建议、内联方法引用、参数检查等。

Method autocompletion

Method reference

Argument checking

TypeScript 入门

如果您不熟悉 TypeScript 并且想了解更多信息,则来自 Microsoft 的此介绍性视频很好地概述了创建该语言的原因、其工作原理、如何使用它以及其发展方向。

在官方 TypeScript 网站上还有一个 手册和一个 playground

由于 TypeScript 是 JavaScript 的超集,因此您现有的 JavaScript 代码已经是有效的 TypeScript。 这意味着您可以逐步将现有的 JavaScript 项目转换为 TypeScript,并根据需要添加新的语言特性。

致谢

如果没有 Electron 的开源维护者社区的帮助,这个项目是不可能实现的。 感谢 Samuel AttardFelix RiesebergBirunthan MohanathasMilan BurdaBrendan Forster 和许多其他人,感谢他们的错误修复、文档改进和技术指导。

支持

如果您在使用 Electron 的新 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 存储库上提交一个问题。

快乐的 TypeScript 编码!

本周项目:Jasper

·6 分钟阅读

本周我们采访了 Jasper 的创建者,Jasper 是一款基于 Electron 的用于管理 GitHub 通知的工具。


你好! 你是谁?

我是 Ryo Maruyama,日本的一名软件开发人员。 我正在开发 JasperESDoc

什么是 Jasper?

Jasper 是一个灵活而强大的 GitHub 问题阅读器。 它支持 github.com 和 GitHub Enterprise 上的问题和拉取请求。

Jasper App Screenshot

你为什么制作它?

当人们在其工作或 OSS 活动中使用 GitHub 时,他们每天往往会收到许多通知。 作为订阅通知的一种方式,GitHub 提供了电子邮件和Web 通知。 我使用了这些几年,但是我遇到了以下问题

  • 很容易忽略我被提及、我评论或我正在关注的问题。
  • 我将一些问题放在脑海的角落里以便稍后检查,但是我有时会忘记它们。
  • 为了不忘记问题,我在浏览器中打开了很多选项卡。
  • 很难检查所有与我相关的问题。
  • 很难掌握我的团队的全部活动。

我花费了大量时间和精力来防止这些问题,因此我决定制作一个 GitHub 问题阅读器来有效地解决这些问题,并开始开发 Jasper。

谁在使用 Jasper?

Jasper 被在使用 GitHub 的多家公司的开发人员、设计人员和经理使用。 当然,一些 OSS 开发人员也在使用它。 而且 GitHub 的一些人也在使用它!

Jasper 是如何工作的?

配置 Jasper 后,将出现以下屏幕。 从左到右,您可以看到“流列表”、“问题列表”和“问题正文”。

Jasper Start Screen

这个“流”是 Jasper 的核心功能。 例如,如果您想查看“electron/electron 存储库中分配给 @zeke 的问题”,请创建以下流

repo:electron/electron assignee:zeke is:issue

Jasper Start Screen 2

创建流并等待几秒钟后,您可以看到满足条件的问题。

Jasper Start Screen 3

我们可以使用流做什么?

我将介绍什么类型的条件可以用于流。

用户和团队

问题
mentions:cat mentions:dog提及用户 catdog 的问题
author:cat author:dog由用户 catdog 创建的问题
assignee:cat assignee:dog分配给 catdog 的问题
commenter:cat commenter:dogcatdog 评论过的问题
involves:cat involves:dog“涉及” catbob 的问题
team:animal/white-cat team:animal/black-doganimal/white-catanimal/black-dog 被提及的问题

involves 表示 mentionauthorassigneecommenter

存储库和组织

问题
repo:cat/jump repo:dog/runcat/jumpdog/run 中的问题
org:electron user:cat user:dogelectroncatdog 中的问题

orguser 相同

属性

问题
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1附加到 cat/jump 中的 v1.0.0v1.0.1 的问题
repo:cat/jump label:bug label:blocker附加到 cat/jump 中的 bug blocker 的问题
electron OR atomshell包含 electronatomshell 的问题

审核状态

问题
is:pr review:requiredcat/jump 中需要审核的问题
is:pr review-requested:catcat 请求审核的问题。
但是这些问题尚未审核。
is:pr reviewed-by:catcat 审核的问题

您可能已经注意到,流可以使用 GitHub 的搜索查询。 有关如何使用流和搜索查询的详细信息,请参见以下 URL。

Jasper 还具有未读问题管理、未读评论管理、标记星号、通知更新、过滤问题、键盘快捷键等功能。

Jasper 是付费产品吗? 它要多少钱?

Jasper 为 12 美元。 但是,您可以使用 免费试用版 30 天。

你为什么选择在 Electron 上构建 Jasper?

我喜欢 Electron 的以下方面

  • 可以使用 JavaScript/CSS/HTML 开发应用程序。
  • 可以为 Windows、Mac 和 Linux 平台构建应用程序。
  • Electron 正在积极开发,并且拥有庞大的社区。

这些功能可以快速而简单地开发桌面应用程序。 太棒了! 如果您有任何产品构想,请务必考虑使用 Electron。

你在开发 Jasper 时遇到过哪些挑战?

我很难弄清楚“流”的概念。 起初,我考虑使用 GitHub 的 Notifications API。 但是我注意到它不支持某些用例。 之后,我考虑使用 Issues APIPull Requests API,以及 Notification API。 但是它从未成为我想要的东西。 然后,在考虑各种方法时,我意识到轮询 GitHub 的 Search API 将提供最大的灵活性。 我花了一个月的时间进行实验才达到这一点,然后在两天内我实现了 Jasper 带有流概念的原型。

注意:轮询最多限制为每 10 秒一次。 对于 GitHub API 的限制来说,这是可以接受的。

接下来有什么?

我计划开发以下功能

  • 过滤流:一个流拥有一些过滤问题的过滤流。它就像 SQL 的视图。
  • 多个账号:你将能够同时使用 github.com 和 GHE
  • 提升性能:目前在 WebView 中加载 issue 的速度比普通浏览器慢。

关注 Twitter 上的 @jasperappio 以获取更新。