Skip to content

Releases: NandySun/mochi

v0.4.0

Choose a tag to compare

@NandySun NandySun released this 05 Jul 03:25

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

Choose a tag to compare

@NandySun NandySun released this 01 Jul 02:21

Mochi v0.3.7

改进

  • 元数据拉取和图片下载自动走系统代理(TMDB / Bangumi),不再需要在设置中手动填写代理地址
  • 设置中移除了代理地址输入框,旧配置首次启动时自动清理

Mochi v0.3.6

Choose a tag to compare

@NandySun NandySun released this 30 Jun 14:16

Mochi v0.3.6

修复

  • 修复拖动 OSC 控件(音量/时间 knob)超出 OSC 区域后释放会误触发视频暂停的问题
  • 修复双击视频区切全屏时被同时判定为"单击 + 双击",造成先暂停后继续的抖动

新增

  • 单击视频区空白处可暂停/继续(拖动和双击不触发)
  • 选集弹窗滚动条美化:更细、有 hover 反馈、过渡动画
  • 音量滑块圆点精确居中(修复音量最大时圆点偏出轨道的问题)

改进

  • 设置 → 媒体库的"批量导出 NFO"和"清除所有 NFO"两个按钮迁移到设置 → 数据页,与"图片缓存"等数据管理卡片归类在一起

Mochi v0.3.5

Choose a tag to compare

@NandySun NandySun released this 30 Jun 07:30

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

Choose a tag to compare

@NandySun NandySun released this 30 Jun 03:08

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 改 loadfile args 位置时
    意外修复了 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 Pre-release
Pre-release

Choose a tag to compare

@NandySun NandySun released this 30 Jun 01:42

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 in series.fonts_dir.
    • On each loadfile call, the player injects sub-fonts-dir=<path> via the loadfile command's options argument — bypassing the libmpv-wrapper v0.1.1 bug where setProperty with 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.

Known limitations

  • Does not auto-extract .rar/.zip archives. If a release group ships fonts as Fonts.rar, unpack it to fonts/ first.
  • Only matches fonts/ (case-insensitive) at the series-folder level — does not scan nested directories.
  • Depends on mpv's sub-fonts-dir behavior. Verified working with libmpv v0.41.0 (mpv 0.39+); unrelated to mpv issue #15461 which affects global command-line --sub-fonts-dir.

Implementation notes

  • DB: series table gains fonts_dir TEXT column. Migration is backward-compatible.
  • get_episode_path now 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 the index placeholder (-1) required by mpv 0.38+'s positional loadfile argument 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 (.portable marker included)

v0.3.2

Choose a tag to compare

@NandySun NandySun released this 29 Jun 15:38

External subtitle auto-detection. Fix subtitle_paths JSON parsing.

v0.3.1 — 莫兰迪暖灰 Palette

Choose a tag to compare

@NandySun NandySun released this 29 Jun 13:20

莫兰迪暖灰 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 交互化 + 快捷键集中管理

Choose a tag to compare

@NandySun NandySun released this 29 Jun 09:55

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"

Choose a tag to compare

@NandySun NandySun released this 29 Jun 05:24

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