Releases: ZASENJC/mediatree
Releases · ZASENJC/mediatree
Release list
1.1.01
文件夹浏览
- 文件夹标题支持展示 TMDB 标题图,优先使用中文 Logo,其次使用英文 Logo;图片不可用时自动回退到文字标题
- 放大文件夹标题并精简首屏控件,移除重复的
Folder标签和页内“返回首页”按钮 - 单集卡片优先展示单集剧照,缺图时回退到文件夹横版背景;手机保持两列,桌面根据空间自适应排列
- 共享横版背景可在单集卡片之间复用浏览器缓存,并稳定离屏 16:9 卡片尺寸,减少重复下载和滚动跳动
安全更新
- 将
pydantic-settings升级到 2.14.2、python-multipart升级到 0.0.31、Pillow升级到 12.3.0,纳入当前安全修复
发布类型
- 需要完整 Docker 镜像更新,以安装修复后的 Python 依赖
- Docker Compose 用户请在宿主机执行
docker compose pull && docker compose up -d;新安装使用的zasenjc/mediatree:latest会刷新到最新应用基线
1.1.0
设置
- 设置页改为右侧抽屉,在当前页面上方打开,不再替换主页面路由
- 放宽设置分类栏,让标签完整显示,同时保持文字小字号并加宽选中态阴影底框
- 设置的液态玻璃效果只保留在抽屉面板上,打开设置时不再模糊或压暗底下的页面
- 设置抽屉底部新增轻量 GitHub 项目归属链接
- 移除旧的 Javdatabase 全局启用开关,Javdatabase 现在只通过刮削器选择和插件注册控制
- 刮削器设置只保留
TMDB 读访问令牌,并提供令牌申请教程链接
媒体库
- 首页改为将“继续观看”以紧凑横向列表展示在媒体库海报网格上方,区块标题使用更轻量的小字号,并移除原来的切换入口
- 稳定首页媒体库初始布局,避免海报行在页面渲染完成过程中向下滑动
- 首页媒体库在排序或布局变化导致海报移动时,会以接近 60fps 的节奏播放更自然的位置过渡动画
播放
- 详情页打开后会自动播放,并让播放器适配首屏高度;标题、元数据和图库继续放在播放器下方
- 手机和触控设备上的详情页改用普通上下排列播放器布局,不再强制套用首屏适配高度
- 保持普通嵌入播放器默认不自动播放,只有详情页等明确传入
autoPlay的页面才会启用
维护
- 更新前端构建工具链和间接开发依赖,清除当前
npm audit报告的问题
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新
- Docker Compose 用户可在设置页更新;新安装使用的
zasenjc/mediatree:latest会刷新到最新应用基线
刮削
- 将应用内置刮削器改为由
backend/app/builtin_plugins/scrapers下的 manifest 驱动加载 - 用户上传的刮削器插件继续隔离安装在
settings.data_dir/scraper_plugins,/api/scrapers统一返回内置刮削器和已启用上传插件
1.0.16
媒体库
- 首页媒体库目录卡片改为显示源文件夹下的原始视频项数量;设置页媒体库数量继续按电视剧季/显示条目聚合
发布流水线
- 精简 Docker 构建:完整 Noto CJK 和 emoji 字体改为按需构建参数,默认保留 WenQuanYi 和前端内置字幕兜底字体
- 新增共享
scripts/build-app-package.sh打包脚本,本地和 GitHub release 打包都会统一剔除 pycache、bytecode、source map 和本地元数据 - 更新构建/更新规则,后续 Docker 与应用包构建默认保持瘦身;调整运行时字体策略时必须走完整 Docker 镜像更新
发布类型
- 需要完整 Docker 镜像更新,因为本次调整了 Dockerfile/runtime 字体策略和 release 打包路径
- Docker Compose 用户请执行
docker compose pull && docker compose up -d
1.0.15
媒体库
- 媒体库数量统计会将电视剧季和文件夹条目作为一个显示项统计,避免季集型内容在首页数量中过度展开
播放
- 优化播放器控制栏自动隐藏时机,减少播放中控件遮挡画面的情况
- 调整剧集切换按钮的玻璃质感样式,让播放器工具区更轻量
移除
- 移除 Jellyfin/Emby 兼容 API 层,包括旧的
/System、/Users、/Items、/Videos、/Sessions、/Shows、/Library、/DisplayPreferences、/Genres和/emby路由 - 移除独立的 Jellyfin 令牌、认证和映射模块;浏览器播放、媒体 token 串流、外部播放器 M3U 接续和 Web 播放进度继续通过 MediaTree 原生 API 支持
文档
- 移除仓库内维护的 GitHub Wiki 镜像目录
docs/wiki*,统一以 VitePress 文档站作为文档入口 - 更新 README 和开发文档,用户说明统一指向文档站,不再保留旧 Wiki 入口
- 更新 README 和文档站,当前安装/使用说明不再宣称服务端支持 Jellyfin/Emby 兼容访问
发布流水线
- 发布流程保持手动触发,普通
push不会自动发布版本
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新
1.0.14
播放
- 播放页浏览器标签标题会随播放状态显示:播放中为
▶ 当前播放标题 - MediaTree,暂停或结束为⏸ 当前播放标题 - MediaTree - 用户停留在播放页时持续保留播放状态标题,只有离开播放页才恢复原站点标题
- 剧集/选集播放时,浏览器标签标题优先使用当前集标题
更新
- 设置页更新卡片会将旧应用包版本显示为
回滚此版本,新应用包版本显示为下载并更新 - 回滚与更新操作的确认框、进度和错误提示文案保持一致
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新
1.0.13
媒体库
- 支持将影片目录下的
sp文件夹作为花絮入库,默认不混入普通列表、搜索、收藏、继续观看、文件夹计数和播放器选集 - 详情页花絮改为本页内“展开/收起”查看,不再联动文件夹页的花絮显示开关
- Javdatabase 番号识别更严格,优先使用明确番号,并在匹配前清理前缀噪音
刮削
- 新增
TMDB Collection刮削器,用于电影系列合集的封面、背景和简介元数据 TMDB Collection加入自动刮削搜索链,手动选择“自动”时会展示自动链搜索到的全部候选- 手动刮削的“自动”保持搜索语义,不再直接应用刮削结果
- 右键“重新刮削”统一使用该媒体库配置的刮削器进行刮削并应用结果
- Javdatabase 仅限配置为 Javdatabase 的媒体库使用,不加入自动刮削链
- 刮削器缓存有效期和 Javdatabase 请求间隔改为后端内部策略,不再通过设置页或环境变量调节
- 手动扫描、重新刮削、手动刮削应用和选择结果应用都会绕过刮削缓存,确保用户主动刷新能拿到最新数据
- 空刮削结果不再写入缓存,读取到历史空缓存时会自动删除,避免旧空结果挡住后续补齐的数据
- Javdatabase 的搜索、直连、模糊匹配和详情请求统一使用内部 3 秒请求间隔
播放
- 浏览器播放遇到 AC3 音轨时可自动转码,提高浏览器兼容性
- 花絮播放进度不会进入继续观看
发布流水线
- Docker 镜像新增版本 label,让
zasenjc/mediatree:latest能暴露当前应用版本基线 - 更新页可检测应用包发布后 DockerHub
latest是否落后,并给出维护者本地同步提示 scripts/push-docker-release.sh会传入MEDIATREE_VERSION,确保本地推送的latest和版本镜像带有正确版本标记
更新方式
- 本版本需要完整 Docker 镜像更新,因为 Docker 镜像 metadata、更新基线、发布链和运行时刮削策略默认值发生变化
- Docker Compose:执行
docker compose pull && docker compose up -d
发布类型
- 需要完整 Docker 镜像更新
1.0.12
品牌资源
- 修复登录页 LOGO:未登录状态下也会直接公开提供
login-logo.png和site-logo.png - 删除旧的运行时
frontend/public/logo.png,运行时品牌资源只保留login-logo.png和site-logo.png - 文档中的 LOGO 仍继续使用独立的
docs/assets/logo.png,不再和运行时 UI 资源混用
安全
- 前端公开静态资源白名单保持为固定品牌文件名,不开放任意根路径文件
- Jellyfin 兼容路由的 401 响应不再被 SPA fallback 改写成前端首页
发布流水线
- GitHub Actions release 流程只负责测试、构建应用包资产、更新 tag 和 GitHub Release,不再登录 DockerHub 或发布 Docker 镜像
- 应用包更新后的 DockerHub
latest同步改为维护者本地执行scripts/push-docker-release.sh构建并推送
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新
1.0.11
更新流程
- 应用包更新成功并完成重启后,会自动清理更旧的应用包目录和已下载归档
- 保留当前应用包和一个有效上一版,确保回滚和启动失败 fallback 仍然可用
- 清理时会跳过
data/releases/下未知用途的目录,避免误删用户或未来运行时文件
安全与依赖
- 更新生产环境 React Router 依赖链,清除
npm audit --omit=dev报告的 same-origin redirect advisory
发布流水线
- 应用包发布现在也会刷新 DockerHub
zasenjc/mediatree:latest,让新安装用户直接获得最新应用基线 - 完整镜像发布仍会同时推送版本化 Docker tag 和
latest
品牌与文档
- 登录页 LOGO 和网页图标恢复为随应用包发布的本地资源,不再依赖远程图片 URL
- README、compose 示例和 wiki 补充 Docker socket 挂载说明,明确它只用于可选的完整镜像更新
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新
1.0.10
重大安全更新
- 将认证加固重新作为完整 Docker 镜像更新发布,让部署环境同时刷新基础镜像和应用基线
- 匿名首次访问仍会被阻止:没有有效会话的用户必须停留在登录页或首次管理员初始化页
- 未登录时仍禁止首次媒体库初始化、更新检查、媒体库业务接口,以及部分 Jellyfin 兼容媒体接口
品牌资源
- 将运行时站点图标和登录页 LOGO 恢复为仓库内的圆角 PNG LOGO
- 新增
frontend/public/logo.png,Docker 镜像构建会包含与 README / GitHub 展示一致的 LOGO 图
更新方式
- Docker Compose:执行
docker compose pull && docker compose up -d - Docker run:执行
docker pull zasenjc/mediatree:1.0.10,再按原参数重新创建容器
发布类型
- 需要完整 Docker 镜像更新
1.0.08
安全与访问控制
- 认证现在默认失败关闭,空的
AUTH_USER/AUTH_PASS不再代表允许匿名访问 - 新增首次打开时创建管理员账号流程,使用签名 session token,并以哈希形式保存密码
- 未登录时禁止首次媒体库初始化、更新检查、媒体库业务接口,以及部分 Jellyfin 兼容媒体接口
- 前端在首次访问或无痕模式没有 token 时,会停留在登录/初始化界面,不再提前加载媒体库选择界面
文档
- 说明
AUTH_USER/AUTH_PASS用于预置管理员账号;留空时会进入首次创建管理员账号流程
发布类型
- 应用包级更新;不需要完整 Docker 镜像更新