Repository navigation
Releases: ref42/CAPS
Release list
v2.0.4
CAPS v2.0.4
This maintenance release updates Tokio to 1.53.2 and cleans up Clippy findings without changing the user-facing behavior of CAPS.
Changed
- Updated the Tokio dependency to 1.53.2.
- Cleared all Clippy warnings across the application and test targets.
Contributor
CAPS v2.0.4
本次维护版本将 Tokio 更新至 1.53.2,并清理了 Clippy 检查发现的问题,不改变 CAPS 的用户可见行为。
调整
- 将 Tokio 依赖更新至 1.53.2。
- 清理应用与测试目标中的全部 Clippy 警告。
贡献者
v2.0.3
CAPS v2.0.3
The capsule can now rest flush against the screen edge, returns to its resting position after the panel closes, and keeps Quiet mode when tracks change.
Fixed
- The visible capsule can be dragged right up to the screen edge. Its transparent margins no longer leave a gap, and it stays within the display while dragging between monitors or resizing.
- Dragging folds the panel. After dropping the capsule, the panel stays closed until the pointer leaves and returns.
- Opening the panel near the bottom of the screen moves the capsule up to keep the panel visible. Closing it restores the capsule to where you placed it.
- Hovering over an idle capsule no longer widens it or leaves it displaced from the screen edge. The wider header is used when music is loaded.
- Quiet mode survives track changes, including advancing to the next song. Starting playback from Silent mode still returns to Normal mode.
Contributor
CAPS v2.0.3
胶囊现在可以紧贴屏幕边缘停放,面板收起后会回到原来的位置,切歌时也会保留 Quiet 模式。
修复
- 可见胶囊可以直接拖到屏幕边缘,透明边距不再留下空隙;跨显示器拖动或调整大小时,胶囊仍会保持在显示范围内。
- 开始拖动时会收起面板。松开鼠标后,面板会保持关闭,直到指针移出胶囊后再次进入。
- 在屏幕底部附近展开面板时,胶囊会上移以保证面板可见;面板收起后,胶囊会回到你放置的位置。
- 鼠标悬停不再让待机胶囊变宽,也不再导致它偏离屏幕边缘;加载音乐后才会使用较宽的胶囊头部。
- 切换曲目(包括自动播放下一首)时会保留 Quiet 模式。从 Silent 模式开始播放时,仍会恢复为 Normal 模式。
贡献者
v2.0.2
CAPS v2.0.2
The idle capsule has been redrawn — icons instead of labels, figures that hold their place — and it now reads whatever is behind it, so its text stays legible at any opacity. It also stops going off the screen, and stops stuttering when the panel opens.
Changed
- The idle row is four icon-led readings — processor, memory, download, upload — followed by the level meter. The text labels are gone: each icon carries the meaning visually, with the name and figure kept as its accessible label, which is what
icons.md › Best practicesasks of a custom interface icon. - Figures sit in fixed-width cells, flush against their own icon, and only ever grow rightwards. A number that changes length —
0 B/sbecoming1.02 MB/s— can no longer push the icons beside it around. Tabular figures keep the digits themselves still as well. - The five groups are laid out with equal air between them rather than as equal columns, which is what made the two percentages look stranded and the two rates cramped, and it stays even as the numbers change.
- The capsule samples the desktop behind it — one
BitBlt, a 12×8 grid over its own footprint — and picks its palette from that: white text over a dark backdrop, near-black over a light one, with the accent and the tints following. The larger area wins, and changing sides takes a clear majority on two consecutive samples, so sitting across a white document and a dark editor cannot make it flicker. At high opacity the capsule's own surface is what decides, under the same rule. - The opacity control reaches zero again, and stays readable there: the text no longer borrows its contrast from a surface the user is free to fade away. The component theme follows the same decision, so the search field's placeholder and the scrollbars are legible at any opacity too.
- The palette's grey half-tones are gone; hierarchy comes from size and weight instead, because a half-tone is the first thing a variable backdrop swallows.
- "Island" is gone: CAPS is the capsule. The settings row reads Capsule size / 胶囊大小, and state files written before the rename still load.
- Type now follows the size control with a 10 pt floor, so nothing renders below the desktop minimum at the smallest capsule.
Fixed
- The capsule could be dragged off the screen, where it could not be grabbed again. It now stays on the display it is on, and keeps doing so as it grows: the size control, the hover expansion and the panel opening all leave it in view.
- Opening and folding the panel stuttered. The backdrop sampler read the screen a point at a time, 108 times per sample, and each read synchronised with the compositor. It is one
BitBltnow, out of a buffer, and it never runs while the capsule is animating. - Transfer rates are capped at nine characters, so a figure can no longer grow past the cell reserved for it and land on the next icon.
- The trailing check marks on the two font rows are gone.
Contributor
CAPS v2.0.2
待机胶囊重画了:标签换成图标,数字不再推挤图标;它还会读取身后的桌面来决定文字颜色,任何透明度下都看得清。同时不再跑到屏幕外,展开收起也不再卡顿。
调整
- 待机行改成图标加数值:处理器、内存、下载、上传,最后是电平表。文字标签取消,含义由图标承担,名称与数值保留为无障碍标签——
icons.md › Best practices对自定义界面图标的要求正是如此。 - 数值放在固定宽度的格子里,紧贴自己的图标,只会向右生长。数字变长(
0 B/s变成1.02 MB/s)不会再推动旁边的图标;等宽数字让位数本身也不跳动。 - 五组之间改为等间距,而不是等宽列——这正是两个百分比显得空荡、两个速率挤在一起的原因,而且数字变化时依然均匀。
- 胶囊会采样身后的桌面(一次
BitBlt,覆盖自身范围的 12×8 网格),据此选择配色:深色背景用白字,浅色背景用近黑字,强调色与各项浅色随之切换。面积大的一方胜出;换边需要连续两次采样都占明显多数,因此同时横跨白色文档和深色编辑器也不会闪烁。不透明度较高时,由胶囊自身的表面决定,规则一致。 - 透明度可以重新调到 0,并且在 0 时依然可读:文字不再依赖用户随时可能淡掉的表面来获得对比度。组件主题会跟随同一判断,输入框占位符与滚动条在任何透明度下都清晰。
- 去掉配色中的灰色中间调;层级改由字号与字重承担——渐变的底色最先吞掉的正是中间调。
- 不再叫 "island":CAPS 就是 capsule。设置项改为 胶囊大小 / Capsule size,改名前的存档文件仍可正常读取。
- 字号跟随尺寸缩放,并保留 10 pt 下限,胶囊缩到最小时也不会低于桌面最小字号。
修复
- 胶囊可能被拖出屏幕,之后再也抓不回来。现在会始终留在所在显示器内,变大时同样如此:调整大小、悬停展开、面板弹出都不会越界。
- 展开与收起面板会卡顿:背景采样此前逐点读取屏幕,每次采样 108 次,而每次读取都要和合成器同步。现在改为一次
BitBlt从缓冲区取样,并且动画期间完全不采样。 - 传输速率最多九个字符,数字不会越过自己预留的格子压到下一个图标上。
- 去掉两行字体设置末尾的对勾。
贡献者
v2.0.1
CAPS v2.0.1
The Windows build is a little over a megabyte smaller. Nothing about using CAPS changed.
Changed
- The HTTP client now uses the platform's own TLS — schannel on Windows — instead of a second, pure-Rust one. That takes
rustls,rustls-webpki,ring,hyper-rustlsandtokio-rustlsout of the executable: 13.57 MB → 12.46 MB, 1.11 MB or 8.2% smaller, with no change in how anything behaves. - Certificate validation now uses the Windows root store, which Windows keeps up to date, rather than a list of roots compiled into the binary.
Fixed
- The release workflow applies the tag's release-notes file when a release already exists, instead of leaving its page blank.
Contributor
CAPS v2.0.1
Windows 版本小了 1 MB 多一点,使用上没有任何变化。
调整
- HTTP 客户端改用系统自带的 TLS(Windows 上是 schannel),不再额外链接一套纯 Rust 实现。可执行文件因此去掉了
rustls、rustls-webpki、ring、hyper-rustls和tokio-rustls:13.57 MB → 12.46 MB,减少 1.11 MB(8.2%),行为完全一致。 - 证书校验改用 Windows 根证书存储(系统会持续更新),不再依赖编译进程序里的根证书列表。
修复
- 发布流程在 release 已存在时会补写该 tag 的 release notes,不再留下空白页面。
贡献者
v2.0.0
CAPS v2.0.0
CAPS 2.0.0 is a rewrite of the interface. The island is no longer a page inside a web view: everything is drawn by GPUI, the same toolkit the window is built from, so the build carries no browser engine, no HTML and no CSS.
Added
- Native interface drawn by GPUI: the capsule, panel, queue, spectrum and lyrics are painted directly, with no DOM in between.
- Fonts in Settings sets the English and the Chinese typeface separately. Each row shows the face in use; opening it lists every family installed on the machine, with a search box that also matches Chinese names ("雅黑" finds Microsoft YaHei), and every candidate is previewed in its own face. The default pairs Segoe UI with Microsoft YaHei UI, the pairing Windows itself uses.
- A Han fallback chain for the interface face, so a mixed Chinese/Latin line renders in one consistent typeface instead of dropping to a serifed one, and semibold weights survive.
- Play-order button in the queue header: play in order, repeat all, repeat one, or shuffle. The choice is remembered between runs.
- Seek bar along the bottom of the capsule, centred, with a dot that can be dragged to seek.
- Queue rows put the track length in a right-aligned column of its own, and any text that does not fit scrolls while the pointer rests on it — on the queue rows and on the capsule's title and artist alike.
- A scrollbar down the side of the queue, and the list follows new tracks to the end, which is where they are appended.
- Hold Shift and drag the capsule to move it; the position is remembered and restored next time. Right-click the capsule to quit.
- Reduced motion: with the system setting on, expansion, cover rotation and lyric changes become fades or instant switches.
Changed
src/main.rswent from 1505 lines to 79. The interface now lives insrc/app.rs,src/components.rs,src/windowing/andsrc/motion.rs.- The window is shaped by a native region plus hit testing, so clicks fall through wherever the island does not paint, and the right-click-to-quit zone follows the capsule exactly.
- Every icon is drawn as a path rather than set in type, so icons keep their shape, weight and centring whatever interface font is chosen.
- One dark token palette for the whole interface, with the album's own colours reserved for the spectrum and the seek bar.
- Both READMEs rewritten for the native build.
Fixed
- Holding Shift and dragging the capsule no longer freezes the window.
- No more jagged edges around the capsule or the panel at scaled island sizes.
- The panel is no longer clipped while it animates open.
- Album art in the queue no longer blinks: the cover cache drops the entry that has been off screen longest, instead of an arbitrary one that could still be in view and would then be fetched again.
- The pause mark is drawn rather than typed: it used to resolve through a fallback font and came out as two hairline serifs.
Removed
- The Dioxus web-view front end, its 2039-line stylesheet and the bundled demo assets. The only UI dependency left is
gpui-kit.
Contributor
CAPS v2.0.0
CAPS 2.0.0 重写了整个界面。音乐岛不再是一个网页视图里的页面:所有内容都由 GPUI 直接绘制,也就是构建窗口用的同一套工具,因此构建产物里不再有浏览器内核、HTML 和 CSS。
新增
- 由 GPUI 原生绘制界面:胶囊、面板、队列、频谱和歌词全部直接绘制,中间没有 DOM。
- 设置里的「字体」可以分别指定英文和中文字体:每一行显示当前使用的字体,点进去会列出本机安装的全部字体,搜索框也支持中文名(输入「雅黑」能找到 Microsoft YaHei),每个候选都用它自己的字体预览。默认把 Segoe UI 和 Microsoft YaHei UI 配成一对,也就是 Windows 自己的搭配。
- 界面字体带中文字体回退链:中英混排的一行会统一用同一套字体,不会再退回衬线字体,半粗字重也能保留下来。
- 队列标题栏新增播放顺序按钮:顺序播放、列表循环、单曲循环、随机播放,选择会被记住。
- 胶囊底部新增进度条,居中显示,圆点可以拖动来跳转。
- 队列每行的时长单独右对齐成一列;放不下的文字在鼠标停留时自动横向滚动——队列行和胶囊上的歌名、歌手都是如此。
- 队列右侧新增滚动条;新增歌曲始终追加到队列末尾,列表也会跟到新歌出现的位置。
- 按住 Shift 拖动胶囊即可移动,位置会被记住,下次启动仍在那里;在胶囊上右键可以退出。
- 支持系统「减少动画」设置:开启后展开、封面旋转和歌词切换改为淡入或直接切换。
调整
src/main.rs从 1505 行降到 79 行;界面改由src/app.rs、src/components.rs、src/windowing/和src/motion.rs承担。- 窗口改用原生区域加命中测试来成形:岛屿没有绘制的地方点击会穿透,右键退出的范围也与胶囊完全一致。
- 所有图标改为路径绘制而不是字符,选任何界面字体都不会改变图标的形状、粗细和居中。
- 整套界面统一使用一套深色色板,只有频谱和进度条使用专辑自己的配色。
- 两个 README 都按原生版本重写。
修复
- 按住 Shift 拖动胶囊不再卡住窗口。
- 缩放岛屿尺寸后,胶囊和面板边缘不再出现锯齿。
- 面板展开动画过程中不再被裁切。
- 队列封面不再闪烁:封面缓存现在淘汰最久没有被用到的条目,而不是随便淘汰一个可能还在屏幕上的条目、随后又把它重新下载回来。
- 暂停图标改为绘制而不是打字,不会再经由回退字体显示成两条细衬线。
移除
- 移除 Dioxus 网页视图前端、2039 行的样式表和随附的演示素材;现在唯一的界面依赖是
gpui-kit。
贡献者
v1.2.0
CAPS v1.2.0
Added
- Fixed the square expansion artifact around the expanded island panel.
- Preserved live Pinyin composition in the search field while typing Chinese.
- Increased online search results to 150 per provider while keeping NetEase, QQ Music, and KuGou searches parallel.
- Refreshed the Rust dependency lockfile and direct dependency versions.
Changed
- Search Enter handling now reads the latest browser input value and ignores Enter while an IME composition is active.
- Updated the release version to
1.2.0.
Contributor
CAPS v1.2.0
新增
- 修复音乐岛展开时出现方形外框的问题。
- 中文输入法组合输入期间保留实时拼音,不再被搜索框重绘覆盖。
- 在线搜索改为每个平台最多返回 150 条结果,并继续并行搜索网易云音乐、QQ 音乐和酷狗音乐。
- 刷新 Rust 依赖锁文件和直接依赖版本。
调整
- Enter 键现在读取搜索框最新内容,并忽略输入法组合状态下的 Enter。
- 发布版本更新为
1.2.0。
贡献者
v1.1.0
CAPS v1.1.0
新增
- Online 搜索现在支持网易云音乐、QQ 音乐和酷狗音乐,并展示各来源返回的完整结果页。
- 随机添加歌曲现在从网易云音乐、QQ 音乐和酷狗音乐三个来源轮流取歌。
- 随机歌曲数量改为可直接输入的
1-999数字。 - 新增清空搜索结果按钮,只清除当前搜索列表,不影响播放队列。
- 随机取歌新增更丰富的分类种子,包括古风、国风、民谣、摇滚、电子、影视原声、动漫歌曲等。
调整
- Online 搜索结果上限统一调整为 99 首;酷狗接口按其搜索接口限制请求。
- Append、Replace、Clear 和数量输入框现在与 Online / Bilibili / YouTube / Local 四个来源按钮对齐。
- Append 和 Replace 现在使用数字输入框,不再使用滑动条,随机添加会尽可能补足用户输入的数量。
- Search 和 Queue 列表滚动条加宽,并统一滚动条滑块的最小高度。
- README 中补充酷狗音乐和三来源随机添加说明。
贡献者
CAPS v1.1.0
Added
- Online search now includes NetEase Cloud Music, QQ Music, and KuGou, showing the complete returned result page from each source.
- Random tracks are now drawn round-robin from NetEase, QQ Music, and KuGou.
- Random quantity is now a directly editable number from
1to999. - Added a clear-search-results button that clears only the current search list and keeps the queue intact.
- Added a broader random seed pool, including guofeng, gufeng, folk, rock, electronic, soundtrack, anime, and other category-based seeds.
Changed
- Online search limits are now set to 99; KuGou requests remain bounded by its search endpoint.
- Append, Replace, Clear, and the quantity input now align with the four Online / Bilibili / YouTube / Local source buttons.
- Append and Replace now use a numeric input instead of a slider, and random loading now tries to fill the requested count.
- Search and Queue scrollbars are wider and use a shared minimum thumb height.
- Updated both README files with KuGou and three-source random queue details.
Contributor
CAPS v1.0.14
CAPS v1.0.14
Fixed
- Fixed lyrics not appearing for existing NetEase tracks saved with the legacy
shiteasesource identifier. - Kept lyric loading compatible with both legacy and current NetEase source identifiers.
- Added a regression test for timestamped LRC parsing and current-line selection.
Contributor
- ref42
CAPS v1.0.14
修复
- 修复已保存的旧版网易云音乐歌曲使用
shitease来源标识时无法显示歌词的问题。 - 兼容旧版和当前网易云音乐来源标识的歌词加载。
- 新增带时间戳 LRC 解析和当前歌词行选择的回归测试。
贡献者
CAPS v1.0.13
CAPS v1.0.13
Added
- Added direct QQ Music search and playback for tracks available without QQ Music membership.
- Merged QQ Music results into the Online source alongside NetEase.
- Added QQ Music lyric lookup.
- Added balanced random queues with equal NetEase and QQ Music quotas.
Changed
- Removed provider suffixes from visible song names while preserving source-aware playback internally.
- Improved remote track loading with buffering progress and background prefetching for the next queued song.
- Queue clicks now start playback immediately.
- Restricted QQ Music tracks are filtered from search results when QQ marks them unavailable for playback.
Fixed
- Fixed QQ Music vkey and CDN stream resolution.
- Fixed random queue generation returning fewer tracks than requested when only the first QQ search page was used.
- Fixed QQ Music playback requests requiring the correct browser headers and stream fields.
Contributor
- ref42
CAPS v1.0.13
新增
- 新增 QQ 音乐搜索和播放,限于无需 QQ 音乐会员即可播放的歌曲。
- 将 QQ 音乐结果合并到 Online 来源,与网易云音乐一起展示。
- 新增 QQ 音乐歌词查询。
- 新增网易云音乐与 QQ 音乐配额均衡的随机歌单。
调整
- 移除歌曲名称中展示的来源后缀,同时保留内部来源信息以正确播放。
- 优化远程歌曲加载,增加缓冲进度,并在后台预加载队列中的下一首歌曲。
- 点击队列歌曲后立即开始播放。
- QQ 音乐标记为当前不可播放的受限歌曲不再出现在搜索结果中。
修复
- 修复 QQ 音乐 vkey 和 CDN 音频流解析。
- 修复随机歌单只使用 QQ 第一页搜索结果导致歌曲数量不足的问题。
- 修复 QQ 音乐播放请求缺少必要浏览器请求头和音频流字段的问题。
贡献者
v1.0.12
CAPS v1.0.12
Fixed
- Improved queue item removal so the
Xbutton responds reliably with a larger, isolated click target. - Fixed expanded island song-title overlap by moving the title into a dedicated clipped center lane.
- Added a gentle marquee for long song names in the expanded island, preventing text from covering playback controls or the spectrum.
Changed
- Moved CAPS from the old
src-taurilayout to a standard Rust project layout. - Moved
Cargo.toml,Cargo.lock,build.rs, andsrc/to the repository root. - Updated the release workflow to build and package from the repository root.
- Updated embedded asset paths for the icon and companion sprites.
Removed
- Removed the obsolete
src-tauriproject wrapper.
Contributor
- ref42
CAPS v1.0.12
修复
- 优化队列中
X删除按钮的点击区域和事件隔离,减少需要多次点击才删除的问题。 - 修复岛屿展开后歌曲名与播放按钮、频谱重叠的问题。
- 长歌曲名在展开岛屿中改为柔和滚动显示,避免文字挤在一起或覆盖控件。
调整
- 将 CAPS 从旧的
src-tauri目录结构调整为标准 Rust 项目结构。 - 将
Cargo.toml、Cargo.lock、build.rs和src/移动到仓库根目录。 - 更新 Release 工作流,现在从仓库根目录构建和打包。
- 更新图标和宠物 sprite 的内嵌资源路径。
移除
- 移除已经不再需要的
src-tauri项目外层目录。