Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
e4662de
fix(seed): preserve CAS cloud metadata (#78)
wumingzhinu Sep 27, 2026
0a36d0d
fix(ci): make edgeone artifact guard read-only (#76)
wumingzhinu Sep 27, 2026
99c4b03
test(db): type cipher producers (#80)
wumingzhinu Sep 27, 2026
29f7a0a
fix: resolve setup and runtime regressions (#89)
jyxjjj Sep 29, 2026
2da4256
fix(drivers): 修复 remove/move/copy 路径重复拼接与分享复制链接为空 (#90)
Astroptis Sep 29, 2026
bfb963e
build(edgeone): generate cloud-functions artifact at deploy time inst…
PIKACHUIM Sep 29, 2026
6e3d339
fix(test): 移除 DbCipher 重复导入,恢复 tsc 类型检查 (#98)
Mcchen1008 Oct 9, 2026
8caa2ee
fix(webdav): make PROPFIND href a spec-compliant Request-URI referenc…
wumingzhinu Oct 9, 2026
e427f4b
fix(drivers): 修复 github_releases gh_proxy 条件写反导致代理永不生效 (#99)
Mcchen1008 Oct 9, 2026
0e217b5
fix(storage): validate KV proxy health response (#79)
wumingzhinu Oct 9, 2026
af70e86
fix(edgeone): restore server-handler detection via committed handler …
PIKACHUIM Oct 10, 2026
ad1e58d
feat(139): refresh expiring cloud tokens via PC API (#116)
UcnacDx2 Oct 11, 2026
e1d7fa5
feat(drivers): add GitHub Releases and CNB Releases drivers (#108)
lenmei233 Oct 11, 2026
d3b79f8
fix(webdav/driver): href 需带挂载前缀;光鸭云盘上传凭据应读 data.creds (#106)
SXFVCS Oct 11, 2026
89b7345
feat(singleflight): 并发相同调用去重(进程内合并 + 跨实例表协调) (#73)
Wudarensheng Oct 14, 2026
bb2db24
feat(cache): add file-tree and download-link caches (DB by default) (…
Wudarensheng Oct 15, 2026
7a9b9f2
fix(authz): enforce current role, token revocation, S3 permissions (#92)
PIKACHUIM Oct 15, 2026
e40d8bc
feat(driver): add CtFile (城通网盘) storage driver (#123)
wumingzhinu Oct 16, 2026
661a0be
feat(drivers): add Cloudflare R2 driver (Workers binding + S3 API) (#…
PIKACHUIM Oct 16, 2026
5f53f58
fix(store/kv): binding list 兼容 Cloudflare 语义并收敛 list 配额消耗 (#125) (#127)
wumingzhinu Oct 16, 2026
c4d897b
fix(security): close SSRF bypass via IPv4-mapped IPv6, fix IPv6 false…
wumingzhinu Oct 20, 2026
4ab585e
fix(139): throw instead of silently break when folder not found in pa…
PIKACHUIM Oct 20, 2026
0725bd3
fix(guangyapan): 补齐 SMS 短信登录链路,修复配置永远失败 (#136)
wumingzhinu Oct 20, 2026
f9a1c10
refactor(guangyapan): unify persisted-state callback naming/typing; c…
nike64542-byte Oct 20, 2026
113dff7
fix: fail-fast on broken JSON request body; implement fs refresh (#139)
nike64542-byte Oct 20, 2026
c59d8a2
feat(seed): complete transfer seed API surface (#135)
PIKACHUIM Oct 21, 2026
9f09807
test(auth): rebase onto main; keep isolation harness, adopt main F-11…
wumingzhinu Oct 21, 2026
82bd05d
feat(admin): surface QuarkUcTv (夸克TV) driver in management UI (#143)
nike64542-byte Oct 21, 2026
485f4b0
fix(115): 修复 115 驱动(旧驱动失效 + 子目录路径解析失败), fixes #128 (#152)
wumingzhinu Oct 25, 2026
d4e75ba
fix(pikpak): usage=CACHE 无下载链接时回退 usage=FETCH 重新获取 (#154)
lava-lake Oct 26, 2026
2accf7d
fix(auth): 2FA 二维码改用 SVG 生成,修复 Workers 运行时无 canvas 导致 generate 500 (#…
lava-lake Oct 26, 2026
29b7a8e
fix(webdav): decode XML entities in upstream PROPFIND response (#140)…
tanmoumou252 Oct 26, 2026
c241054
fix(esa): support EdgeKV health checks in map mode (#163)
PIKACHUIM Nov 4, 2026
9f1f459
fix(esa): correct the config doc and share the KV health probe key (#…
pikachuren Nov 4, 2026
9b3b35d
fix(esa): 上传链路改用 Uint8Array,修复 Buffer is not defined (#169) (#171)
PIKACHUIM Nov 4, 2026
3abbd68
feat(media): complete media library, Emby and Subsonic parity with Go…
PIKACHUIM Nov 5, 2026
6fd5daa
feat(config): add keep_vars to preserve dashboard env vars on redeplo…
wumingzhinu Nov 9, 2026
ce82869
fix(store): stay within D1's 100 bound-parameter limit when pruning r…
PIKACHUIM Nov 9, 2026
2fdfa9c
refactor(cache)!: remove persistent caches and singleflight dedup, dr…
PIKACHUIM Nov 9, 2026
d6ab379
fix(init): simplify env check messages and refresh README (#188)
PIKACHUIM Nov 9, 2026
fd1c4e0
fix(edgeone): 请求体读不到时返回 503 而不是 400,并在入口预读 JSON body (#170) (#189)
PIKACHUIM Nov 9, 2026
83451ae
refactor(driver): unify put() content type to Uint8Array (#173)
pikachuren Nov 9, 2026
d75a5ab
fix(guangyapan): sync SMS login state via driver callback (#142)
nike64542-byte Nov 9, 2026
2e0f89b
fix(deploy): expose safer-buffer to Wrangler bundler (#160)
PIKACHUIM Nov 9, 2026
38cfdc4
fix(139): keep valid tokens when refresh metadata is absent (#164)
PIKACHUIM Nov 9, 2026
6e11cfb
fix(139): surface SMS verification during refresh fallback (#190)
PIKACHUIM Nov 9, 2026
705f603
fix(auth): honor disabled guest access (#162)
PIKACHUIM Nov 9, 2026
85bac8c
fix(webdav): sign the download redirect to stop 401 on playback (#187)
PIKACHUIM Nov 10, 2026
e6eb21f
fix(mega): handle API Hashcash challenges (#166)
PIKACHUIM Nov 10, 2026
3f004b2
chore: merge upstream OpenListTeam/OpenList-Worker main (49 commits)
claude Nov 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .dev.vars.example
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,18 @@ ADMIN_PASS=
# 留空表示仅允许同源请求。
ALLOW_URLS=

# 传输种子元数据/请求体上限(字节),默认 10485760(10 MiB)。
# 作用于 /seed/parse、/seed/convert、/seed/update、/seed/upload_parse。
SEED_MAX_METADATA_SIZE=10485760

# 额外允许作为种子 source 的主机白名单,逗号/空格/分号分隔,支持 *.example.com。
# 同源 OpenList 的 /d/、/sd/、/@s/ 与 /api/p/ 链接始终允许;留空表示只允许同源链接。
# 兼容旧变量名 ALLOW_SEED(新变量优先)。
SEED_SOURCE_ALLOWED_HOSTS=

# 说明:seed_single_direct_preview 不是环境变量,而是数据库中的站点设置项
# (默认 false)。可在管理后台「设置 → 种子」中修改,单文件种子解析时生效。

# 前端静态资源 CDN 地址(可选)。需指向包含完整前端 dist 的目录(含 index.html)。
# 配置后浏览器直连 CDN 加载 JS/CSS/图片等资源,不再经 Worker 中转。
# 注入自动在两条路径中选择:
Expand Down Expand Up @@ -83,3 +95,8 @@ CF_ACCOUNT=
CF_KV_UUID=
# 具有 KV 读写权限的 API Token
CF_API_KEY=

# ── 持久缓存 / 并发去重均已移除 ─────────────────────────────────────────────
# 目录列表与下载直链每次都直接回源驱动,既不做跨请求缓存,也不合并并发相同
# 调用。相关环境变量(CACHE_* / SINGLEFLIGHT*)已全部删除,残留同名变量不会
# 再被读取。
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,8 @@ CF_ACCOUNT=
CF_KV_UUID=
# 具有 KV 读写权限的 API Token
CF_API_KEY=

# ── 持久缓存 / 并发去重均已移除 ─────────────────────────────────────────────
# 目录列表与下载直链每次都直接回源驱动,既不做跨请求缓存,也不合并并发相同
# 调用。相关环境变量(CACHE_* / SINGLEFLIGHT*)已全部删除,残留同名变量不会
# 再被读取。
100 changes: 100 additions & 0 deletions .github/workflows/build-verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Build Verify

# dist/、dist-server/ 是构建产物,一律不入库;cloud-functions/[[default]].js 与
# node-functions/[[default]].js 是「EdgeOne server-handler 检测占位」(几行的小文件,
# 入库且基本不变),部署构建时由 scripts/build-edge.mjs 在同一路径生成完整产物覆盖:
# - EdgeOne Makers:edgeone.json 的 buildCommand(pnpm run build)在部署时生成
# dist/ 与两处完整产物
# - Cloudflare Workers:wrangler deploy 从 src/backend/worker.ts 打包,并用 dist/ 作静态资源
# - 自托管 Node:node dist-server/api/[...route].js 由 pnpm run build 产出
#
# 因此"部署用的后端代码"完全取决于构建链路能否跑通,本工作流就是这条链路的看门人:
# 按平台一致的顺序安装、拉取前端、构建,并校验产物确实生成;同时断言入库的
# 两处入口仍是占位文件(防止误提交 2MB 构建产物)。任一步失败即失败。

on:
push:
branches:
- main
paths:
- "src/**"
- "api/**"
- "functions/**"
- "scripts/**"
- "middleware.js"
- "edgeone.json"
- "wrangler.jsonc"
- "package.json"
- "pnpm-lock.yaml"
- ".github/workflows/build-verify.yml"
pull_request:
paths:
- "src/**"
- "api/**"
- "functions/**"
- "scripts/**"
- "middleware.js"
- "edgeone.json"
- "wrangler.jsonc"
- "package.json"
- "pnpm-lock.yaml"
- ".github/workflows/build-verify.yml"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: build-verify-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
name: Build and verify artifacts
steps:
- name: Checkout
uses: actions/checkout@v7

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Fetch official frontend dist
run: node scripts/fetch-frontend.mjs

- name: Build edge/serverless artifacts
run: node scripts/build-edge.mjs

- name: Verify artifacts exist
run: |
set -e
test -f dist/index.html
test -f "dist-server/api/[...route].js"
test -f "cloud-functions/[[default]].js"
echo "OK: dist/index.html、dist-server/api/[...route].js、cloud-functions/[[default]].js 均已生成"

# 入库的 cloud-functions/[[default]].js 与 node-functions/[[default]].js 是
# EdgeOne server-handler 检测占位(见文件头注释)——平台按 Git 仓库内容
# 判断项目是否含 Node 后端,真实产物由部署构建在同一路径生成并覆盖。
# 这里断言仓库里跟踪的仍是占位文件:若有人把本地构建出的 2MB 完整产物
# 提交进来,本检查会失败并提示还原为占位内容。
- name: Assert tracked handler entries are the placeholder
run: |
fail=0
for f in "cloud-functions/[[default]].js" "node-functions/[[default]].js"; do
if ! git show "HEAD:$f" | head -1 | grep -q "PLACEHOLDER"; then
echo "::error::$f 在仓库里不是占位文件 —— 疑似误提交了构建产物。请还原为占位内容(产物由部署构建生成,不入库)。"
fail=1
fi
done
if [ "$fail" -ne 0 ]; then exit 1; fi
echo "OK: 两处 server-handler 入口均为占位文件"
115 changes: 0 additions & 115 deletions .github/workflows/edgeone-artifact-guard.yml

This file was deleted.

10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public_data
.idea
.test
.codebuddy
.workbuddy-ai
.vscode
.env
.env.local
Expand All @@ -35,6 +36,7 @@ public_data
# local-only dev config (may contain real secrets; never commit)
wrangler.d1.toml
wrangler.local.jsonc
wrangler.ui.jsonc

# OS files
Thumbs.db
Expand All @@ -49,6 +51,14 @@ pages/dist/
dist-server/
*.tsbuildinfo

# EdgeOne server-handler 检测占位:cloud-functions/[[default]].js 与
# node-functions/[[default]].js 以几行的占位文件入库(平台按 Git 仓库内容判断
# 项目是否含 Node 后端;PR #93 实测仅靠构建期生成会报「No server-handler
# detected」退化为纯静态,/api/* 全部落静态)。部署构建时 scripts/build-edge.mjs
# 会在同一路径生成完整产物(~2MB,不入库)覆盖占位,EdgeOne 运行的是构建产物。
# 占位内容基本永不变更 —— PR 中若出现这两个文件的大段变更,说明误提交了
# 构建产物,请还原为占位内容。

# source maps (optional, can be removed)
*.map
*.js.map
Expand Down
Loading
Loading