Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
cfd7d9e
feat(cloud-storage): add cloud storage worker with React frontend
Arylo Apr 2, 2026
6a77baf
feat(cloud-storage): add file upload feature and enhance video player
Arylo Apr 3, 2026
9a0ecc2
feat(skill): rename linux-native-binding-repair to native-binding-rep…
Arylo Apr 4, 2026
2c6882e
feat(cloud-storage): add multi-file upload support
Arylo Apr 5, 2026
a30dd8c
chore(cloud-storage): switch build command to vite build
Arylo Apr 7, 2026
d33565d
feat(cloud-storage): enhance file list API with cursor pagination sup…
Arylo Apr 7, 2026
be85b8e
fix(cloud-storage): 修复文件排序并添加总数显示
Arylo Apr 7, 2026
08b4ff1
feat(cloud-storage): add pan admin and guest file flows
Arylo Apr 8, 2026
7bba255
feat(cloud-storage): add remove confirmation dialogs, logout, and fix…
Arylo Apr 9, 2026
23df30d
feat(cloud-storage): add toast notification system and UI components
Arylo Apr 9, 2026
9a01f77
feat(cloud-storage): refactor UI components and add file management
Arylo Apr 9, 2026
a292653
feat(cloud-storage): implement guest permission system
Arylo Apr 9, 2026
9c503a5
feat(cloud-storage): add bg image proxy, file dedup, and refine Hono …
Arylo Apr 11, 2026
4a09cd5
feat(cloud-storage): add guest file deletion with canDelete permissio…
Arylo Apr 13, 2026
1127c77
fix(cloud-storage): enforce unique constraint on access codes with re…
Arylo Apr 13, 2026
23679c7
docs(cloud-storage): add glossary, libraries refs and sub-module CLAU…
Arylo Apr 13, 2026
b694988
chore(skills): remove native-binding-repair and update install-native…
Arylo Apr 13, 2026
75e5956
docs(cloud-storage): add per-scenario e2e test docs with role labels
Arylo Apr 13, 2026
217351c
docs(cloud-storage): add CLAUDE.md for e2e test docs directory
Arylo Apr 13, 2026
796b995
docs(cloud-storage): update test documentation and remove deployment …
Arylo Apr 13, 2026
8ccae64
feat(cloud-storage): add GitHub Actions workflow for CI/CD
Arylo Apr 13, 2026
281ee9b
chore: remove redundant outputs from fix:formatter turbo task
Copilot Apr 14, 2026
29f5515
fix(cloud-storage): extract upload perm middleware and fix route para…
Arylo Apr 14, 2026
cf90a90
docs: add cloud-storage scope mapping to commit message standard
Arylo Apr 14, 2026
324a106
chore: upgrade dependencies with linux native bindings sync
Arylo Apr 15, 2026
e0b9b7d
refactor(cloud-storage): rename Components and Pages directories to l…
Arylo Apr 15, 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
5 changes: 3 additions & 2 deletions .claude/skills/commit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ user-invocable: true
4. 检查当前 staged 变更。
5. 如果没有 staged 变更,先将当前工作区改动加入暂存区。
6. 如果 staged 或当前工作区改动中包含 `package.json` 或 `package-lock.json`,需要检查变更内容:
- 如果 `package-lock.json` 有修改 **或者** `package.json` 的 `dependencies` 或 `devDependencies` 部分有修改,必须先执行 `/linux-native-binding-repair`,确认不存在 Linux native binding、optionalDependencies 或 lockfile 跨平台漂移问题
- 如果只有 `package.json` 的其他部分(如 scripts、workspaces 等)修改,且 `package-lock.json` 没有修改,则不需要执行 `/linux-native-binding-repair`。
- 如果 `package-lock.json` 有修改 **或者** `package.json` 的 `dependencies` 或 `devDependencies` 部分有修改,必须先执行 `/install-native-binding`
- 如果只有 `package.json` 的其他部分(如 scripts、workspaces 等)修改,且 `package-lock.json` 没有修改,则不需要执行 `/install-native-binding`。
7. 基于暂存区差异生成 commit message,格式必须是 `<type>(<scope>): <subject>`。
- 如果 staged 文件数量 **> 8**,在 subject 行之后追加 commit message body,列出各核心改动摘要(每行一条,格式 `- <summary>`)。
8. 如果用户传入参数,将其作为 subject,仍需自动补全 type 和 scope。
9. 执行 git 提交。
10. 返回以下结果:
Expand Down
72 changes: 72 additions & 0 deletions .claude/skills/install-native-binding/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: install-native-binding
description: '安装 npm 依赖并确保 Linux native binding 正确生成。在非 Linux 系统上通过 docker/podman 以 linux/amd64 容器执行安装,保证 lockfile 中包含跨平台 native binding。Use when installing dependencies, fixing missing native bindings, or syncing package-lock.json for Linux environments.'
user-invocable: true
---

# Install Native Binding Skill

## 适用场景

- 安装/更新 npm 依赖后需要确保 Linux native binding 正确写入 lockfile
- 在 macOS / Windows 开发机上需要为 Linux 生产环境生成正确的 lockfile
- CI 报告缺少 native binding 或 optionalDependencies 平台条目

## 执行步骤

### 1. 检测当前操作系统

运行 `uname -s` 获取系统类型。

- 若输出为 `Linux`,进入**步骤 2(Linux 路径)**。
- 否则(macOS、Windows 等),进入**步骤 3(非 Linux 路径)**。

### 2. Linux 路径

直接在当前环境运行:

```bash
npm i --include-workspace-root --workspaces
```

完成后跳至**步骤 5**。

### 3. 非 Linux 路径 —— 检测容器运行时

依次检查以下命令是否可用:

```bash
command -v docker
command -v podman
```

- 若两者均不可用,**停止执行**,告知用户需要安装 Docker 或 Podman 后重试。
- 优先使用 `docker`;若 `docker` 不可用则使用 `podman`(以下统称 `<runtime>`)。

### 4. 非 Linux 路径 —— 读取 Node 版本并在容器中安装

#### 4a. 读取 Node 版本

读取仓库根目录的 `.nvmrc` 文件,获取版本号(去掉前缀 `v`),作为镜像 tag。

例如 `.nvmrc` 内容为 `v24.12.0`,则镜像为 `node:24.12.0`。

#### 4b. 在容器中执行安装

```bash
<runtime> run --rm --platform linux/amd64 \
-v "$PWD":/src \
--tmpfs /src/node_modules:exec \
node:<version> \
bash -lc 'cd /src && npm i --include-workspace-root --workspaces'
```

- 挂载当前工作目录为 `/src`(读写,不加 `:ro`),使安装结果(`node_modules`、`package-lock.json`)直接写回宿主机。
- `--tmpfs /src/node_modules:exec` 将容器内的根 `node_modules` 挂载为内存文件系统,避免宿主机的 `node_modules` 被覆盖,同时加速安装;`:exec` 允许 postinstall 脚本执行二进制文件(Docker tmpfs 默认带 `noexec`)。
- `--platform linux/amd64` 确保 native binding 以 Linux x64 平台编译/下载。

## 约束

- 容器挂载目录为当前工作区根目录(即含 `package.json` 和 `package-lock.json` 的目录)
- 不要在容器内部 `cp` 文件;直接挂载读写以避免权限问题
- Node 镜像版本必须严格来自 `.nvmrc`,不得硬编码或猜测
86 changes: 0 additions & 86 deletions .claude/skills/linux-native-binding-repair/SKILL.md

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/caddyfile_sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
cache-dependency-path: package-lock.json

- name: Install dependencies
run: npm ci -ws --include-workspace-root
run: npm ci --workspaces --include-workspace-root

- name: Lint
run: npm run lint
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/cloud_storage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Cloud Storage

on:
push:
paths:
- apps/cf-worker/cloud-storage/**
- package.json
- package-lock.json
- tsconfig.json
- turbo.json
pull_request:
paths:
- apps/cf-worker/cloud-storage/**
- package.json
- package-lock.json
- tsconfig.json
- turbo.json

jobs:
cloud-storage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24.12.0
cache: npm
cache-dependency-path: package-lock.json

- name: Install dependencies
run: npm ci --workspaces --include-workspace-root

- name: Lint
run: npm run lint
env:
TURBO_FILTER: ./apps/cf-worker/cloud-storage

- name: Test
run: npm run test
env:
TURBO_FILTER: ./apps/cf-worker/cloud-storage

- name: Build
run: npm run build --ignore-scripts
env:
TURBO_FILTER: ./apps/cf-worker/cloud-storage
32 changes: 23 additions & 9 deletions .vscode/mcp.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
{
"servers": {
"git": {
"command": "bash",
"args": [
"-c",
"(nvm -h || source $HOME/.nvm/nvm.sh) && (nvm use 20 || nvm install 20) && nvm exec 20 npx -y @cyanheads/git-mcp-server"
]
}
}
"servers": {
"git": {
"command": "npx",
"args": [
"-y",
"@cyanheads/git-mcp-server"
]
},
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp"
]
},
"shadcn": {
"command": "npx",
"args": [
"shadcn@latest",
"mcp"
]
}
}
}
9 changes: 7 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
{
"cSpell.words": [
"arylo"
"arylo",
"qinglong",
"syncpack"
],
"files.associations": {
"wrangler.json": "jsonc"
}
},
"chat.tools.terminal.autoApprove": {
"command": true
Comment on lines +9 to +11
}
}
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
## Claude Skills

- `/commit`:根据当前改动生成并执行规范化 Git 提交
- `/linux-native-binding-repair`:排查并修复 Linux 环境下缺失的 native binding、optionalDependencies 和 package-lock 跨平台漂移问题
- `/install-native-binding`:安装 npm 依赖并确保 Linux native binding 正确生成(非 Linux 系统自动通过 docker/podman 容器执行)

以上能力已迁移到 `.claude/skills/`,按 Claude skill 方式维护与发现。
6 changes: 3 additions & 3 deletions apps/caddyfile-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@
"devDependencies": {
"concurrently": "^8.2.2",
"oxfmt": "^0.35.0",
"oxlint": "^1.24.0",
"rimraf": "^6.0.1",
"oxlint": "^1.58.0",
"rimraf": "^6.1.3",
"typescript": "~5.9.3",
"vitest": "^4.1.0"
"vitest": "^4.1.4"
}
}
8 changes: 8 additions & 0 deletions apps/cf-worker/cloud-storage/.oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"singleQuote": true,
"semi": false,
"sortImports": {
"newlinesBetween": false
},
"ignorePatterns": ["*.md", "dist/**", ".wrangler/**", "src/react-app/Components/**"]
}
10 changes: 10 additions & 0 deletions apps/cf-worker/cloud-storage/.oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"$schema": "../../../node_modules/oxlint/configuration_schema.json",
"plugins": ["import"],
"env": {
"browser": true,
"es6": true
},
"ignorePatterns": ["dist/**", "node_modules/**", "src/react-app/Components/**"],
"rules": {}
}
5 changes: 5 additions & 0 deletions apps/cf-worker/cloud-storage/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"files.associations": {
"wrangler.json": "jsonc"
}
}
34 changes: 34 additions & 0 deletions apps/cf-worker/cloud-storage/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Cloudflare Workers

STOP. Your knowledge of Cloudflare Workers APIs and limits may be outdated. Always retrieve current documentation before any Workers, KV, R2, D1, Durable Objects, Queues, Vectorize, AI, or Agents SDK task.

## Docs

- https://developers.cloudflare.com/workers/
- MCP: `https://docs.mcp.cloudflare.com/mcp`

For all limits and quotas, retrieve from the product's `/platform/limits/` page. eg. `/workers/platform/limits`

## Commands

| Command | Purpose |
|---------|---------|
| `npx wrangler dev` | Local development |
| `npx wrangler deploy` | Deploy to Cloudflare |
| `npx wrangler types` | Generate TypeScript types |

Run `wrangler types` after changing bindings in wrangler.jsonc.

## Node.js Compatibility

https://developers.cloudflare.com/workers/runtime-apis/nodejs/

## Errors

- **Error 1102** (CPU/Memory exceeded): Retrieve limits from `/workers/platform/limits/`
- **All errors**: https://developers.cloudflare.com/workers/observability/errors/

## Product Docs

Retrieve API references and limits from:
`/kv/` · `/r2/` · `/d1/` · `/durable-objects/` · `/queues/` · `/vectorize/` · `/workers-ai/` · `/agents/`
14 changes: 14 additions & 0 deletions apps/cf-worker/cloud-storage/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# CLAUDE.md

## 文档列表

- `目录结构`: ./docs/project_structure.md
- `项目逻辑`: ./docs/project_logic.md
- `项目路线图`: ./Roadmap.md
- `库 / 框架文档位置`: ./docs/libraries.md
- `名词对照表`: ./docs/glossary.md

### 使用教程

- `提取页面`: ./docs/pickup_guide.md
- `管理页面`: ./docs/admin_guide.md
Loading
Loading