Skip to content

Omni-Stacks 2.0.0

Latest

Choose a tag to compare

@SuchaharCan SuchaharCan released this 01 Nov 16:35
· 2 commits to master since this release

Omni-Stacks

Omni-Stacks 是面向 Stacks 2 的 Alfred 任务中心。Alfred 负责交互和轻量参数预处理,
单二进制 C++ 核心负责项目、清单、任务、计时、提醒同步和持久化。
无后台进程 无内存占用, 即时响应, 日志记录 , 覆盖日常高频次 操作 无需启动Stacks软件 , Alfred 统一操作窗口

核心源码:CXX-CMake-template

核心CLI 接口架构 业务逻辑文档:https://suchaharcan.github.io/

包大小:约 563 KB
SHA-256:216441591d8ca79edccdc9a94006c74984d2260c10b2ab871de0c8dd14f9ffe8

2026-11-07 第5版 验证优化 封版, 转维护状态, 除非 Stacks2 损在破坏性结构变化 ;

拉取核心源码后执行 just docs,查看架构设计、业务接口、持久化字段和测试说明。
just package 本地生成 插件包

Apple 的“无法验证”是通用文案,表示该独立二进制没有 Developer ID 签名和公证,不能说明已经检测到恶意行为。
解决方式就是你在“隐私与安全性”中选择“仍要打开”;

已经提供 源码 可审查,自行 使用 just package 生成自己的插件

简单直观的描述 插件的使用流程

s ap ,导入 你所使用的 工作区路径(最少一个,数量不限, 我个人 就区分 6个常用工作区) 后续 工作展开的前提
s rl 重载操作, 避免 StacksGUI 上是 少数低频 插件未覆盖或影响插件的部分,走该命令 进行双端同步( Stacks GUI 和 Alfred 插件) 类似对账机制

s i 自动 列出 全工作区下的全收件箱 中的任务 , 选择 指定收件箱 回车进入查看期内的任务列表, 选择 任务 回车 进入任务详情页 支持模糊搜索 , 若搜索到 回车进入 任务详情页, 否则 进入 六行创建面板
s v 自动 列出 全工作区下的全项目 及其项目下的全看板 中的任务, 其余操作 和功能同 s i
s t 自动全局检索 全工作区下的所有任务 , 只能 模糊匹配 和 进入任务详情页,相比较 s i, s v ,仅缺乏 创建任务
s w
s tm
s pin
s di
s cf 等 均是 直观的理解命令的作用和含义均不在赘述
而 s 若匹配不到上述 合法触发关键词时 ,则 直接进入 新建任务的六行创建面板 再次回车 进入 默认收件箱或固定常用项目看板中

s i ,s v 均是 先指定 上级归属再进行创建任务, 而 s 是先创建任务再进行 后续归类 ; 两种习惯涵盖不同的操作喜好 ;
同时 因为 存在 后续工作区膨胀 只有常用的 归属的话, 都可以试试
值得说明的是, 下方的截图 多少 是失效的,那是初次2.0.0 版本时的上传;
插件虽然是个小项目 脚本级复杂度, 但 值得打磨 ;

小细节亮点 简单提及

  1. 新建任务 六行创建面板
  2. 模糊搜索
  3. 新建任务 快速 ,3种 Title | desc | start time | end time | high , title, title | desc , title| desc| high, title | high
  4. 模糊匹配 title, desc;
  5. 打磨 s v, 复用到s i ;
  6. 同步到苹果日历, 苹果待办提醒, OmniFocus 中
  7. 性能优先, 毫秒级响应, 体积占用小, 无后台守护进程, 异常处理机制, 日志记录排查定位;
  8. Alfred 仅负责交互 参数预处理 核心逻辑流程 均有C++ 负责, 有什么好处呢? 你可以 异常轻松的 移植 到Raycast, uTools, Quicksilver 等 或者 你 有新的 交互设计, 只需要 调用我的接口 即可 生成属于你的 插件
  9. C++项目 均有 单元测试 变异测试, 及其文档注释 , 针对我日常开发体验中遇到的 问题 均逐个 解决.

后续 应该没有什么更新内容了, 除非是 Stacks 破话性数据结构 或者 让我兴奋的 软件之间的 数据联动 工作流搭建 , 当然 如果你有 更好的 交互方式 或者 让你自嗨 兴奋的 想法的话,欢迎提交 issue 我看到会酌情 开发的,
或者 你自行 根据源码 自由开发

如何开发 调试呢?

拉取代码到本地, 直接执行just package 就能打包 , 直接安装到Alfred中 ;

其中核心 接口 是C++ , Alfred 仅负责交互 和 参数处理
接口文档 也提供了

开发版本信息

  • Alfred 5.8.1 [2349]
  • Stacks 2.7.5 Build 26248

若 Alfred 插件过高,可自行建立空白workflow, 将插件中的内容进行移植 进来即可;
因为 Alfred 仅负责 接收参数 和 处理 核心二进制文件的处理结果, 与Alfred 版本特性无关.

安装

  1. 下载本 Release 中的 Omni-Stacks.alfredworkflow。
  2. 双击文件,在 Alfred 中确认导入。
  3. 打开 Alfred Workflow Configuration,按需要设置命令别名、日志、通知、声音和大字号。
  4. 在 Alfred 输入 s,首次执行 s ap 选择 Stacks 2 工作区目录。
  5. 如果使用提醒同步,允许 macOS/Alfred 访问提醒事项与自动化 OmniFocus。

发布包不包含 data/ 和 log/。首次启动会在二进制同级自动创建空索引与日志目录;
已安装升级时会保留并迁移用户已有数据。

初始配置

默认触发词为 s。Workflow Configuration 提供:

  • STACKS_LOGGING:启用 bqlog 接口日志和 Debug trace,保留最近 3 个月。
  • STACKS_DEBUG:输出完整调用链到 Alfred Debugger。
  • STACKS_NOTIFICATION:显示操作通知。
  • STACKS_SOUND:成功播放 Glass,失败播放 Basso。
  • STACKS_LARGE_TYPE:用 Alfred Large Type 显示结果。
  • STACKS_DELIMITER:任务字段分隔符,默认 |。
  • STACKS_ALIAS_*:ap/rl/cf/v/t/w/tm/i 八个命令别名均可修改。
image image

命令与操作

新建任务

输入:

s 标题|描述|开始时间|截止时间|优先级
image

后四项可以留空。支持 today、tomorrow、+3d、星期名称和 YYYY-MM-DD。
优先级支持 low/低、medium/中、high/高、critical/紧急。

在结果中选择项目或清单,回车创建。项目级任务进入 Backlog,清单级任务进入对应
Stack,任务文件写入当前 Stacks 工作区。

s ap:添加路径

必须先配置保存 工作区 路径 ,后续针对 工作区下的 项目 看板清单 和 任务 才能持久化到工作区文件中,这个是前置步骤
image
image

  1. 输入 s ap。
  2. 回车打开目录选择器。
  3. 选择 Stacks 2 工作区。
  4. 核心递归扫描 .project 并原子重建 Project.json、Stack.json。

s reload 和 s cl 是兼容别名。

s rl:重载全部路径

image
  1. 输入 s rl。
  2. 回车重新扫描所有已保存工作区。
  3. 该操作不会打开目录选择器。

s cf:路径配置

显示“添加新路径”“重载全部路径”和所有已保存路径。第一路径是 Inbox 默认路径。
image

s v:项目、清单与任务

在 项目 看板清单 这 一级 和 二级 下 针对该层级的任务 支持 查看 编辑 模糊搜索 和 新建任务
image

  1. 输入 s v,模糊筛选项目或清单。
  2. 回车进入项目/清单任务页。
  3. 继续输入关键词模糊筛选该层级任务。
  4. 回车任务进入编辑详情。
  5. 有匹配时显示任务;无匹配时显示“新建任务”并进入插入流程。
  6. 任务页和任务详情均提供最后一行 Back。

任务详情支持:

  • 修改标题、描述;
  • 设置开始日期、截止日期或完整计划区间;
  • 设置/清除优先级;
  • 完成、重开、归档;
  • 开始/停止计时并写入 Stacks timelogs;
  • 同步 Apple 提醒、OmniFocus 或两者;
  • 移到可恢复垃圾箱 tasks/.trash。

s t:全局任务搜索

搜索全部工作区、全部项目和全部清单下的任务。可输入:
image
image
image
image

s t 关键词

s w:本周截止

image

聚合全部已保存工作区的本周未完成、未归档截止任务。可一键同步本周任务到
Reminders + OmniFocus。

s tm:计时

image

列出运行中的计时器,回车停止并写入 Stacks 兼容 timelog。

s i:Inbox

在 收件箱 内 可 模糊查询 编辑 新建 任务
image
image
image

  1. 输入 s i,列出全部工作区,第一个为默认 Inbox。
  2. 回车工作区,直接显示该工作区的 Inbox 任务。
  3. 输入关键词模糊匹配任务;回车进入编辑。
  4. 无匹配时自动显示新建收件箱任务。
  5. 当前工作区没有 Inbox 任务时直接显示“录入收件箱任务”。
  6. Back 固定在最后一行。

s i 后直接输入任意文本会被阻止,必须先选择工作区。

注意事项

  • Stacks 应用与 Omni-Stacks 不建议同时编辑同一条任务详情。
  • 创建任务会同时更新 .task 与 .project;后一步失败时会回滚新任务。
  • 删除任务会移动到 tasks/.trash,不会立即永久删除。
  • 提醒同步通过任务中的 [Stacks-ID:<id>] 去重更新。
  • 关闭 STACKS_LOGGING 后不会写入 bqlog 或 trace 文件。
  • 日志开启时自动清理超过 3 个月的接口日志和每日 trace。
  • 发布包不包含用户工作区路径、索引或日志。

调试

  1. 在 Workflow Configuration 中启用 Logging 和 Debug。
  2. 打开 Alfred Debugger。
  3. 输入命令,查看 [stacks-trace]:
    • Alfred 入参;
    • 命令判定;
    • 参数预处理;
    • 二进制 argv;
    • 退出码和返回摘要;
    • Alfred 后处理结果。

接口日志位于 log/interface.log_YYYYMMDD_N.log,每日 trace 位于
log/trace-YYYYMMDD.log。

源码与文档

git clone https://github.com/SuchaharCan/CXX-CMake-template.git
cd CXX-CMake-template/single-exe-static-modules
just 
just docs

生成的文档包含架构设计、模块接口、CLI 输入输出、Stacks 字段与测试边界
开发架构文档: https://suchaharcan.github.io/

单输入框六行创建

  • 一次输入 标题|描述|开始|截止|优先级。
  • 下方六行实时回显各字段完整内容。
  • 标题、描述、开始、截止、优先级使用同一创建 action;标题存在后按回车直接创建。
  • 开始默认 today,优先级默认 low,截止默认未设置。
  • 描述中的 | 使用 \| 转义。

可配置短键哨兵

  • task:、board:、inbox:、路径移除等短键统一追加输入分隔哨兵。
  • 默认哨兵为 ✅ 。
  • Workflow Configuration 新增 STACKS_HANDLE_SENTINEL,可改成任意非空文本。
  • 用户删除哨兵后继续输入仍然兼容。

已完成 / 已归档任务过滤

  • 默认不检索已完成或已归档任务。
  • Workflow Configuration 新增 STACKS_INCLUDE_DONE_ARCHIVED。
  • 开启后,项目、Stack、Inbox 和全局任务搜索同时包含完成与归档任务。

工作区与路径

  • 有效工作区必须包含正确类型的 companies、documents.tree、people、tasks/
    和 timeboxes/;.project 文件可选。
  • s cf 只列出路径、移除说明和返回项。
  • 回车路径进入确认页;确认后只移除 Project.json、Stack.json、
    Timers.json 中的索引,不删除工作区文件。
  • 已有失效路径或已被外部删除的工作区也可以移除其索引。

搜索与任务交互

  • 模糊搜索标题和描述,标题命中优先于描述命中。
  • s i 先选工作区,回车查看 Inbox 任务。
  • 任务短键使用 ✅xxxxxxxx ✅,不再把完整任务 ID 放进输入框。
  • 空 action、失效 action 不再显示巨大的 unknown action:。

更新检查与插件图标

  • 根目录 update.json 使用 Alfred 内置 Workflow Update 协议。
  • remote_json 返回 version、download_url 和 description。
  • 用户通过 Alfred 菜单中的 “Check for Workflow Updates” 检查并安装新版。
  • 插件不启动自己的后台更新检查进程。
  • Alfred 根 icon.png 是指向 icons/icon.png 的符号链接,不再复制第二份图标。

日志与测试

  • 核心写接口记录接口名、入参、字段变化和结果摘要。
  • 32 个 GTest、安装布局和打包首启测试通过