Releases: NandySun/mochi
Release list
v0.4.0
v0.4.0
窗口内全屏进入播放页
打开任意剧集时视频直接铺满 mochi 窗口(隐藏 mochi 自定义标题栏,视频区占满客户区)。原本 flex 两行布局改为绝对定位布局:视频永远占满整个客户区,mochi 顶栏(返回 / 剧集标题 / 全屏按钮)跟 OSC 共享同一个 3 秒 auto-hide 状态,鼠标移动时一起淡入。
全屏按钮的语义从"进入全屏"改为"叠加 OS 全屏"——默认就是窗口内全屏,点按钮进入 Tauri OS 全屏(任务栏隐藏),再点回窗口内全屏。Esc 行为也对应:OS 全屏下退回窗口内全屏,窗口内全屏下退回详情页。
在外部播放器中打开
详情页剧集卡 hover 时右上角出现「↗」小按钮,配置好外部播放器后一键跳到 mpv / PotPlayer / IINA 等深度定制播放器播放。mochi 只传文件路径不传播放进度,用户的播放记忆由他们自己的播放器保留。
配置入口:设置 → 播放 → 外部播放器卡片。点「浏览…」选择可执行文件(Windows .exe),点「清除」取消。未配置时剧集卡上的「↗」按钮不渲染——功能默认休眠。
涉及平台
- Windows:完整支持,包括
AllowSetForegroundWindow解决前台锁,确保 mpv 窗口能抢到焦点 - macOS / Linux:可指定可执行文件路径使用,但 macOS 的 .app bundle 选择 UX 留待后续版本
Mochi v0.3.7
Mochi v0.3.7
改进
- 元数据拉取和图片下载自动走系统代理(TMDB / Bangumi),不再需要在设置中手动填写代理地址
- 设置中移除了代理地址输入框,旧配置首次启动时自动清理
Mochi v0.3.6
Mochi v0.3.6
修复
- 修复拖动 OSC 控件(音量/时间 knob)超出 OSC 区域后释放会误触发视频暂停的问题
- 修复双击视频区切全屏时被同时判定为"单击 + 双击",造成先暂停后继续的抖动
新增
- 单击视频区空白处可暂停/继续(拖动和双击不触发)
- 选集弹窗滚动条美化:更细、有 hover 反馈、过渡动画
- 音量滑块圆点精确居中(修复音量最大时圆点偏出轨道的问题)
改进
- 设置 → 媒体库的"批量导出 NFO"和"清除所有 NFO"两个按钮迁移到设置 → 数据页,与"图片缓存"等数据管理卡片归类在一起
Mochi v0.3.5
Mochi v0.3.5
NFO write-back (round-trip with Emby / Jellyfin / Kodi), NFO clear, plus a bug fix for type overrides.
新增
NFO 写回 — mochi 现在可以把自己缓存的 Bangumi / TMDB 元数据写回到 series 文件夹,写成 Kodi 标准的 tvshow.nfo / movie.nfo,让 Emby / Jellyfin / Kodi 等"邻居"应用能直接读取。poster.jpg / fanart.jpg 作为 sidecar 一起复制(不覆盖用户手动放置的文件)。触发点:单系列从详情页 ⋮ 菜单;批量从设置 → 媒体库。
NFO 清除 — 写入的对称面。一键清理 mochi 写出的 NFO 文件,适合分享文件夹时保持"原厂"状态、迁移到其他工具、或重新生成元数据。Sidecar 删除是单独 opt-in,弹窗明示"包括您手动放置的文件"。触发点:单系列 ⋮ 菜单 + 设置批量按钮。
修复
类型 override 不再被覆盖 — 之前用户在详情页把 type 从 "动漫" 改成 "电影" 后点 ↻ 刷新,标签会自动跳回 "动漫"。原因是 bangumi_id 快速通道不检查 type,会让 Bangumi 数据(硬编码 series_type="anime")覆盖用户的类型判断。修复后 bangumi_id 通道门控在 series_type == "anime",非 anime 类型走 TMDB 或通用通道,用户的类型判断在每次刷新时都会被尊重。
安装
- NSIS 安装版(
Mochi_0.3.5_x64-setup.exe):标准 Windows 安装器 - 便携版(
mochi-v0.3.5-portable.zip):解压即用,数据存在 exe 同级
SHA256 校验值在 release assets 页面。
系统要求
- Windows 10/11 x64
- WebView2 Runtime(Win11 自带,Win10 需手动安装)
v0.3.4
v0.3.4
⚠️ v0.3.3 用户必须升级——v0.3.3 引入 fonts_dir 回归 bug,
导致没有fonts/目录的视频无法播放。
修复
- fonts_dir 回归:
db::get_episode_fonts_dir闭包类型推断错位
(row.get(0)推断成String),导致 v0.3.3 之前入库的 series
首次播放全部崩溃。改用显式标注 +flatten()拍平 - 音轨/字幕切换意外修复:v0.3.3 改
loadfileargs 位置时
意外修复了 mpv 启动时序。原"修复待办"里的根因假设(trim bug)经核实不成立
下载
Mochi_0.3.4_x64-setup.exe(45.7 MB)mochi-v0.3.4-portable.zip(48.6 MB)
v0.3.3
v0.3.3 — Series-level font auto-loading
New
- Auto-load subtitle fonts from the series-level
fonts/directory. ASS subtitles referencing{\fnFontName}tags now render with the correct bundled fonts instead of falling back to the system default.- Scanner detects the
fonts/subdirectory (case-insensitive:fonts/Fonts/FONTS) at scan and rescan time, storing the absolute path inseries.fonts_dir. - On each
loadfilecall, the player injectssub-fonts-dir=<path>via theloadfilecommand's options argument — bypassing thelibmpv-wrapperv0.1.1 bug wheresetPropertywith a string value silently corrupts the mpv handle. - Path-escape utility (
escapeMpvOptionValue) wraps paths containing[\s,"=]in double quotes, so Chinese folder names and Windows paths with spaces work correctly. - No-op when the series has no
fonts/directory — preserves existing behavior.
- Scanner detects the
Known limitations
- Does not auto-extract
.rar/.ziparchives. If a release group ships fonts asFonts.rar, unpack it tofonts/first. - Only matches
fonts/(case-insensitive) at the series-folder level — does not scan nested directories. - Depends on mpv's
sub-fonts-dirbehavior. Verified working withlibmpvv0.41.0 (mpv 0.39+); unrelated to mpv issue #15461 which affects global command-line--sub-fonts-dir.
Implementation notes
- DB:
seriestable gainsfonts_dir TEXTcolumn. Migration is backward-compatible. get_episode_pathnow returns{ file_path, fonts_dir }so the frontend has both pieces at hand.useMpv.loadFile(filePath, options?)accepts a per-file options array. When options is provided, the internal wrapper automatically fills theindexplaceholder (-1) required by mpv 0.38+'s positionalloadfileargument parser.
Installers
- Installer (NSIS):
Mochi_0.3.3_x64-setup.exe— full install, data in%APPDATA%\mochi - Portable:
mochi-v0.3.3-portable.zip— extract anywhere, data alongside exe (.portablemarker included)
v0.3.2
v0.3.1 — 莫兰迪暖灰 Palette
莫兰迪暖灰 Palette
源自 Giorgio Morandi 灰调静物美学,重构全局色彩体系。
核心变化
- 底色: 纯黑 #0a0a0a → 暖灰黑 #151311
- 文字: rgba 半透明 → 实色 hex 三级(主 #e4ddd5 / 次 #aea59c / 弱 #7e756b)
- muted 对比度: 2.8:1 → 4.6:1 (WCAG AA 达标)
- 全部 CSS 变量集中管理: index.css :root 块定义 30+ 变量,组件通过 var(--color-xxx) 引用
技术细节
- 渐变预设透明度 0.4 → 0.45 适配新底
- 表面层从 rgba 半透明 → 实色六级递进
- close hover 从 Windows 红 → 莫兰迪灰红
- 20 个组件完成硬编码颜色替换
v0.3.0: 搜索 + Indicator Dots 交互化 + 快捷键集中管理
v0.3.0
搜索
- SearchOverlay 组件,/ 或 Ctrl+K 全局触发,居中浮层搜索全部系列
- 首页筛选栏新增搜索按钮(SVG 图标),与快捷键行为一致
- 60ms debounce,上下键导航,Enter 进入详情页
Indicator Dots 交互化
- 焦点圆点可点击跳转到对应系列,aria-label 无障碍标识
- 超过 7 部时窗口化显示(当前 +/-3 共 7 个),容器两端渐变淡出
快捷键集中管理
- 新建 SettingsShortcuts 页面,按分组列出全部快捷键
- kbd 样式提取到 styles/settings.ts,设置侧边栏新增快捷键标签
Bug 修复
- 标题栏最小化按钮失效:window_minimize 命令补注册
- 详情页/播放页按 Esc 返回首页
"v0.2.4"
Kodi NFO metadata import
Automatically detect and parse tvshow.nfo or movie.nfo (Kodi XML format) in series folders during scan. Extracts plot, year, and genre fields. Users migrating from Jellyfin/Kodi no longer need to re-scrape metadata.
- Passive compatibility: zero overhead when no NFO file exists, no toggle needed
- NFO data has lower priority than Bangumi/TMDB online data, won't overwrite existing metadata
- Standalone module, decoupled from scanner, silent failure on malformed XML