feat: use xpier media library for uploads and markdown embeds
Build and Deploy / verify (push) Successful in 35s
Build and Deploy / deploy (push) Successful in 33s

Store media:ID in article bodies instead of CDN URLs, and keep sablog attach tokens as a fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
gouki
2026-09-16 19:03:52 +00:00
co-authored by Cursor
parent 0b0110a681
commit 64655ced1e
49 changed files with 5615 additions and 2132 deletions
+15 -14
View File
@@ -4,14 +4,14 @@
## 环境
| 项 | 要求 |
|---|---|
| PHP | **8.2+**(`composer.json`) |
| 扩展 | `mbstring`、`openssl`、`pdo`、`tokenizer`、`xml`、`ctype`、`json`、`fileinfo`、`gd`(封面/图片)、`zip` |
| Composer | 2.x |
| 数据库 | 开发可用 SQLite;也可用 MySQL / MariaDB |
| 可选 | Redis(队列/缓存);Node.js 仅在改前端资源时需要 |
| 可选 | `pcntl` + `posix`(本机跑 `workerman:ai`;没有就用 `queue:ai`) |
| 项 | 要求 |
| -------- | ------------------------------------------------------------------------------------------------------- |
| PHP | **8.2+**(`composer.json`) |
| 扩展 | `mbstring`、`openssl`、`pdo`、`tokenizer`、`xml`、`ctype`、`json`、`fileinfo`、`gd`(封面/图片)、`zip` |
| Composer | 2.x |
| 数据库 | 开发可用 SQLite;也可用 MySQL / MariaDB |
| 可选 | Redis(队列/缓存);Node.js 仅在改前端资源时需要 |
| 可选 | `pcntl` + `posix`(本机跑 `workerman:ai`;没有就用 `queue:ai`) |
macOS 可用 Laravel Herd / Valet,指向仓库的 `public/`。也可用 `php artisan serve`。
@@ -41,6 +41,7 @@ DB_CONNECTION=sqlite
# 开发附件落本地,不必配 S3
ATTACHMENTS_DRIVER=local
MEDIA_DISK=public
QUEUE_CONNECTION=database
CACHE_STORE=database
@@ -107,12 +108,12 @@ php artisan queue:ai
## 5. 入口与账号
| 入口 | 地址 |
|---|---|
| 前台 | `/`、`/show-1.shtml`、`/login.shtml` |
| 后台 | `/admin` |
| API | `/api/v1/meta`、`/api/v1/articles` |
| OpenAPI | `/docs/api/openapi.yaml` |
| 入口 | 地址 |
| ------- | ------------------------------------ |
| 前台 | `/`、`/show-1.shtml`、`/login.shtml` |
| 后台 | `/admin` |
| API | `/api/v1/meta`、`/api/v1/articles` |
| OpenAPI | `/docs/api/openapi.yaml` |
演示管理员(`DemoBlogSeeder`):