renovate[bot]
eab40dba36
chore(deps): update actions/upload-artifact digest to cf430e0 ( #3271 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-29 14:15:22 +08:00
renovate[bot]
c9c82ac038
chore(deps): update docker/build-push-action digest to c3c9e26 ( #3272 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-29 14:15:05 +08:00
renovate[bot]
0496e1f579
chore(deps): update docker/setup-buildx-action digest to f87e599 ( #3274 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-29 14:13:34 +08:00
renovate[bot]
b99987216b
chore(deps): update docker/setup-qemu-action digest to 9901266 ( #3275 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-29 14:13:13 +08:00
renovate[bot]
54720b85c4
chore(deps): update jlumbroso/free-disk-space digest to 36e9a5a ( #3276 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-29 14:12:27 +08:00
25e4eb663f
feat(func): media library ( #2210 )
...
* feat(func): media library
* feat(func): media library
* feat(func): media library
* feat(func): media library build test
* feat(func): media library build test
* feat(func): media library fix remote fetch error
* feat(func): media library fix remote fetch error
* feat(func): media library fix remote fetch error
* feat(func): media library support select
* feat(func): media library support select
* feat(func): media library support select
* feat(func): media library support select
* feat(func): media library support change api url
* feat(func): media library support change api url
* feat(func): media library support change api url
* feat(media): 并发刮削(默认 5)+ 单条落库
增强 TMDB 搜索:模糊匹配 + 多候选关键词
管理页面新增导入/导出媒体库(全部 / 按扫描路径)
缩略图路径默认值改为 imgs
* feat(media): 清空刮削、删除已失效
* fix(media): fix api proxy path
* fix(media): fix lrc file display & music id3
* fix(media): fix media scan sub path error
* feat(media): support cloud codec via ffmpeg
* feat(media): support cloud codec via ffmpeg
* feat(media): support cloud codec via ffmpeg
* feat(media): support cloud codec via ffmpeg
* feat(media): 提升刮削精准度,支持模糊刮削
* fix(media): clean up imports and improve FetchFileReader logic
* feat(media): 提升刮削精准度,支持模糊刮削
* feat(media): 刮削支持自定义刮削数量,避免太占性能
* feat(media): 刮削支持自定义刮削数量,避免太占性能
* feat(media): 刮削修复写入作品名问题
* fix(media): return 404 on missing item_id and fix unscraped item query
- Validate GetMediaItemByID result before spawning goroutine in
StartMediaScrape; return 404 when item_id > 0 but item is not found
- Replace `description` check with `plot` check in GetUnscrappedItems
since scrapers populate Plot, not Description, to avoid re-selecting
already-scraped items on every run
* Apply remaining changes
* feat(media): add master switch, app keys, STRM, Emby and OpenSubsonic APIs
* feat(media): allow any logged-in user to manage their own media app keys
* feat(media): allow signing arbitrary media path for local player
* fix(media): always return an array for media status types
* fix(media): persist per-type scraper config and apply it to thumbnails
* feat(media): add local thumbnail endpoint and cover proxy with fallback gateway
* fix(media): allow guest media access, per-file local thumbnails and optional cover proxy
* feat(media): thumbnail storage modes and STRM same-directory output
* feat(media): Google Books/OpenLibrary sources and remote cover download
* chore(media): rename transcode cache dir to ctmp and log thumbnail storage dir
* feat(media): progress and favorites API shared with Emby/Subsonic
* chore: ignore runtime thumbnail directory
* feat(media): add preferred scrape language and namespace protocol endpoints under @
* fix(media): harden anonymous emby images, pagination and cover proxy SSRF
* fix(emby): allow anonymous user discovery and login before auth
* chore: drop redundant media build workflow and protocol doc
* fix(media): ID3v2.4 syncsafe frame size and preserve Hidden flag on rescan
* fix(media): address security review (path traversal, guest bypass, cover XSS, auth rate limit, SSRF, quotas, migration)
* fix(media): 清理失效条目时只删除确认不存在的记录
此前 fs.Get 返回任何错误都视为失效并硬删除,驱动故障/超时/鉴权失败时会误删有效媒体记录。现在仅 errs.IsObjectNotFound 才删除,其余错误跳过并在响应中返回 skipped 计数。
* fix(transcode): 播放凭据与 Worker 回写凭据分离,并收紧 profile 与鉴权校验
- 新增 Job.PlayToken(json 标签为 -),master/playlist/切片只认播放凭据,播放器不再拿到可上传、可结束任务的 callback_token
- Worker 上传切片时校验 profile 必须属于任务声明的档位
- TCMaster 与 WorkerJobFinish 改用恒定时间比较,避免时序侧信道
* fix(transcode): 含冒号的本地文件名可转码,补基址缺失与重新激活配额
- ValidSourceInput 不再按冒号位置判协议:本地输入只要求以 / 开头或 Windows 盘符路径,concat:/subfile: 等前缀仍被拒且由 -protocol_whitelist 兜底(修复 /mnt/x/Star Wars: IV.mkv 被误判)
- trustedInternalBaseURL 返回空串时直接 503 并给出明确原因,不再拼出 /d/xxx 让 ffmpeg 报文件不存在
- 远程输入白名单收窄为 http,https,tcp,tls(去掉 file 与 crypto)
- Reactivate 复用同一套单用户配额,避免「先让任务闲置取消、再批量激活」绕过 SubmitLimited;配额不足返回 429
- OwnerID 改为配额键:普通用户 user:<id>,访客 guest:<clientIP>,避免单个匿名访客占满全部匿名配额;补充对应单测
* fix(media): 收紧缩略图解码内存、跳过超长条目可见化,并补 CI 单测
- MaxImagePixels 从 64MP 降到 32MP,宽高改 int64 相乘防 32 位溢出,解码阶段加 12 路全局信号量
- 封面解码失败退回原始字节时限制 512KB,避免十几 MB 的 base64 写进 cover 列(豆瓣/本地书籍三处)
- 扫描进度新增 Skipped 计数,入库被跳过的超长路径会在完成消息与日志中体现
- 数据库迁移失败日志补充 OPENLIST_MEDIA_MIGRATE_WIPE=1 的处置提示
- Subsonic 认证只对「确实带了凭据却校验失败」计数,裸探测不再刷新 IP 锁定
- goexif 从 indirect 调整为直接依赖(internal/media/scraper/image.go 直接 import)
- CI 新增 go test ./internal/db/... ./internal/transcode/... ./internal/media/...
* fix(transcode): 配额/队列满时仍放行已缓存切片,并同步 worker 协议白名单
- TCSegment/TCPlaylist: Reactivate 返回 ErrUserQuota/ErrQueueFull 时不再直接 429,改为标记 quotaBlocked,缓存命中的切片与 playlist 仍可读,只有缓存缺失才返回 429
- Reactivate: 补充全局排队上限 (MaxPendingJobs) 检查,避免批量激活顶爆队列,并补单测
- cmd/worker: 远程输入协议白名单与 master 同步为 http,https,tcp,tls(去掉 file/crypto)
- scraper: decodeSem 容量 12 -> 3,避免信号量大于默认刮削并发而形同失效
* feat(emby): 完善客户端兼容层并修复认证锁定,Subsonic 复用统一密钥校验
- Emby: 用户 ID 改用 GUID 并兼容数字/旧 ID;补齐 /Users/{id}/Authenticate、Sessions 与 WebSocket、首页分区、合集/播放列表、字幕流与歌词、Series/Season 结构
- Emby: 版本号返回客户端可接受的兼容版本,/Users/Public 返回可登录用户以渲染用户选择
- Subsonic: 支持 enc: 十六进制密码编码;app key 校验与 Emby 共用 LookUpAppKeyUser
- 限流: 认证被拒时不再刷新锁定过期时间,避免客户端持续轮询把 IP 永久锁死
* fix(media): 认证失败计数增加用户名维度,防止伪造 X-Forwarded-For 绕过锁定
- media_ratelimit: 新增 mediaAuthLockedFor / mediaAuthFailedFor / mediaAuthSucceededFor,IP 与用户名双维度计数;达到上限同样锁定 5 分钟且被拒时不续期
- emby: 按用户名登录与按 id 登录都检查用户名维度;失败计入两个维度,成功清除两个维度
- subsonic: subAuth 与 429 分支改用双维度判定;成功时用真实用户名清理计数(apiKey 认证时 u 参数为空)
- 仍保留主干 5 次/5 分钟的策略,代理信任范围(SetTrustedProxies)留给项目层面单独处理
* fix(media): 匿名封面按访客身份过滤,认证日志脱敏并收紧限流计数
- embyImage: 匿名封面不再走 loadEmbyLibraryAll(全库可见),改为 loadEmbyLibrary(guest):
hidden / base_path 之外 / meta 受保护的条目都不可见,访客被禁用时直接 401
- embyUnauthorized: 只记录 Path、UA 与是否带 token,避免 query 里的 Pw/Password/api_key
和 X-Emby-Authorization 里的设备令牌写进日志
- media_ratelimit: 失败计数 Set 时带 5min TTL,避免 IP/用户名 key 无限增长(用户名来自请求参数)
- auth.loginHash: 锁定期间不再续期,失败计数同样带 TTL,与媒体侧语义一致
- /System/Endpoint: 按 RemoteAddr 判断 IsLocal/IsInNetwork;/System/Info 不再返回真实监听端口
* feat(media): PDF 批注持久化
- 新增 MediaAnnotation 模型:按 (user_id, item_id, remote_id) 唯一,anchor 原样保存查看器批注对象,不重复建模页码/坐标
- GET/POST /fs/media/annotations:读取当前用户批注、按 remote_id 增量 upsert/delete(单条 512KB、单次 8MB、最多 500 条)
- 批注为用户私有数据:未登录返回空列表,访客写入 403,并校验条目可见性与访问权限
- 条目删除 / 清空类型 / 清空扫描路径 / 批量删除时,在同一事务内清理对应批注
* fix(media): 选集签名前校验最终文件权限;转码在 ffprobe 前预检配额
- GetMediaStreamURL / GetMediaStrm: 解析选集后对最终 rawPath 再执行 CanUserAccessPath,避免「目录可见但 meta 隐藏规则禁止其中某个文件」时仍能拿到有效签名(签名之后下载链路不会重跑隐藏规则)
- TranscodePlay: ProbeSource 之前调用 Scheduler.Capacity 预检配额,已满直接 429,不再先起最长 30s 的 ffprobe
- 新增探测并发闸门(全局 8 / 每用户 3),覆盖预检与 SubmitLimited 之间的并发窗口;用 defer 释放,探测 panic 也不会占死槽位
- 补 Capacity 单测
---------
Co-authored-by: j2rong4cn <j2rong@qq.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: pikachuren <pikachuren@example.com >
2026-10-24 17:34:29 +08:00
Yinan Qin
e4ac1c5513
fix(build): security update to go1.27.3 ( #3240 )
2026-10-22 00:49:56 +08:00
Yinan Qin
c16701b94b
fix(build): update cgo-actions version to v1.3.0 and fallback FreeBSD version to 14.4 ( #3130 )
2026-09-24 19:23:21 +08:00
ShenLin and Codex
084c008102
chore(build): replace uncontrolled email domain ( #3103 )
...
- Use the controlled oplist.org domain for embedded build authors
- Update shell and release workflow build metadata
Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com >
Co-authored-by: Codex <267193182+codex@users.noreply.github.com >
2026-09-20 14:25:20 +08:00
ShenLin and Codex
0463da4034
chore(ci): enforce AI disclosures and lock invalid issues ( #3059 )
...
ci(github): enforce AI disclosures and lock invalid issues
- Require exactly one AI disclosure option and a model name when AI is used
- Comment, close, lock, and label issues invalid for missing or malformed AI disclosures or missing model names
- Lock issues closed for unchanged placeholder titles
- Lock issues closed for selecting the unread checklist option
- Exclude AI disclosure options from unchecked task detection
- Skip automatic checks for announcement titles
- Update bilingual closure replies to mention locking and request a new issue
- Split issue replies and PR title checks into separate workflows without changing PR title rules
Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com >
Co-authored-by: Codex <267193182+codex@users.noreply.github.com >
2026-09-08 15:20:36 +08:00
renovate[bot]
6b55a82ffe
chore(deps): update docker/setup-qemu-action digest to 1f40c72 ( #3021 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-05 12:14:09 +08:00
renovate[bot]
93dac1655f
chore(deps): update go toolchain directive to v1.27.1 ( #3024 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-05 12:12:51 +08:00
2bdf16d596
chore(deps): pin dependencies ( #2736 )
...
* chore(deps): pin dependencies
* chore: exclude docker from renovate
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com >
2026-09-01 22:58:15 +08:00
renovate[bot]
394bb8f80e
chore(deps): update go toolchain directive to v1.26.5 ( #2733 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-30 17:25:38 +08:00
renovate[bot]
f6557f3d62
chore(deps): update docker/setup-buildx-action digest to 37fe631 ( #2975 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-29 01:03:14 +08:00
renovate[bot]
9dc6cb29d9
chore(deps): update docker/login-action digest to dbcb813 ( #2974 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-29 01:02:56 +08:00
Yinan Qin
f2f7ee4107
fix(ci): change missed pull_request to pull_request_target ( #2873 )
2026-07-30 00:45:01 +08:00
Yinan Qin
6b92cbd21f
fix(ci): allow pr check to run by default ( #2856 )
2026-07-27 23:52:20 +08:00
renovate[bot]
ff3cb8b931
chore(deps): update actions/setup-go action to v7 ( #2798 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-16 19:50:52 +08:00
renovate[bot]
78db0f7aff
chore(deps): update docker/setup-qemu-action action to v4 ( #2765 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-16 00:35:50 +08:00
renovate[bot]
061c1e2e1e
chore(deps): update docker/setup-buildx-action action to v4 ( #2764 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:30:49 +08:00
renovate[bot]
caed356200
chore(deps): update docker/metadata-action action to v6 ( #2763 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:30:24 +08:00
renovate[bot]
74af297471
chore(deps): update docker/login-action action to v4 ( #2762 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:29:43 +08:00
renovate[bot]
7c54b0e3e4
chore(deps): update docker/build-push-action action to v7 ( #2761 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:29:10 +08:00
renovate[bot]
a632356902
chore(deps): update benjlevesque/short-sha action to v4 ( #2760 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:25:01 +08:00
renovate[bot]
82ea8d0d01
chore(deps): update actions/cache action to v6 ( #2759 )
...
[no ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-14 14:18:52 +08:00
MadDogOwner
bb3bc31609
chore(workflows): upgrade actions ( #2728 )
...
upgrade actions cross all workflow files:
- actions/checkout@v6 -> actions/checkout@v7
- actions/cache@v4 -> actions/cache@v6
- actions/download-artifact@v4 -> actions/download-artifact@v8
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
2026-07-06 21:41:25 +08:00
Yinan Qin
a92d59d35c
fix(build.sh): remove rm -rf .git/ ( #2703 )
...
Signed-off-by: elysia <a.elysia@proton.me >
2026-07-01 17:16:57 +08:00
Yinan Qin
fcae009bd3
fix(workflow): using github-script ( #2701 )
...
* fix(workflow): using github-script
* fix more
Signed-off-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
---------
Signed-off-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
2026-07-01 16:45:15 +08:00
c8306256ff
chore(deps): update go toolchain directive to v1.26.4 ( #2697 )
...
* chore(deps): update go toolchain directive to v1.26.4
* chore(build.sh): update go version for loongarch abi1.0
Signed-off-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
---------
Signed-off-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
Co-authored-by: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com >
2026-07-01 15:37:27 +08:00
Yinan Qin
866793f485
fix(go.mod): update Go version to 1.25 ( #2692 )
...
Signed-off-by: elysia <a.elysia@proton.me >
2026-07-01 11:21:06 +08:00
Yinan Qin
e9ea991584
fix(clean_docker): only fetch up to 10 pages of image versions ( #2680 )
...
fix(clean_docker): only fetch upto 10 pages of image versions
Signed-off-by: Yinan Qin <elysia-best@simplelinux.cn.eu.org >
2026-06-30 15:00:46 +08:00
Yinan Qin
9e55a0111b
feat(actions): add workflow to clean up untagged Docker images ( #2657 )
...
* feat(actions): add workflow to clean up untagged Docker images
Signed-off-by: elysia <a.elysia@proton.me >
* fix(actions): suggestions from codex
Signed-off-by: elysia <a.elysia@proton.me >
* chore: remove cron task
---------
Signed-off-by: elysia <a.elysia@proton.me >
2026-06-29 18:48:15 +08:00
Yinan Qin
5a92dc2834
chore(workflows): update workflow deps and rm 3rd-party actions ( #2600 )
...
Signed-off-by: Elysia <a.elysia@proton.me >
2026-06-12 01:03:44 +08:00
ShenLin
948e87159d
docs(community): update contribution guidelines and templates ( #2507 )
...
优化 PR 模板结构和检查项
增加 PR 中 AI 辅助披露说明和工具范围
在 Issue 模板中增加 AI 辅助内容字段
补充贡献指南中的社区政策和 AI 披露要求
将 Go 版本要求改为以 go.mod 声明为准
修正文档链接和行为准则格式细节
2026-05-25 12:13:22 +08:00
ShenLin
b31ae9c9f6
ci(actions): upgrade actions/checkout to v6 ( #2338 )
...
Replace actions/checkout from v4 to v6 across workflows to prepare for the GitHub Actions Node.js 24 migration and avoid Node.js 20 deprecation risk.
2026-04-10 20:47:45 +08:00
Suyunjing
8d39d636be
fix(build): lock musl outputs to fully static linking in build script and CI workflows ( #2330 )
2026-04-09 20:57:04 +08:00
Suyunjing
7bea29c18e
refactor(db): migrate sqlite to pure-go and add mips compatibility switch ( #2296 )
...
- Switch default SQLite path to github.com/glebarez/sqlite to reduce CGO dependency pressure.
- Introduce a unified openSQLite entry in bootstrap and split driver selection by build tags.
- Add sqlite_cgo_compat fallback for linux mips, mips64, loong64 and mipsle to keep legacy target builds working.
- Update build.sh musl build flow to apply compatibility tag for mips-family targets.
- Update beta_release workflow to pass compatibility tag cleanly and avoid conflicting flag composition.
2026-04-03 01:27:02 +08:00
ShenLin
b5626b275b
chore(ci)!: update issue CI configuration [skip ci] ( #2166 )
2026-02-25 16:32:09 +08:00
MadDogOwner
6861cb4c3b
chore(ci): add breaking change guideline to PR title check ( #2087 )
...
* feat(ci): add PR title validation for breaking changes
Updated regex to allow '!' for breaking changes in PR titles.
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
* chore(pr): Update PR template
Add bilingual instructions for PR title formatting.
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
---------
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
2026-02-06 21:52:06 +08:00
KirCute
27fdd03ec3
fix(ci): change unchecked regex ( #1993 )
...
fix(ci/issue): change unchecked regex
Signed-off-by: KirCute <951206789@qq.com >
2026-01-17 20:00:43 +08:00
Ljcbaby
e6db0bd6ed
chore(.github): update issue templates [no ci] ( #1976 )
...
chore(.github): update issue templates
2026-01-16 12:02:45 +08:00
ShenLin
854415160c
chore(issue templates): require logs ( #1626 )
2025-11-12 13:04:13 +08:00
Yinan Qin
d3bc6321f4
chore(build): update Go version to 1.25.0 across workflows and build scripts ( #1290 )
...
build: update Go version to 1.25.0 across workflows and build scripts
fixes #1286
2025-09-16 18:44:29 +08:00
Suyunjing
433dcd156b
fix(ci): add tag_name to upload assets step ( #1234 )
...
fix(release): add tag_name to upload assets step
2025-09-06 22:51:05 +08:00
MadDogOwner and Yinan Qin
0c27b4bd47
docs(contributing): update guidelines ( #983 )
...
[skip ci]
* docs(contributing): update guidelines
* docs(contributing): clarify fork
* docs(contributing): sync translation
Co-authored-by: Yinan Qin <39023210+elysia-best@users.noreply.github.com >
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
* docs(contributing): add label and cc reminder
* docs(contributing): remove ensure new branch from checklist
* docs(contributing): replace generic GitHub URLs with user-specific ones
* docs(contributing): make branch deletion after PR merge optional
* docs(contributing): keep --recurse-submodules
---------
Signed-off-by: MadDogOwner <xiaoran@xrgzs.top >
Co-authored-by: Yinan Qin <39023210+elysia-best@users.noreply.github.com >
2025-08-24 20:13:11 +08:00
Suyunjing
71ada3b656
fix(ci-sync): fix workflow for syncing Repository ( #1062 )
2025-08-15 18:48:55 +08:00
Suyunjing
dc42f0e226
[skip ci]fix(ci): update sync workflow ( #1061 )
2025-08-15 18:36:52 +08:00
Suyunjing
74bf9f6467
[skip ci]feat(sync): add workflow to sync GitHub repository ( #1060 )
...
feat(sync): add workflow to sync GitHub repository to Gitee
2025-08-15 18:12:29 +08:00
Suyunjing
b9b8eed285
[skip ci]feat(ci): add FRONTEND_REPO variable to workflows and build script ( #1006 )
2025-08-08 16:36:22 +08:00