Skip to content

Releases: gxlself/bangs

Bangs v0.3.1

Choose a tag to compare

@gxlself gxlself released this 03 Oct 13:32

Bangs 上手表了:抬腕看一眼 Mac 上在放什么、Claude / Codex 忙完没有,顺手切歌、记一条待办。

改了什么

Apple Watch —— 托盘菜单里多了「Apple Watch」子菜单。打开「允许手表连接」,下面会显示这台电脑的地址和一个 6 位配对码,在手表上的 Bangs 里填上就配好了,以后不用再填。手表上有四页:

  • 播放:封面、正在唱的那句歌词(有翻译时带翻译)、进度,上一首 / 播放暂停 / 下一首直接控制 Mac 上的播放器;
  • 会话:Claude Code 和 Codex 会话在跑、在等你还是空闲,会话停下来时手表轻震一下并提示;
  • 待办:刘海里还没做完的待办,点一下勾掉,也可以听写或手写加一条;
  • 上岛:其他程序挂到刘海上的行。

手表通过局域网直接连 Mac,不需要账号或服务器,手表拿不到任何文件路径、剪贴板或链接。开关默认关闭,关掉端口就关了;配对码用一次就换,连续输错会越等越久;「忘掉已配对的手表」一键解除所有配对。局域网里走的是明文 HTTP,不信任的网络里请把开关关掉。

手表 App 和 iPhone 版 Bangs 是同一个 App(App Store 审核中),装上 iPhone 版就有手表端,手表自己就能连 Mac,不经过 iPhone。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


Bangs comes to your wrist: see what's playing on the Mac and whether Claude or Codex is done, skip a track or jot down a to-do without reaching for the computer.

What's new

Apple Watch — The menu bar menu has a new "Apple Watch" submenu. Turn on "Allow the watch to connect" and it shows this computer's address and a six-digit pairing code; enter both in Bangs on the watch and you're paired for good. The watch has four pages:

  • Now Playing: the artwork, the lyric line being sung (with its translation when there is one) and the progress, with previous / play-pause / next controlling the player on the Mac;
  • Sessions: whether each Claude Code and Codex session is running, waiting for you or idle, with a tap on the wrist when one stops;
  • To-do: the open to-dos from the notch — tap one to tick it off, or add one by dictation or Scribble;
  • Board: the rows other programs dock on the notch.

The watch talks to the Mac directly over the local network, with no account and no server, and never sees a file path, the clipboard or a link. The switch is off by default and turning it off closes the port; a pairing code works once, wrong guesses wait longer and longer, and "Forget paired watches" unpairs them all. Traffic on the local network is plain HTTP, so keep the switch off on networks you don't trust.

The watch app comes with Bangs for iPhone (in App Store review): install the iPhone app and the watch app comes along, then connects to the Mac on its own, without going through the phone.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.3.0

Choose a tag to compare

@gxlself gxlself released this 03 Oct 06:25

Mac 上的 Bangs 可以和 iPhone、iPad 同步了:待办双向同步,开发会话、剪贴板和暂存架都能在手机上看。

改了什么

与 iPhone 同步(iCloud) —— macOS 托盘菜单里多了一个开关「与 iPhone 同步(iCloud)」,默认关闭。打开后,待办、Claude Code / Codex 会话、最近 24 条剪贴板和暂存架通过你自己的 iCloud 同步到 iPhone / iPad 上的 Bangs(App Store 版正在审核)。数据只存在你自己的 iCloud 私有数据库里,待办、剪贴板文字和图片端到端加密,没有账号也没有服务器。下面一行显示同步状态,「立即同步」可以马上拉一次。

会话在等你时手机会提醒 —— Mac 上的 Claude Code 或 Codex 会话停下来问你问题时,iPhone 会弹「Claude 在等你」,点开直接进「代码」页;在 Mac 上回答之后通知自动消失。Mac 睡着或退出了 Bangs,手机上会显示它离线。

剪贴板图片压缩后再同步 —— 照 Paste 自己的做法,200 KB 以上的截图转成 HEIC 再上传,通常只剩原来的四分之一,字仍然清楚;长截图保留可读的宽度。尽量少占你的 iCloud 空间。

待办可以勾选了 —— 点一下打勾划掉,排到下面,可以再勾回来;删除是鼠标移上去点右边的 ×,字会散开飘走。「清除已完成」要连点两下才清,免得误删。

Windows 版没有 iCloud,除了待办的勾选以外和以前一样。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


Bangs on the Mac now syncs with iPhone and iPad: to-dos both ways, and your coding sessions, clipboard and shelf on your phone.

What's new

Sync with iPhone (iCloud) — The macOS menu bar menu has a new switch, "Sync with iPhone (iCloud)", off by default. Turn it on and your to-dos, Claude Code / Codex sessions, the latest 24 clipboard entries and the shelf sync through your own iCloud to Bangs for iPhone and iPad (the App Store version is in review). Everything stays in your private iCloud database; to-dos, clipboard text and pictures are end-to-end encrypted, with no account and no server. The line below the switch shows how sync is doing, and "Sync now" pulls right away.

Your phone tells you when a session is waiting — When a Claude Code or Codex session on the Mac stops to ask you something, the iPhone shows "Claude is waiting for you"; tap it to land on the Code tab. Once you answer on the Mac the notification goes away. If the Mac sleeps or Bangs quits, the phone shows it as offline.

Clipboard pictures are compressed before they sync — Like Paste does for its own history, screenshots over 200 KB are re-encoded to HEIC before upload, usually a quarter of their size with the text still sharp, and long screenshots keep a readable width. Your iCloud storage is spared.

Tick off to-dos — Click a to-do to strike it through and move it down; click again to bring it back. To delete one, hover it and click the × on the right, and the words come apart and blow away. "Clear done" now needs two clicks, so it can't happen by accident.

The Windows version has no iCloud; apart from ticking off to-dos it works as before.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.6

Choose a tag to compare

@gxlself gxlself released this 23 Sep 14:08

Windows 上网易云音乐的歌词在切到别的应用后也能跟上。

改了什么

网易云在后台时,歌词也跟得上 —— 网易云的 Windows 客户端不报播放进度,Bangs 靠自己计时来显示歌词。以前只有网易云是系统当前的媒体来源时才计时,如果这时浏览器在放视频,你在网易云里暂停或者切歌,Bangs 看不到,回到网易云后歌词就对不上。现在不管当前是谁在播放,Bangs 都会同时跟着网易云的状态走。网易云退出后计时清零,重新打开时恢复的那首先不显示歌词,从下一首开始正常。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


On Windows, NetEase Cloud Music's lyrics stay in time even after another app takes over.

What's new

NetEase lyrics keep up while it's in the background — NetEase's Windows app doesn't report how far into a song it is, so Bangs keeps the time itself to show lyrics. It used to keep time only while NetEase was the system's current media source: if a browser was playing a video and you paused or skipped in NetEase, Bangs missed it and the lyrics were out of step when you came back. Bangs now follows NetEase whichever app is currently playing. When NetEase quits the clock starts over, so the song it restores when it opens shows no lyrics and the next one is in time.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.5

Choose a tag to compare

@gxlself gxlself released this 23 Sep 12:12

修正 Windows 上网易云音乐一直不显示歌词的问题。

改了什么

Windows 上的网易云音乐有歌词了 —— 网易云的 Windows 客户端只告诉系统「在放哪首、是否在播放」,从不报播放进度,所以 Bangs 找到了歌词也不知道该显示哪一句。现在 Bangs 自己计时:看到网易云切到新的一首时从头开始算,暂停时停表,刘海和音乐面板里的歌词跟着走,逐字高亮和翻译也都正常。

  • 只有 Bangs 亲眼看到开头的歌才会显示歌词。Bangs 启动时已经放到一半的歌、网易云打开时恢复的上次那首,Bangs 不知道放到了哪里,这首先不显示,从下一首开始正常。
  • 在网易云里拖进度条,Bangs 看不到,这首的歌词会对不上,下一首恢复。
  • 其他会报告播放进度的播放器(QQ 音乐、Spotify、浏览器等)不受影响。

查歌词不再走系统代理 —— 以前代理软件(比如 Clash)退出后,如果环境变量 http_proxy / https_proxy 还留着,Bangs 查歌词的请求会发到一个已经关掉的端口,结果每首歌都显示「未找到歌词」。现在歌词直接连 QQ 音乐和网易云,不受代理设置影响。Spotify 和检查更新仍然按代理设置走。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


Fixes NetEase Cloud Music on Windows never showing lyrics.

What's new

Lyrics for NetEase Cloud Music on Windows — NetEase's Windows app tells the system what is playing and whether it is playing, but never how far in it is, so Bangs found the lyrics and still could not tell which line to show. Bangs now keeps the time itself: it starts from the top when NetEase moves on to a new track and stops while it is paused, and the lyrics in the notch and the music panel follow along, word highlighting and translations included.

  • Lyrics show only for songs Bangs saw start. A song already halfway through when Bangs starts, or the one NetEase restores when it opens, could be anywhere, so it shows none and the next song is in time again.
  • Bangs cannot see a seek inside NetEase, so dragging its progress bar puts that song's lyrics out of step until the next one.
  • Players that do report their position (QQ Music, Spotify, browsers and others) are unaffected.

Lyrics no longer go through the system proxy — when a proxy app such as Clash had quit but http_proxy / https_proxy were still set, Bangs sent its lyrics requests to a port nobody was listening on, and every song showed "No lyrics found". Lyrics now connect to QQ Music and NetEase directly. Spotify and the update check still follow the proxy settings.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.4

Choose a tag to compare

@gxlself gxlself released this 22 Sep 09:53

面板顶栏的标签页现在可以拖动排序,按你自己的习惯摆。

改了什么

标签页可以拖 —— 按住一个标签左右拖,它会跟着指针走,经过的标签自动让位,松手后滑进新位置。

  • 点一下还是切换,按住移动几个像素才算拖;拖动不会切换正在看的面板。
  • 顺序会记住,写在设置里,重启后不变。
  • 时有时无的标签保留原来的位置:「上岛」只在有东西停靠时出现,出现时还在你排给它的位置;以后版本新加的标签排在你的顺序之后。
  • 拖动中面板不会收起,指针移出刘海也一样;在外面松手,就落在当时显示的位置。
  • macOS 上拖动时光标变成抓手。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


Tabs in the panel's top bar can now be dragged into whatever order suits you.

What's new

Drag to reorder tabs — press a tab and drag it sideways: it follows the pointer, the tabs it passes step aside, and when you let go it slides into its new place.

  • A click still switches tabs; it only becomes a drag once the pointer moves a few pixels, and dragging doesn't change which panel you're looking at.
  • The order is remembered in your settings and survives a restart.
  • Tabs that come and go keep their place: Board only appears when something has docked, and when it does it's where you put it. Tabs added in future versions go after your order.
  • The panel stays open while you drag, even if the pointer leaves the notch; let go out there and the tab lands where it was shown.
  • On macOS the cursor turns into a grabbing hand while you drag.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.3

Choose a tag to compare

@gxlself gxlself released this 21 Sep 01:38

歌词换了引擎:两个曲库同时查,逐字时间轴和中文翻译现在能同时拿到。

改了什么

歌词 —— 这一版的骨架是 @RayZh0ng 的 #2:QQ 音乐和网易云并发查询,候选按标题、歌手、专辑、时长、版本标签打分,翻译用验证过的全局 offset 对齐到另一个源的逐字歌词上,缓存按结果好坏分级过期,切歌会作废在途的查询,面板上能看到歌词来自哪个源、是否逐字、是否来自缓存,还能手动重查一次。

在这之上按本地曲库实测补了匹配:

  • 歌手名对不上不再一票否决。Apple Music 把赵雷给成 “A-Yue Chang”、王菲给成 “Faye Wong”、太妍给成 “TAEYEON”,曲库里一个字都不重合;现在时长精确到 3 秒以内可以替代歌手匹配。版本标签冲突(Live / Remix)仍然否决。
  • 歌名整个被翻译也能认:《西湖》给成 “West Lake”、《爸爸妈妈》给成 “Mama & Papa” 时,采信搜索自己排第一、且时长吻合的那条。
  • 候选先按可信度排序再按分数。靠时长和排名认出来的结果分数很低(《西湖》只有 15 分),之前会被两首无关的同名英文歌挤掉。
  • 拿不准的也把词显示出来,面板上标明“不确定”,而不是什么都不显示再记住六小时。曲库里「你不知道的事 | All The Things You Never Knew」这种把原名整个包进去的命名,算同一首歌。
  • 占位符不算歌词:「此歌曲为没有填词的纯音乐」或只有作词作曲的空壳会跳过,换下一个候选。

实测七首:West Lake 33 行、小宇 45 行、Mama & Papa 61 行、當時的月亮 32 行、Beautiful People 67 行(59 行翻译)、To. X 63 行(59 行翻译)、你不知道的事 42 行。英文和韩文歌现在既有逐字时间轴又有中文翻译——以前拿翻译就得整份换源,逐字就丢了。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架、待办和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


Lyrics got a new engine: both catalogues are searched at once, and word-by-word timing and Chinese translations now arrive together.

What's new

Lyrics — the backbone of this release is #2 by @RayZh0ng: QQ Music and NetEase are queried concurrently; candidates are scored on title, artist, album, length and version tags; translations are aligned onto the other source's word-timed lyrics with a verified global offset; cached results expire sooner or later depending on how good they were; changing tracks cancels lookups still in flight; and the panel shows which source the lyrics came from, whether they're word-timed and whether they came from the cache — with a button to look them up again.

On top of that, matching was tuned against a real local library:

  • An artist name that doesn't match is no longer a veto. Apple Music hands over 赵雷 as "A-Yue Chang", 王菲 as "Faye Wong" and 太妍 as "TAEYEON" — not a single character in common with the catalogue. A length within 3 seconds can now stand in for the artist. Conflicting version tags (Live / Remix) still veto.
  • Fully translated titles are recognised too: when 《西湖》 arrives as "West Lake" or 《爸爸妈妈》 as "Mama & Papa", the search's own top result is trusted if its length matches.
  • Candidates are sorted by confidence first, then by score. A result identified by its length and ranking scores very low (《西湖》 gets only 15 points) and used to be pushed out by two unrelated English songs of the same name.
  • Uncertain matches still show their lyrics, marked as uncertain in the panel, instead of showing nothing and remembering the miss for six hours. Catalogue entries that wrap the whole original title — 「你不知道的事 | All The Things You Never Knew」 — count as the same song.
  • Placeholders are not lyrics: an instrumental's stock line ("此歌曲为没有填词的纯音乐") or an entry holding nothing but credits is skipped for the next candidate.

Tested on seven tracks: West Lake 33 lines, 小宇 45, Mama & Papa 61, 當時的月亮 32, Beautiful People 67 (59 translated), To. X 63 (59 translated), 你不知道的事 42. English and Korean songs now get both word-by-word timing and a Chinese translation — before, getting a translation meant switching sources wholesale and losing the word timing.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf, to-dos and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.2

Choose a tag to compare

@gxlself gxlself released this 20 Sep 10:35

刘海里多了一张待办清单,歌词换了整条链路:两个曲库、带翻译、能认出被翻译过的歌名。

改了什么

歌词 —— 这一版由 @RayZh0ng 的 #1 打底:QQ 音乐和网易云两个来源,按正在播放的播放器决定先问谁,失败会重试,缓存记住词是从哪儿来的,网易云的逐字 YRC 和中文翻译都读得出来,展开后原文和翻译各占一行(托盘里可以关掉翻译)。

在这之上补了匹配:

  • 按时长认录音。差 10 秒以上的判为另一个版本,翻唱和现场版不会再顶掉原唱——《小宇》曾经匹到 269 秒的翻唱,而你放的是 228 秒的张震岳。
  • 曲库把歌名翻译了也能认。Apple Music 把《西湖》给成 “West Lake”、把《爸爸妈妈》给成 “Mama & Papa”,一个字都对不上;搜索本身是认得的,所以排在前列又时长吻合的结果就按它说的算。
  • 繁体标题先折叠成简体再比对(《當時的月亮》↔《当时的月亮》),用的是系统自带的转写。
  • 罗马音歌手名(赵雷 → “Lei Zhao”)会把正主挤出结果,多加一次纯标题查询兜底,只认标题完全一致的。
  • 拿到的是纯音乐占位符或只有作词作曲时换下一个候选;没有翻译且歌词不是中文时,继续问下一个曲库,直到找到带翻译的那份。
  • 暂停时进度不再往回跳——播放器报的位置比声音停住的地方早一点,歌词会跟着闪一下。

待办 —— 面板顶栏新增「待办」:输入框里回车记一条,做完点一下,字逐个散开飘走、行随之折起,不留已完成。刚记下的那条会在收起态的刘海旁待五分钟(正在放歌时不抢歌词)。这是刘海唯一会用到键盘的地方,也只在输入框聚焦时才借。

剪贴板 —— 点图片现在是真的复制(PNG 和 TIFF 两种类型一起写),不再直接弹 Paste;文件仍交给 Paste。

托盘 —— 「显示器」子菜单里的显示器条目会成批消失、只剩「跟随主显示器」,0.1.3 就有的老毛病:菜单在后台线程被重建,而显示器名字只有主线程问得到。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


A to-do list moves into the notch, and the lyrics pipeline was rebuilt end to end: two catalogues, translations, and songs whose titles were translated are now recognised.

What's new

Lyrics — this release builds on #1 by @RayZh0ng: two sources, QQ Music and NetEase, with the player that's playing deciding which one to ask first; failed lookups are retried; the cache remembers where the lyrics came from; NetEase's word-timed YRC and its Chinese translations are both read; and the expanded panel gives the original and the translation a line each (translations can be turned off in the tray).

On top of that, matching was improved:

  • Recordings are told apart by length. Anything more than 10 seconds off counts as a different version, so covers and live takes no longer push out the original — 《小宇》 once matched a 269-second cover while you were playing Chang Chen-yue's 228-second recording.
  • Titles the catalogue translated are recognised. Apple Music gives 《西湖》 as "West Lake" and 《爸爸妈妈》 as "Mama & Papa" — not a single character in common. The search itself knows better, so a top-ranked result whose length matches is taken at its word.
  • Traditional-character titles are folded into Simplified before comparing (《當時的月亮》 ↔ 《当时的月亮》), using the system's built-in transliteration.
  • Romanised artist names (赵雷 → "Lei Zhao") push the right song out of the results, so an extra title-only search serves as a fallback, accepting exact title matches only.
  • When a result is an instrumental placeholder or nothing but credits, the next candidate is tried; when there's no translation and the lyrics aren't in Chinese, the next catalogue is asked until one with a translation turns up.
  • Progress no longer jumps back when you pause — players report a position slightly before where the sound actually stopped, and the lyrics used to flicker with it.

To-do — a new To-do tab in the panel's top bar: press Return in the field to add a line, and click it once it's done — its letters scatter and drift away as the row folds up, and nothing completed is kept. The newest line waits beside the collapsed notch for five minutes (not while music is playing, so it doesn't displace the lyrics). This is the only place the notch uses the keyboard, and only while the field is focused.

Clipboard — clicking an image now really copies it (written as both PNG and TIFF) instead of just opening Paste; files are still handed over to Paste.

Tray — the displays in the Display submenu would vanish all at once, leaving only "Follow the main display", an old bug going back to 0.1.3: the menu was being rebuilt on a background thread, and display names can only be asked for on the main thread.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.2.1

Choose a tag to compare

@gxlself gxlself released this 20 Sep 09:17

刘海里多了一张待办清单,歌词也不再整批地找不到。

改了什么

待办 — 面板顶栏多了一栏「待办」:输入框里回车记一条,做完点一下,字就逐个散开飘走、行随之折起,不留已完成。刚记下的那条会在收起态的刘海旁待五分钟(正在放歌时不抢歌词)。这是刘海唯一会用到键盘的地方,也只在输入框聚焦时才借:macOS 下面板这时才允许成为 key window,Windows 下临时摘掉 WS_EX_NOACTIVATE,按 Esc、点别处或面板收起都会立刻把焦点还回去。清单存在配置目录的 todos.json 里。

歌词找得到了 — 两类歌以前查不到词。一是播放器给的是罗马音歌手名(Apple Music 把赵雷给成 “Lei Zhao”),搜索被带偏,同专辑的其他歌反而把正主挤出了结果;二是标题是繁体(當時的月亮)而曲库里是简体(当时的月亮),字面对不上就整首被丢掉。现在候选放宽到 20 条、必要时再用纯标题查一次(只认标题完全一致),比对前用系统自带的转写折叠繁简,同分时保留接口自己的排序——合唱版和 remix 不会再顶掉原唱。

托盘里能选显示器了 — 「显示器」子菜单里的显示器条目会成批消失,只剩「跟随主显示器」:菜单在后台线程被重建(六小时一次的版本检查、显示器热插拔都会触发),而显示器名字只有主线程问得到。菜单重建改回主线程就好了,这个毛病 0.1.3 就有。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行。设置、暂存架和剪贴板历史都保留,直接装新包覆盖即可。

官网:https://gxlself.github.io/bangs/


A to-do list moves into the notch, and lyrics no longer go missing for whole groups of songs.

What's new

To-do — a new To-do tab in the panel's top bar: press Return in the field to add a line, and click it once it's done — its letters scatter and drift away as the row folds up, and nothing completed is kept. The newest line waits beside the collapsed notch for five minutes (not while music is playing, so it doesn't displace the lyrics). This is the only place the notch uses the keyboard, and only while the field is focused: on macOS that's the only time the panel may become the key window, and on Windows WS_EX_NOACTIVATE is lifted for as long — pressing Esc, clicking elsewhere or the panel collapsing hands focus straight back. The list is kept in todos.json in the config directory.

Lyrics are found now — two kinds of songs used to come up empty. One: the player gives a romanised artist name (Apple Music gives 赵雷 as "Lei Zhao"), which steers the search off course until other songs from the same album push the right one out of the results. Two: the title is in Traditional characters (當時的月亮) while the catalogue has it in Simplified (当时的月亮), and a literal mismatch threw the whole song out. Now up to 20 candidates are considered, a title-only search runs when needed (exact title matches only), Traditional and Simplified are folded together with the system's built-in transliteration before comparing, and ties keep the service's own order — duets and remixes no longer push out the original.

Pick a display from the tray again — the displays in the Display submenu would vanish all at once, leaving only "Follow the main display": the menu was being rebuilt on a background thread (by the six-hourly version check and by plugging displays in or out), and display names can only be asked for on the main thread. Rebuilding the menu on the main thread fixes it; the bug had been there since 0.1.3.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway. Settings, the shelf and clipboard history are all kept — just install the new package over the old one.

Website: https://gxlself.github.io/bangs/

Bangs v0.1.3

Choose a tag to compare

@gxlself gxlself released this 19 Sep 04:18

换了一身新图标。

改了什么

应用图标 — 刘海和发丝从深色底翻到薄荷底(app 的强调色反过来用)。Dock、Finder 列表、下载页那种 32px 的小尺寸下,比原来那块深色看得清楚得多。Windows 通知区的图标跟着一起换了;macOS 菜单栏那个单色小图标没动。

面板顶栏的图标 — 五个重画了一遍,按它们实际显示的 13px 画:音乐是律动条,暂存是文件落进托盘,代码是终端提示符,剪贴板和固定各去掉一半笔画。

功能没有任何改动。设置和暂存架里的东西都保留,直接装新包覆盖即可。

安装

macOS 的包用 Developer ID 签了名并经过 Apple 公证,下载下来双击就能开。Windows 安装包没有签名,SmartScreen 会拦一次:更多信息 → 仍要运行;装完图标在通知区,右键能看版本和设置。

官网:https://gxlself.github.io/bangs/


A new set of icons.

What's new

App icon — the notch and its fringe flip from a dark background to a mint one (the app's accent colour, turned around). At small sizes like 32px — the Dock, Finder lists, download pages — it reads far more clearly than the old dark tile. The Windows notification-area icon changed with it; the monochrome menu bar icon on macOS did not.

Panel top-bar icons — five were redrawn for the 13px they're actually shown at: Music is an equaliser, Shelf is a file dropping into a tray, Code is a terminal prompt, and Clipboard and Pin each lost half their strokes.

Nothing else changed. Settings and whatever is on the shelf are kept — just install the new package over the old one.

Install

The macOS build is signed with a Developer ID and notarized by Apple, so it opens with a double-click. The Windows installer is unsigned, so SmartScreen stops it once: More info → Run anyway; once installed, the icon sits in the notification area — right-click it for the version and settings.

Website: https://gxlself.github.io/bangs/

Bangs v0.1.2

Choose a tag to compare

@gxlself gxlself released this 19 Sep 03:13

Windows 上把文件拖到刘海终于能用了。

修了什么

Windows 文件暂存 — 拖文件到刘海没有任何反应。问题不在取路径那一步:整个拖放事件根本没进到进程里。鼠标底下那个窗口属于 WebView2 自己的进程,它拒绝外部拖放,系统也不会再往上问宿主窗口(同一份代码在 macOS 上一切正常;窗口区域裁剪、WS_EX_NOACTIVATE 都试着去掉过,没区别)。

现在刘海自己接管:拖拽经过它时,上面盖一层自己的透明窗口作为放置目标,读出文件路径再交给界面,和 macOS 走同一套暂存逻辑。这个窗口只在「按键从刘海外按下、指针进到刘海」这一刻存在,平时不存在,所以不会吃掉任何点击。

两个方向都实测过:拖进来(出现「松手放进暂存架」→「已暂存 1 个文件」→ 面板里出现文件),以及从暂存架拖出去到别的窗口。

其余同 v0.1.1。直接装新包即可,设置和暂存内容都保留。

官网:https://gxlself.github.io/bangs/


Dropping files on the notch finally works on Windows.

What's fixed

Windows file shelf — dragging a file onto the notch did nothing. The problem wasn't reading the paths: the drag-and-drop events never reached the process at all. The window under the pointer belongs to WebView2's own process, which refuses drops from outside, and the system never goes on to ask the host window (the same code works fine on macOS; taking away the window-region clipping and WS_EX_NOACTIVATE was tried, with no difference).

Now the notch catches drops itself: while a drag passes over it, it lays a transparent window of its own on top as the drop target, reads the file paths and hands them to the interface, which runs the same shelf logic as on macOS. That window exists only while a press that began outside the notch has the pointer over it and never otherwise, so it can't swallow any clicks.

Both directions were tested for real: dragging in ("Drop to keep it here" → "Kept 1 file" → the file shows up in the panel), and dragging from the shelf out to another window.

Everything else is as in v0.1.1. Just install the new package; settings and shelved files are kept.

Website: https://gxlself.github.io/bangs/