这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
xinnix

做了一个驻守菜单栏的 GitHub CI 监控:红了会叫你,点开就能复制错误日志

  •  
  •   xinnix · 1 day ago · 605 views

    每天的工作流大概是:push 完代码 → 切走干别的 → 过五分钟想起来的 时候切回浏览器刷一下 Actions 页,确认 CI 绿了没有。

    一天重复十几次,烦。

    试过 Gitify(Electron,只做通知,失败了你还是得自己开网页找哪红 了)和 ActionBar(付费,仅 mac),都不太是想要的样子,就自己写了 一个—— Glint,今天发 v1.1.0-beta.1,三端全齐,MIT 开源:

    https://github.com/xinnix/glint ← 求 Star https://xinnix.github.io/glint/ ← 官网(纯静态,无构建)

    [GIF:托盘变红 → 点开面板 → 失败仓库置顶 → 点「复制错误」]

    它解决的就是上面那个循环:

    1. 一眼即知 —— 菜单栏一颗圆点聚合所有仓库的最差状态,绿/红 (带失败数)/橙(运行中)/灰(无 CI),鼠标悬停看明细,点托盘 弹面板
    2. 失败不开网页 —— 失败仓库置顶,直接下钻到具体的 job ▸ step; 「复制错误」一键拉取日志、截取 ##[error] 前后各十几行上下文进 剪贴板,连 repo@sha 一起带上,直接丢给 AI 或同事
    3. 状态变化才通知 —— 轮询 + 内存 diff,失败/转绿才弹,macOS 上 点击通知直达面板
    4. 省限额 —— 登录后 5000 req/h,且全部请求走 ETag 条件查询, 没变化(304)不计数;无 token 公共仓库也能用,自动降速到 4 分钟一轮
    5. 零配置登录 —— RFC 8628 Device Flow(就是 gh auth login --web 同款),token 只存系统钥匙串,不落盘不进配置文件
    6. 开机自启 / 检查更新横幅 / 中英双语,全部内置

    下载(v1.1.0-beta.1,全平台安装包): macOS: universal DMG(7MB,Apple Silicon + Intel) Linux: deb / AppImage Windows: NSIS 安装器 / MSI,均 < 5MB https://github.com/xinnix/glint/releases/latest

    技术栈: Tauri 2 + Rust(ureq 同步 HTTP + std::thread,没引 tokio),前端纯 HTML/JS/CSS 无任何构建步骤,托盘图标是 Rust 按几何参数程序化生成的 RGBA,没有一张静态图标资源。想二开的话 clone 下来 npm i 只装 @tauri-apps/cli 一个依赖。

    如实交代目前的状态(免得大家踩坑):

    • 所有构建未签名: macOS 首启右键 → 打开;Windows 会过 SmartScreen (Developer ID / Authenticode 等有账号后再补)
    • 点击通知唤起面板目前仅 macOS,Win/Linux 上点击只是激活应用
    • Linux Wayland 下面板没法贴着托盘定位(系统限制),X11 完整
    • Windows/Linux 端刚打包出来,我自己没有真机长期用过,求有 条件的佬帮忙踩坑: https://github.com/xinnix/glint/issues

    demo 仓库建了一个 https://github.com/xinnix/glint-demo (push 一 个 FAIL 标记文件就红,删掉就绿),不想拿自己仓库做实验的可以用 它看通知效果。

    xinnix
    xinnix
    OP
    1 day ago
    1
    补充点技术细节和踩坑,有兴趣写 Tauri 的可以参考:

    - Tauri v2 的同步 #[tauri::command] 跑在主线程,里面做阻塞网络
    IO 会把整个 UI 冻住——所有网络命令必须 async fn +
    tauri::async_runtime::spawn_blocking
    - keyring = "3" 不开 feature 是纯内存 mock:写入"成功"、重启即
    消失,不加 apple-native/windows-native/linux-native 会做出
    「登录成功但 token 从未落盘」的灵异现象
    - tray-icon 在 macOS 上报的坐标是「逻辑坐标 × 托盘所在屏 scale」
    的伪物理值,双屏不同缩放时用 tao 的 set_position(Physical)
    必错位;Win/Linux 上报的又是真物理坐标——同一个函数写了两个
    cfg 分支
    - CI 无头 runner 上给 mac 产物签名:手搓 security import +
    partition-list 都不行,codesign 会等一个没人点的授权弹窗直接
    挂死(实测挂过 40 分钟)。最后用 tauri-bundler 原生的
    APPLE_CERTIFICATE 环境变量机制才稳,自签证书的 CN 得写成
    "Developer ID Application: xxx" 且必须带 OU,bundler 只认这个
    格式
    - 全平台 CI 矩阵(GitHub Actions): mac universal / ubuntu-22.04
    / windows-latest,一个 tag 同时出五个安装包进同一个 Draft

    仓库里 docs/ROADMAP.md 记了完整里程碑,欢迎围观。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1631 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:05 · PVG 02:05 · LAX 10:05 · JFK 13:05
    ♥ Do have faith in what you're doing.