Releases: HarryHello/ba-click-mac
Releases · HarryHello/ba-click-mac
Release list
BA Click 0.3.3
- 2026-09-17
Added / 新增
- Force Topmost (experimental) / 强制置顶(实验性): new panel toggle, inspired by Lakr233/SkyLightWindow (private SkyLight framework: a dedicated space pinned at the screen-lock level, with the overlay windows moved into it). When on, the effects render above EVERYTHING — Dock, menu bar, context menus, third-party launchers, even the lock screen. Toggling off rebuilds the overlay windows to return to normal levels; displays hot-plugged while on are re-delegated automatically. All private calls are guarded — if the framework ever changes, the overlay simply keeps its normal level. Off by default.
新增面板开关,参考 Lakr233/SkyLightWindow 的思路(私有 SkyLight 框架:创建"锁屏级"专属 Space 并将覆盖层窗口移入)。开启后特效显示在一切元素之上——Dock、菜单栏、右键菜单、第三方启动器,甚至锁屏。关闭时重建覆盖层窗口回到常规层级;热插拔新窗口自动补委托。私有 API 均有守卫。默认关闭。
Fixed / 修复
- Reset to Defaults keeps the click counter / 「恢复默认设置」保留点击统计: the counter is statistics, not a setting — resetting parameters no longer wipes it.
计数是统计资料而非设置参数,重置参数不再清零。
Performance / 优化
- DMG installer icon positions fine-tuned; the background generator is now a committed script (
tools/make-dmg-background.sh).
DMG 安装窗口图标位置微调,背景生成脚本入库。
BA Click 0.3.2
- 2026-09-12
Added / 新增
- Japanese localization + language picker / 日文本地化 + 语言选择器: full 日本語 UI (39 strings, completeness enforced by unit tests) and a language selector at the top of the panel (自动 / 中文 / English / 日本語), persisted in settings.json; menu bar labels follow.
完整日本語界面(39 个词条,完整性由单元测试保证)与面板顶部语言选择器,设置持久化,菜单栏标签同步切换。 - Click statistics / 点击统计: panel toggle (off by default) that counts fired click effects (all buttons), persisted; the total shows under the toggle.
面板开关(默认关)统计点击特效触发次数并持久化(含左/右/中键),计数显示在开关下方。 - Reset to Defaults / 恢复默认设置: panel button (with confirmation) restores every effect setting to the tuned defaults; launch-at-login is untouched.
面板按钮(带确认)把全部特效参数恢复为调校默认值;开机自启不受影响。 - Quick toggle in the menu bar / 菜单栏快捷开关: the status menu gains 启用/停用特效, flipping the master switch without opening the panel.
菜单栏图标菜单新增「启用/停用特效」,不打开面板即可一键切换。 - Polished DMG installer / DMG 安装窗口排版: 640×360 window, 128px icons, app + Applications centered over a room-night background image (compressed to 200KB in-repo).
640×360 窗口、128px 大图标、应用与 Applications 居中并排,room_night 背景图(已压缩入库)。
Performance / 优化
- Glow-only degradation / 降级只作用于辉光: under GPU pressure only the bloom/scene textures drop (0.5x → 0.25x native — a pure blur either way); the trail/disk/arc/shard content ALWAYS renders at full drawable resolution, so the effect itself never pixelates.
GPU 压力下仅辉光纹理降分辨率(0.5× → 0.25×,均为纯模糊),尾迹/圆盘/弧光/碎片永远保持原生分辨率渲染,不再出现锯齿。
Fixed / 修复
- Disabling effects left the last frame on screen / 停用特效残留最后一帧: the empty-display optimization also skipped the erase frame; the last painted frame now gets a final blank repaint.
停用特效后残影不再残留(空屏跳过不再吞掉擦除帧)。 - Zero brightness painted the ring BLACK / 亮度 0 时光环变黑: the visible pass now clamps brightness at 1.0 — below 1 only the glow fades (plain blue ring, glow off at 0); the HDR pass still scales to zero.
可见路径亮度下限钳制为 1——0~1 只淡出发光(环保持普通蓝色),HDR/辉光照常归零。 - Language picker lagged one selection behind / 语言切换慢一拍: the L10n override synced after SwiftUI re-rendered; it now switches synchronously with the settings write.
语言设置现在随写入同步生效,面板不再显示上一次选择的语言。
BA Click 0.3.1
- 2026-09-11
A performance-focused release: multi-display effects under GPU contention from other apps no longer freeze, stall periodically, or fall behind the cursor.
Fixed / 修复
- Cross-display shard storm / 跨屏碎片风暴: returning to a display spawned up to maxCount shards along a garbage line from the stale cursor anchor, re-triggered on every crossing. Anchors older than the trail lifetime reset silently.
回到某块屏幕时首次采样沿用离开前的旧锚点,一次性沿错误位置铺满碎片,每次跨屏都触发。现在过期锚点静默重置。 - Stall watchdog misfire / 看门狗误判: the watchdog treated intentionally-skipped displays (empty/idle) as stalled and force-redrew ALL overlays every 0.5s — a periodic freeze source under GPU contention. It now only reacts to a genuinely silent tick loop.
旧看门狗把故意跳过的屏幕当停滞,每 0.5 秒强制重画全部屏幕。现在只响应真正沉默的 tick 循环。
Performance / 优化
- Sampling never blocks / 采样永不被绘制阻塞: starting a frame while the previous one is still on the GPU could block the main thread up to ~1s in
currentDrawable(drawable pool exhaustion) — the trail head froze and jumped. Frames whose predecessor hasn't finished are now skipped instead: contention costs dropped frames, never a frozen trail.
上一帧未完成时继续提交新帧可能在currentDrawable上阻塞主线程约 1 秒(可绘制缓冲耗尽),轨迹头部因此冻结再跳变。现在改为跳帧:争抢的代价是丢帧,而不是轨迹冻结。 - Adaptive draw pacing (DrawPacer) / 自适应隔帧绘制: when measured ticks run sustainedly over budget, every second DRAW is skipped while sampling stays full-rate — the trail head keeps hugging the cursor. Full rate restores automatically.
tick 实测持续超预算时自动隔帧绘制(采样保持全频,轨迹头部持续贴合光标),负载恢复后自动回全速。 - Adaptive render scale / 压力下渲染分辨率自适应: sustained visible staleness (>100ms) drops overlays to 0.5× resolution (pixels ×1/4, glow content upscales invisibly); native resolution returns once staleness decays. Correctly handles Retina backing scale and enforces the target every tick (no display gets stuck at a stale scale).
画面陈旧度持续超 100ms 时覆盖层降为 0.5× 分辨率渲染(像素 ×1/4,辉光内容拉伸无感),陈旧度消退即恢复原生;正确处理 Retina backing,且每 tick 校验,不会有屏幕卡在错误分辨率。 - Diagnostic HUD / 诊断 HUD (
BA_SHOW_HUD=1): real tick/draw rates, skip breakdown (pacer / in-flight / empty), degraded flag, and drawAge — the visible-frame staleness metric.
新增真实 tick/绘制速率、三类跳过计数、降级标志与 drawAge(画面陈旧度)。
BA Click 0.3.0
- 2026-09-10
Added / 新增
- Multi-monitor support / 多显示器支持 (#2, original work by @cjhgit, ported onto the current codebase): one transparent overlay per attached display; clicks and trail points route to the overlay owning the display under the cursor — effects finally work on every screen, not just the main one. Displays added/removed or re-arranged rebuild/resize overlays automatically; fullscreen detection now covers any attached display. Fixes the long-standing wrong-position-on-secondary-display bug.
每个物理显示器一个透明覆盖层,点击与尾迹按光标所在显示器路由——特效不再只出现在主屏幕;显示器热插拔/布局变化自动重建,全屏检测按多屏判断。修复了副屏特效位置错误的旧问题。
Performance / 优化
- Empty displays skip their whole render pipeline: a tick used to draw every overlay (full scene + bloom pyramid); now only overlays with active particles draw. Roughly halves per-tick GPU cost on dual-display setups with no visible difference.
渲染帧只绘制有活动粒子的显示器——空屏整条管线跳过,双屏日常使用 GPU 开销约减半,视觉零差异。
Fixed / 修复
- The up-to-date label now shows the running version: a beta/dev build (newer than the release feed) used to display the feed's older release number.
「已是最新版本」现在显示当前运行版本号——测试版此前会显示成线上发布版号。
BA Click 0.2.2
- 2026-09-09
Fixed / 修复
- Launch-at-login toggle spawned a second instance / 开关"开机自启"会当场拉起第二个实例: the old LaunchAgent path used
launchctl bootstrap, which runs aRunAtLoadjob immediately — a second BA Click appeared the moment you toggled on, andbootoutkilled it again on toggle-off. Bundled apps now register via SMAppService: the entry lives in System Settings → General → Login Items, stays in sync with the system toggle, and registering never starts the app on the spot. The raw-binary (run.sh) fallback registers its LaunchAgent dormant (disable → bootstrap → enable). Legacy (≤0.2.1) plist registrations migrate automatically on the next toggle.
旧实现的launchctl bootstrap会立即运行 RunAtLoad 任务。捆绑版改用 SMAppService(注册进 系统设置 → 通用 → 登录项,绝不当场启动);裸二进制回退路径改为休眠注册;旧版 plist 注册在下次切换开关时自动迁移。 - Single-instance guard / 新增单实例保护: a
flocklock (~/.ba-click-mac.lock) makes any double launch exit immediately — no more stacked overlays, double-drawn effects or racing settings writes.
flock锁保证双开时第二个实例立即退出,不再出现两层特效叠加、设置写入竞争。 - Pre-release version suffix broke the update check / 版本比较支持预发布后缀:
0.2.2-beta1parsed as0.2(the-beta1segment was dropped) so beta builds misreported an update. Version compare is now semver-ish:0.2.2-beta1 > 0.2.1, but0.2.2-beta1 < 0.2.2.
此前-beta1后缀段被整体丢弃,测试版会被误报有更新。现按 semver 语义比较:高于更早正式版、低于对应正式版。
BA Click 0.2.1
- 2026-09-09
Added / 新增
- Only When Plugged In / 仅接通电源时启用: new toggle (off by default). When on, all effects pause on battery and resume the instant AC power returns (IOKit power-source notification). Desktops without a battery count as always plugged in — no side effect there.
新开关(默认关)。开启后使用电池时自动暂停全部特效,插回电源立即恢复(IOKit 电源源通知);没有电池的台式机视为始终接通电源,无副作用。 - Automatic update checks / 自动检测更新: new toggle (on by default). Checks once ~3s after launch and each time the panel opens — throttled to once per 60s and silent on failure. The manual 检查更新 button always performs a real check.
新开关(默认开)。启动约 3 秒后和每次打开面板时各检查一次;60 秒节流、失败静默。手动点「检查更新」始终真实检查。 - Version always visible / 版本号常显: the panel status line shows the running version (e.g.
v0.2.1) when idle, thenv0.2.1 已是最新版本/发现新版本 vX.Y.Zafter a check.
更新状态栏空闲时常显当前版本号(如v0.2.1),检查后显示v0.2.1 已是最新版本/发现新版本 vX.Y.Z。
Changed / 变更
- Self-update hardening: the update helper now verifies the downloaded app against the running app's designated requirement (identifier + pinned certificate hash) and refuses to replace on mismatch; the swap is now atomic (stage copy → rename) with rollback, so a failed install can't leave no app at all.
自更新加固:替换前校验下载包签名与当前应用同一证书(设计需求匹配,篡改包拒绝安装);替换改为原子交换 + 失败回滚,不会再出现复制失败应用消失。 - Removed the dead macOS 13 Timer render-loop fallback (deployment target is macOS 14).
删除 macOS 13 的 Timer 渲染回退死代码(部署目标已是 macOS 14)。
Note / 说明
- The x64 (Intel) DMG requires Rosetta 2 on Apple Silicon — macOS 27 is the last major release to support Intel apps; from macOS 28 on, use the arm64 build.
x64(Intel)DMG 在 Apple Silicon 上依赖 Rosetta 2:macOS 27 是最后支持 Intel 应用的大版本,macOS 28 起请使用 arm64 版本。
BA Click 0.2.0
- 2026-08-22
Added / 新增
- Right/middle-click effects: right-click (button 2) and middle-click (button 3) now trigger the click effect too; the panel gains independent toggles. Trail also follows right/middle drags.
右键 & 中键点击效果:右键、中键同样触发点击特效,面板可独立开关;按住右/中键拖动也会出现尾迹。 - Update check + self-update: panel's 检查更新 queries GitHub Releases; one-click auto-update (download matching-arch DMG → mount → replace → relaunch), falls back to the Releases page when auto-update isn't possible.
检查更新 + 自动更新:查询 GitHub 最新版本,一键自动更新(下载 DMG → 挂载 → 替换 → 自动重启);无法自动更新时跳转 Releases 页面手动下载。 - GitHub repo button next to the update check.
「GitHub 仓库」按钮与「检查更新」同一行。 - GitHub proxy fallback for the update check and DMG download (gh-proxy.org → gh-proxy.com → ghproxy.net → ghfast.top) when the direct connection fails.
GitHub 代理回退:直连失败时按序走代理完成检查更新与 DMG 下载。
Fixed / 修复
run.shnow rebuilds when sources change (was running a stale binary).
run.sh源码变更后会自动重新构建(此前运行旧二进制)。
Engineering / 工程
- Fixed
build.sh --releasecrashing on an empty signing-args array under bash 3.2set -u.
修复build.sh --release空签名参数数组在 bash 3.2set -u下的崩溃,发布管线恢复可用。
BA Click 0.1.1
- 2026-08-20
Changed / 变更
- New app icon: authored in the modern Icon Composer (
icons/icon.icon, macOS 26+ format) — BA triangle finders + click-effect arcs on a glass layer. Full-bleed square, macOS applies its own squircle mask. Regenerated viatools/build-icon.sh(uses the bundledictoolCLI).
Fixed / 修复
- Unit tests are now hermetic:
test.shruns with an isolatedHOMEsoFXSettings.load()can't pick up the user's real~/.ba-click-mac-settings.jsonand break the "invalid JSON falls back to defaults" test.
Engineering / 工程
tools/build-icon.shadded; README documents the Icon Composer workflow.
BA Click 0.1.0
- 2026-08-20
Initial release of the native Swift + Metal build.
核心功能 / Core
- 1:1 复刻原版特效:点击圆环 + 三角粒子 + 光标尾迹,使用原版 BA 纹理与曲线(Metal 渲染)。
- 全屏 / 桌面双场景覆盖:单个持久 NSPanel(
fullScreenAuxiliary),自动跟随进入全屏 Space —— QQ、Chrome B站 全屏下特效依然在最上层。 - 无 Dock 图标(
.accessory),菜单栏常驻图标,点击弹出菜单:打开管理面板 / 退出。 - 原生 Liquid Glass 管理面板(macOS 26+ 自动使用
NSGlassEffectView,旧系统回退NSVisualEffectView),界面语言自动跟随系统(中文 / English)。 - 开机自启(LaunchAgent),设置本地持久化(
settings.json)。
管理面板设置项 / Settings
| 设置 | 说明 |
|---|---|
| 效果开关 | 一键开关全部特效 |
| 开机自启 | 登录时自动启动 |
| 始终显示尾迹 | 关 = 仅左键拖拽时显示尾迹 |
| 尾迹粗细 / 尾迹辉光亮度 | 尾迹外观 |
| 点击效果大小 / 点击效果亮度 | 统一圆盘 / 圆环 / 碎片大小与亮度 |
| 点击圆盘不透明度 / 三角粒子不透明度 | 分项透明度 |
| 效果刷新率 | 24–240 fps(vsync 对齐) |
渲染 / Rendering
- CADisplayLink vsync 渲染循环(macOS 14+,13 回退 Timer),逐帧采样鼠标位置 —— 尾迹平滑连续、无折线、无卡顿。
- 真实 bloom(半分辨率
rgba16Float金字塔 + 高斯扩散),HDR 发光尾迹。 - 空闲自动停止渲染(无特效时零 GPU 占用)。
- 看门狗自动重建渲染循环 —— 切换 Space 后特效不再"假死"。
修复 / Fixes
- 显示器分辨率/排列变化后特效坐标漂移 →
ScreenGeometry统一坐标并随显示变化刷新。 - 面板交互式玻璃导致的整机卡顿 → 关闭
effectIsInteractive。 - 菜单栏"打开管理面板"文案不再因关闭面板而残留为"关闭管理面板"。
- 全屏开关关闭时彻底停止全屏背后的渲染(省电)。
工程 / Engineering
- 单一构建入口
build.sh(二进制 /.app/--release签名 DMG),删除废弃的Package.swift。 - 87 项自动化测试(特效数据、粒子系统、设置持久化、本地化、设置存储)。
- 新增设置项的 6 步 runbook 写入 README。
- 双架构发布:
BA-Click-0.1.0-arm64.dmg(Apple Silicon)+BA-Click-0.1.0-x64.dmg(Intel)。- 使用自签名证书
BA Click Mac Signing签名。 ⚠️ 自签名证书无法公证(notarization),首次启动会出现"未受信任的开发者"提示:右键 → 打开即可运行。
- 使用自签名证书