Skip to content

Releases: ThreeFish-AI/give-me-a-break

Give me a break 0.1.2

Choose a tag to compare

@github-actions github-actions released this 03 Jul 17:57
1a2b371

v0.1.2 — 2026-07-04(GA · UI/UX 深度优化 · 菜单分组 / 运动类型注册表 / 跳过残留修复)

继 v0.1.1 后的体验打磨版本:状态栏菜单重排、运动类型可个性化持久、运动补录时间自动贴合休息区间,并修复一处「跳过看似复用上次记录」的 SwiftUI 状态残留 bug。沿「最小干预、循证工程」原则,无新依赖、零回归(83 单测全绿、复制 / 导出 Markdown 与 v0.1.1 逐字节一致)。

核心改进

  • 状态栏菜单:文案统一 2~4 字 + 按动作分组。过长文案精简(补录工作日志补录工作补录运动记录补录运动),全菜单分 5 段(分隔线划分):立即休息查看(工作日志·综合报告)┃ 录入(补录工作·补录运动)┃ 偏好(设置·开机自启)┃ 退出。扫读更快、语义边界清晰。
  • 运动类型注册表(可持久增删 + 自动记住)。运动类型由硬编码升级为配置注册表——在设置「运动记录」页集中增删;录入时经「其他…」临时输入的自定义类型保存即自动记住(去重、保序),下次直接挑选,无需重输。
  • 运动补录时间自动定位到休息区间。「补录运动」默认时段由「上一条记录的结束时刻」改为 [现在 − 休息时长, 现在]——贴合「补刚才那段休息做的运动」的真实语义,不再停留在上次记录。
  • 运动提示窗超时可配。新增 exercisePromptTimeoutSeconds(默认 180s,可设「永久等待」),与工作日志小结窗对称;原硬编码 180s 兜底保留为默认值。

Bug 修复

  • 修复「跳过 / 重开窗复用上次输入」:四个提示 / 补录窗 + 报告 / 设置窗控制器在稳定 NSHostingController 上反复替换 rootView,致 SwiftUI @State 跨弹窗残留——「输入文字 → 跳过」后下次弹窗文字仍在(视觉 = 复用,非数据复用,故持久层无可疑写入)。改为每次重建 hosting 控制器,@State 归零,跳过真正「忽略」。已记入 issue #9

工程

  • 配置 schema 6→7:exerciseTypes(默认 ["胯下击掌","提膝击掌","深蹲","俯卧撑"])/ exercisePromptTimeoutSeconds(默认 180s),容错解码平滑迁移(缺字段补默认、显式空数组尊重)。
  • 抽纯函数 exerciseBackfillDefaultRange[now − restDuration, now],负值裁剪)与 appendedExerciseTypes(去重 / 保序 / 去空白,无新增返回 nil 跳过写盘);落库侧据此「写 config + 热更新引擎」。
  • 单元测试 77→83(+6:v6→v7 迁移 / exerciseTypes 往返 / 补录默认时段 / 类型追加纯函数),全绿 < 1s。

说明

  • macOS 与 Windows 产物均未做代码签名 / 公证(与 v0.1.0 / v0.1.1 一致),首次启动需手动放行(详见 README);代码签名 / 公证将在后续版本补齐。

macOS

下载 give-me-a-break-0.1.2-macos.zip。解压后将 GiveMeABreak.app 拖入 /Applications;首次启动需在「系统设置 → 隐私与安全性」授权辅助功能与媒体控制权限。

⚠️ 此版本为 ad-hoc 签名(未签名/未公证)。首次打开会被 Gatekeeper 拦截,请执行 xattr -dr com.apple.quarantine /Applications/GiveMeABreak.app 放行(macOS 15.1 Sequoia 起「右键→打开」已失效),仅供内测。

Windows

下载 give-me-a-break-0.1.2-win64.zip。解压后运行 GiveMeABreakShell.exe。内置 .NET 8 运行时,无需额外安装任何依赖

⚠️ 此 Windows 版本未签名。首次运行会被 SmartScreen 拦截,请点击「更多信息 → 仍要运行」。GiveMeABreakShell.exe 可能被杀软(Defender / 360 / 火绒)误报(WH_KEYBOARD_LL 键盘钩子 + SendInput 媒体键触发),需手动加入信任。代码签名将在后续版本提供。

Give me a break 0.1.1

Choose a tag to compare

@github-actions github-actions released this 30 Jun 11:17
db1f8e0

v0.1.1 — 2026-06-30(GA · 运动记录 + 综合报告 · 工作日志可编辑 + 原生阅读器)

继 v0.1.0 MVP 正式发布后的首个特性版本,沿「认知闭合 × 身体留痕」双主线演进:休息自然结束时随手录入微运动,与工作日志一并汇入 周 / 月 / 季 / 年 综合报告;同时工作日志窗口由只读等宽 Markdown 升级为原生层级化阅读器,并支持逐条编辑 / 删除。两处改动均严守单一事实源,复制 / 导出 Markdown 与 v0.1.0 逐字节一致。

核心能力

  • 运动记录(休息里的身体留痕):休息自然结束时弹轻量输入框,记录这段休息里做的微运动(胯下击掌 / 提膝击掌 / 深蹲 / 俯卧撑,或自定义),每条含「运动时段 + 若干(类型 × 数量)」。与进入休息前的工作日志小结窗对称:工作日志完成「认知闭合」,运动记录把休息里的微运动也留痕,日积月累汇入综合报告。永不阻塞引擎:回车「记录完成」/ Esc 或关窗跳过 / 到点自动放行(固定 180s 兜底);连续 3 次跳过自动静默一轮;提前结束(Esc)与被会议、下班打断均不弹;可在设置整体关闭。
  • 综合报告(周 / 月 / 季 / 年):运动记录与工作日志一并汇入新的「综合报告」窗口,按周 / 月 / 季 / 年原生层级呈现——工作回顾(Top N + 周期分布,只读,逐条编辑仍归「工作日志」窗)与运动概览(按类型聚合 + 明细,周 / 月支持编辑 / 删除,季 / 年按月汇总)。一键复制与导出 Markdown(2026-W26.md / 2026-06.md / 2026-Q2.md / 2026.md)。
  • 工作日志:原生阅读器 + 逐条编辑:报告窗口由等宽 Markdown 原貌升级为原生 SwiftUI 层级渲染——标题 / 元数据、Top 3 排名(序号徽标 + 等宽时长)、完成清单 / 按日·按周分组、月度汇总(原生 Grid)、待续·下一步,深色优先、层级与可读性显著提升;明细行支持编辑(起止时段 / 专注时长 / 小结 / 下一步)与删除——悬停内联按钮 + 右键菜单常驻(含「复制本条」)+ 删除二次确认,报告随结构化记录自动重算。补录与编辑共用同一表单。

工程

  • 引擎正交扩展「运动记录」域:ExerciseEntry / ExerciseSet 容错解码模型、ExerciseStore(原子写 + 容错读)、CombinedReport(纯函数聚合 周 / 月 / 季 / 年);抽出 ReportDateKeys(day / week / month / quarter / year,SSOT,工作日志报告行为零回归);引擎新增 onPostBreak,仅在休息自然结束(.resting → .working)触发。配置 schema 5→6(exerciseLogEnabled,缺省 true 平滑迁移)。
  • 工作日志重构为「单一事实源」:抽出结构化 WorkLogReportModel + buildWorkLogReportModel 作为聚合唯一来源,由原生阅读器与导出 Markdown 两渲染器共用;renderWorkLogReport 降为序列化器,复制 / 导出与 v0.1.0 逐字节一致(golden 快照守护,零回归);WorkLogStore 新增按 idupdate / delete
  • 单元测试 54→77(含运动记录 / 综合报告 golden + onPostBreak 不变量),全绿 < 1s。

说明

  • 菜单栏新增「综合报告…」「补录运动记录…」两项;设置新增「运动记录」页签(开关)。
  • macOS 与 Windows 产物均未做代码签名 / 公证(与 v0.1.0 一致),首次启动需手动放行(详见 README);代码签名 / 公证将在后续版本补齐。

macOS

下载 give-me-a-break-0.1.1-macos.zip。解压后将 GiveMeABreak.app 拖入 /Applications;首次启动需在「系统设置 → 隐私与安全性」授权辅助功能与媒体控制权限。

⚠️ 此版本为 ad-hoc 签名(未签名/未公证)。首次打开会被 Gatekeeper 拦截,请执行 xattr -dr com.apple.quarantine /Applications/GiveMeABreak.app 放行(macOS 15.1 Sequoia 起「右键→打开」已失效),仅供内测。

Windows

下载 give-me-a-break-0.1.1-win64.zip。解压后运行 GiveMeABreakShell.exe。内置 .NET 8 运行时,无需额外安装任何依赖

⚠️ 此 Windows 版本未签名。首次运行会被 SmartScreen 拦截,请点击「更多信息 → 仍要运行」。GiveMeABreakShell.exe 可能被杀软(Defender / 360 / 火绒)误报(WH_KEYBOARD_LL 键盘钩子 + SendInput 媒体键触发),需手动加入信任。代码签名将在后续版本提供。

Give me a break 0.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 04:35
2f888b3

🍅 Give me a break v0.1.0 — MVP 正式发布(GA)

一款 macOS 菜单栏强制作息应用:在自定义工作时段内执行「工作 → 强制休息」节律,到点遮罩全部显示器,让休息真正发生,对抗久坐疲劳。

核心能力

  • 强制作息:工作窗口(每日重复、可跨午夜)内累计工作满 N 分钟(默认 50)触发强制休息 M 分钟(默认 10);离座(AFK)自动暂停计时。
  • 全屏遮罩:休息时遮罩所有显示器,Esc 二次确认方可提前结束(软强制、多屏自适应)。
  • 休息音效:自定义本地音频循环播放,或内置实时合成「粉噪音」(可靠、零依赖);可叠加联动 QQ 音乐。
  • 日历门控:Google 日历会议计为工作,休息顺延至会议结束(复用系统登录态,无 OAuth)。
  • 工作日志:休息前 30 秒写下「刚完成 + 下一步」完成认知闭合;永不阻塞,生成今日 / 本周 / 本月报告,支持补录。
  • 图形化设置:通用 / 作息 / 休息音效 / 工作日志四页签,即时保存、引擎热更新,窗口按内容自适应。

纯 FSM 内核正交分解、54 单测全绿;Windows(.NET 8 WPF)平行移植同步发布。功能完备的 MVP 正式基线。


下载与安装

macOSgive-me-a-break-0.1.0-macos.zip):解压后将 GiveMeABreak.app 拖入 /Applications,首次启动在「系统设置 → 隐私与安全性」授予辅助功能与完全日历访问。

⚠️ ad-hoc 签名(未签名 / 未公证),首次打开被 Gatekeeper 拦截,执行一次去隔离放行(macOS 15 起「右键 → 打开」旁路已失效):

xattr -dr com.apple.quarantine /Applications/GiveMeABreak.app

Windows 10/11 x64give-me-a-break-0.1.0-win64.zip):解压后运行 GiveMeABreakShell.exe,内置 .NET 8 运行时,无需额外依赖

⚠️ 未签名:SmartScreen 提示点「更多信息 → 仍要运行」;低级键盘钩子 + 媒体键可能被杀软误报,需手动放行。代码签名 / 公证与 Windows 真机验收将在后续版本补齐。