[分享创造] 放弃 Linear 后,我开发了 Gitstride:一个 GitHub Projects 的 macOS 原生客户端
我之前半年,开发个人项目的时候一直在用 Linear 来进行项目管理。本来我以为免费配额是够用的,但最近几个月,我同时开发多个项目,Issue 就多了起来,Linear 的免费配额就不够用了,因此,我就转向了 GitHub Projects ,毕竟这些项目的代码本来就托管在 GitHub 上。
迁移到 GitHub Projects 之后,我发现它内置的 PR 与 Issue 联动工作流不如 Linear 完善,也不太符合我的需求。比如,当我给一个 Issue 关联 Draft PR 时,我希望这个 Issue 的状态能自动变成 In Progress;当 PR 准备好 Review 的时候,Issue 的状态也能跟着变成 In review。如果一个 Issue 关联了多个 PR ,我希望等这些 PR 全部合并之后,它才会进入 Done,而不是合并其中一个 PR 就算完成了。
此外,我也不太喜欢每次都要打开网页来管理项目,还是更想用本地客户端来操作。
所以,在 codex 的协助下,我用 Swift 6 开发了 GitStride,一个 GitHub Projects 的 macOS 原生客户端。
GitStride 实现了前面提到的状态联动规则,我不用再随着 PR 的进度手动修改 Issue 状态。如果 Project 里没有 In review 这个状态,设置 GitStride 的 PR 自动化后,GitStride 默认会按需为你自动在 Project 中添加这个状态。
设置 PR 自动化时,也可以选择后续不追加 In review 这个状态。
GitStride 在菜单栏会常驻一个图标,点击图标可以快速查看项目 Issue ;等我真的要整理任务时,再打开主窗口,在看板或表格视图中创建和编辑 Issue 。
为了确保创建 Issue 、更新 Issue 描述等需要向 Github 多次发送请求的操作的跟手,GitStride 开发时借鉴了 Linear 的 local-first 的理念。GitStride 会把项目快照缓存在本机。修改改状态后,界面会先显示变化,再同步到 GitHub ;创建或编辑 Issue 提交后,app 会马上显示新内容,后台处理向 Github 发起的请求。
GitStride 还支持创建 Backlog 状态的 Issue ,新建 Issue 时可以直接选择 Backlog 状态;如果 Project 里没有这个状态,GitStride 会自动补上。
项目已经开源在 GitHub。如果你也在用 GitHub Projects ,欢迎试试,如果觉得好用,还请给个 Star 。更多介绍,参见 GitStride 官网
下一步计划
- 添加命令面板功能、完善 app 内的快捷键操作
- 添加甘特图视图