Skip to content

Releases: backrooms-yrc/CurrentMusic

v1.28.52 — AI 无卡片提问 + 按用户上下文

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 17:35

v1.28.52:CurrentMusicAI:无需引用卡片 + 按用户上下文 + 思考强度显式化。
· 不再强制引用:直接 @CurrentMusicAI 即可提问;引用卡片时结合卡片信息,追问能理解
「它/这首歌/这位歌手」的指代(系统提示词已更新)。
· 上下文:新增 ai_history 表,按用户 ID 保存最近 6 轮问答(7 天),不同用户互不影响;
「清除上下文」//reset 可重置;快速追问排队等待(5s 冷却)而不是被静默丢弃
(此前 10s 冷却会直接丢掉紧跟的追问)。
· 猜你想问:无卡片时改为通用问题(最近好听的歌 / 通勤推荐 / 介绍本站),有卡片时仍按类型。
· 思考强度:请求显式带 reasoning_effort,默认 high,可用 CM_AI_EFFORT=low|high|max 调整;
系统提示词与配置同步写入 docs/currentmusic-ai.md。
· 新增 2 项上下文/清除命令纯逻辑测试(共 8 项)。


安装包:CurrentMusic-v1.28.52.apk(versionCode 145)。

v1.28.51 — CurrentMusicAI 联网问答助手

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 17:26

v1.28.51:CurrentMusicAI:聊天室联网问答助手(DeepSeek)。
· 账号:新增 CurrentMusicAI(is_bot=1、机器人头像、AI 徽章;不出现在用户广场,
但可在 @ 提及选择器中搜到)。头像由服务端生成,账号在启动时幂等创建。
· 触发:在 Chat 中引用单曲/专辑/歌手/歌单卡片并 @CurrentMusicAI 提问;服务端异步
「模型 → Search/Fetch 工具 → 工具结果 → 模型」循环(最多 4 轮、3 次搜索、1 次网页抓取),
以 AI 账号把回答发回聊天室(SSE 实时下发)。手打 @CurrentMusicAI 也识别。
· 猜你想问:引用卡片并 @ 它时,输入框上方按卡片类型自动弹出三条问题
(创作背景/影视出处/歌手生平 等),点选填入;无卡片时提示先引用卡片。
· 回答约束:中文、纯文本、约 500 字,按句子边界截断;同用户 10 秒冷却、同时最多 2 个请求;
未配置密钥/检索失败都会给出明确回复。
· 配置:密钥仅从 CM_AI_KEY 读取(systemd drop-in,0600,不入库不入仓库);模型
deepseek-flash 可经 CM_AI_MODEL 覆盖。文档见 docs/currentmusic-ai.md。
· 实测:联网回答「Reply 出自哪部影视作品」用时约 12s、235 字;无头浏览器验证 @ 选择器、
猜你想问、AI 徽章;新增 6 项纯逻辑测试并入 CI。


安装包:CurrentMusic-v1.28.51.apk(versionCode 144)。

v1.28.50 — Chat @ 提及实时搜索 + 键盘选择

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 17:00

v1.28.50:Chat @ 提及选择器:实时搜索 + 键盘选择(QQ 式)。
· 后端:GET /chat/members?q= 实时搜索昵称/用户名(前缀命中优先、最多 20 条,
只搜公开到广场的启用用户);LIKE 通配符 % _ \ 已转义;无 q 仍返回近期活跃成员。
· 前端:输入 @ 立即弹出列表;本地成员即时过滤 + 180ms 防抖服务端搜索补全
(所以 @ℝ 能搜到不在近期列表里的 ℝ𝕔𝕤𝕥𝟚𝟘);候选显示头像、昵称、头衔/角色、
@用户名两行,匹配片段高亮;↑/↓ 切换、Enter/Tab 确认、Esc 关闭,鼠标/触摸可选。
服务端搜索到的人即使不在本地成员缓存,也能正确写入消息 mentions。
· 修复选择器一直隐藏的 bug:CSS display:none 与 style.display='' 冲突,
改为显式的打开状态。无头浏览器实测:输入 @ℝ 弹出候选,Enter 插入 @ℝ𝕔𝕤𝕥𝟚𝟘 。
· API 目录更新;新增 4 项 LIKE 转义测试(通配符/反斜杠/空串/前缀)。


安装包:CurrentMusic-v1.28.50.apk(versionCode 143)。

v1.28.49 — 分享图补充 CurrentMusicX 提示

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 16:18

v1.28.49:分享图补充「打开 CurrentMusicX 搜索本曲」提示。
· 分享图底部新增一行:也可打开 CurrentMusicX 搜索「歌名」收听(长歌名自动省略),
与「扫码或访问链接」并列,给没有本站账号的用户一条明确的收听路径。


安装包:CurrentMusic-v1.28.49.apk(versionCode 142)。

v1.28.48 — 分享图封面取色 + 二维码

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 16:11

v1.28.48:分享图升级:背景动态取色自封面 + 内嵌二维码。
· 动态取色:从封面缩略图采样(40×40),按饱和度与中间亮度加权统计 24 个色相桶,
取主色相生成深色渐变与同色系柔光;无封面/画布被污染时回退品牌紫。实测该封面
主色相 h≈8°(红橙),背景与封面色调一致。
· 二维码:新增依赖 qrcode-generator(MIT,EC 级别 M),在分享图右下角绘制
带 4 模块静区的白底二维码,内容为歌曲分享链接(/app/#/song/<id>)。
分享图版式重排:封面 620、歌名/歌手/专辑、分隔线、左侧文案与链接、右侧二维码。
· 验证:用无头 Chromium 打开歌曲分享页 → 生成分享图 → 用 jsQR 解码,
成功读出分享链接;图片 1080×1440、约 240KB JPEG。
· 新增前端依赖 qrcode-generator(package.json / lock 同步)。


安装包:CurrentMusic-v1.28.48.apk(versionCode 141)。

v1.28.47 — 分享落地页修复 + 分享图优化

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 16:03

v1.28.47:修复分享落地页 + 分享图体积优化。
· 修复:/ncm/song/detail 返回的是已归一化字段(ncm_id、artists 字符串),
分享落地页又套了一层 ncmSongs(要求 id),整条被过滤成空——打开分享链接会显示
「歌曲不存在」。现在直接使用接口返回的归一化对象。
· 分享图:导出改为 JPEG(质量 0.92),控制 base64 体积,避免 App 原生保存桥传输
数 MB 字符串;文件名与原生 MIME 同步为 .jpg / image/jpeg。


安装包:CurrentMusic-v1.28.47.apk(versionCode 140)。

v1.28.46 — 歌曲分享(分享图 / 链接 / 信息)

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 16:01

v1.28.46:歌曲分享:分享图 / 分享链接 / 分享歌曲信息。
· 入口:播放页「更多」抽屉新增「分享歌曲」(也可从分享落地页再次分享)。
· 分享图:客户端 canvas 实时绘制 1080×1440 卡片(封面、歌名、歌手、专辑、站点链接),
弹出预览并可保存。封面走网易云 CDN(带 CORS);App 的 WebView 是 file:// 页面,
若封面加载失败或画布被污染,自动降级为渐变占位封面重画,保证任何环境都能出图。
App 端新增原生桥 NativeApi.saveImage(base64, fileName):Android 10+ 写入
Pictures/CurrentMusic(MediaStore,免权限),旧系统写入应用图片目录;网页端走
<a download> 下载 PNG。
· 分享链接:…/app/#/song/<id>,新增歌曲落地页(封面/歌名/歌手/专辑 + 播放/再次分享);
复制链接或分享歌曲信息(歌名 / 歌手 / 专辑 / 链接)均支持剪贴板回退。
· 分享图长文本自动省略号截断;分享链接在 App 内按 API 站点拼装(file:// 页面不会
生成非法链接)。
· 公开壳 MainActivity 同步加入 saveImage 桥。


安装包:CurrentMusic-v1.28.46.apk(versionCode 139)。

v1.28.45 — 独立发帖/公告页 + Chat 引用内容

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 14:01

v1.28.45:发帖 / 发公告改为独立页面;Chat 支持引用单曲/专辑/歌手/歌单。
· 独立页面:发帖从弹窗改为 #/post/new,发公告从管理员弹窗改为 #/announce/new 与
#/announce/<id>(编辑);保留原有 Markdown 工具栏、预览与引用选择;发布/保存后回到对应
列表,取消也确定性返回,避免直接打开页面时 history.back() 退出站点。公告页保留置顶开关
并对「只能编辑自己发布的公告」做前端提示。
· Chat 引用:消息新增 atts 字段(服务端白名单校验:类型 song/album/artist/playlist、
id>0、名称必填、图片仅 http(s)、最多 5 项;旧库自动补列)。输入区新增「引用」按钮,
复用发帖的选择器;选中内容以紧凑卡片显示在消息气泡下方,点击行为与帖子一致(单曲直接播放,
专辑/歌手/歌单跳详情)。允许只发引用不带文字。SSE 与历史/翻页消息都会渲染卡片。
· 代码复用:帖子与聊天共用的引用逻辑抽到 web/src/attach.js(选择器 / 卡片渲染 / 点击行为),
posts.js 与 chat.js 不再各写一份。
· 文档/测试:API 目录更新 /chat/messages 的 atts 契约;新增 5 项 parse_atts
回归测试(类型白名单、非法项丢弃、图片协议白名单、上限 5、非数组),后端测试共 76 项。


安装包:CurrentMusic-v1.28.45.apk(versionCode 138)。

v1.28.44 — 登录失效主动退出 + 平板端适配

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 09:39

v1.28.44:登录失效主动退出 + 平板端布局适配。
· 登录失效不再“只弹提示不退出”:此前 401 只弹 toast,token 一直留在本地——每个
鉴权请求都会再弹一次,账号看起来仍是登录状态,只能手动退出。现在收到「带 token 的
401」会主动清掉本地会话(token/user,并移除失效账号记录),弹一次带「重新登录」
的对话框;并发 401 因 token 已清空不会重复触发;停在「我的/设置」页时自动重渲染为
未登录状态。
· 修正游客误报:只有请求发出时确实带过 token 的 401 才算「会话失效」;游客(本来
未登录)的 401 交由播放/投屏入口提示登录,不再误报「登录已失效」。
· 避免弹窗叠加:播放与投屏的 401 分支在会话已被统一登出后不再重复弹登录框。
· 平板适配:补上 600–899px(竖屏平板)断点——内容居中限宽 820px、歌曲列表与用户
广场双栏、设置/个人主页限宽 720px、聊天区 760px;≥1200px 内容列从 920 放宽到 1080px,
横屏平板两侧不再留大片空白。


安装包:CurrentMusic-v1.28.44.apk(versionCode 137)。

v1.28.43 — 修复版本号倒退(App 检测不到更新)

Choose a tag to compare

@backrooms-yrc backrooms-yrc released this 17 Oct 09:34

v1.28.43:修复版本号倒退导致 App 检测不到更新(重要)。
· 根因:v1.28.20/21/22 的 versionCode 是 133/134/135,而 v1.28.23 起被误写成
103~122(按错误的中段序号递增)。于是已安装 v1.28.21(134)的 App 拿到服务端的
122 后会判定「已是最新版本」,Android 也会拒绝这种降级安装——期间所有版本实际上都
没法通过应用内更新装上去。
· 修复:本版接回正确序号 versionCode 136(> 134,也 > 122),可覆盖任何已发布版本。
· 构建流程:build.sh 现在会用 VER_NAME/VER_CODE 同步 web/src/version.js 里的
兜底版本号——此前它一直停在 1.28.22/135,导致网页端(无 NativeApi)的更新检查同样失效。
· 说明:v1.28.23~v1.28.42 的 APK 版本号偏低,已安装这些版本的用户直接更新到本版即可;
无需手动卸载。


安装包:CurrentMusic-v1.28.43.apk(versionCode 136,可覆盖任何已发布版本)。