自己被烦到的问题,
自己写个工具解决。

四个 macOS 上的小东西,都不打算做成生意 —— 前三个我自己每天在用, 最后一个是给带英语小班的老师写的。 源码全公开,安装包直接从 GitHub Releases 下,没有账号,没有订阅,没有遥测。

cod7ce@mac: ~/Workspace/Personal — zsh
whoami
丁楠 · 成都 · 2009 年开始写生产代码
ls
FourQuadrants/   kid-scratch-app/   TouchGuard/   CourseHours/
cat WHY
同一个问题每天烦我第三次的时候,写工具就比忍着划算了。
# 四个都还在改,版本号是这个页面构建时现取的。

// products

肆 图标
肆FourQuadrants

把一周要做的事扔进四个格子。艾森豪威尔矩阵的原生实现。紧急和重要是两件事,分开看才知道该先干哪个。

v0.18.3macOS / iOSSwiftUISwiftDataXcodeGen
小小创客 图标
小小创客Kid Scratch App

给孩子的 Scratch,装在自己电脑上。官方 Scratch 3 的完整内核,套一层童趣外壳。断网也能玩,作品自动保存在本地。

v0.1.6macOS (Apple Silicon)Electronscratch-guiNode.js
TouchGuard菜单栏常驻

打字时手掌蹭到触控板,光标不再乱跳。一个 100 KB 出头的菜单栏小工具。检测到你在打字,就把触控板暂时静音。

v0.2.1macOS (universal)SwiftCGEventTap
课时统计 图标
课时统计CourseHours

点名一次,课时、欠费和这个月的账一起算清楚。给带英语小班的老师写的桌面应用。排课、点名扣课时、充值抵扣、经营报表,数据只在这台 Mac 上。

v0.3.0macOS (Apple Silicon)Tauri 2React 19rusqlite

// 共同点

四个项目长得完全不一样 —— 一个 SwiftUI,一个 Electron,一个 Tauri 套着 Rust, 还有一个两万行不到的 Swift 事件过滤器 —— 但有几条是一样的。

  • 数据在你自己机器上。没有服务端,没有账号体系,也就没有什么可以泄露的。
  • 自动更新都是手写的。Sparkle、electron-updater 和 Tauri 的 updater 插件都要求 Developer ID 签名, 个人项目没有,于是四个都改成直接读 GitHub Releases API 自己下载替换。
  • 发布靠打 tag。推一个 v* 标签,CI 构建、打包、传 Release,一条龙。

踩过的坑都写在各自的详情页里了 —— 包括那个「素材库点了没反应,也没有任何报错」的 Web Worker 悬挂,找了整整一晚上。