release: v1.1.2 — activity logs, storage filter, upload rate limits
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
Bump version and changelog; fix lint issues before release.
This commit is contained in:
1 parent
6fc054328d
commit
55effa204e
7 files changed
+32
-12
No files matched your search
+20
-1
@@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
本仓库自 **v1.0.0** 起作为正式版维护;此前历史提交已归档重置。
|
本仓库自 **v1.0.0** 起作为正式版维护;此前历史提交已归档重置。
|
||||||
|
|
||||||
|
## [1.1.2] - 2026-08-26
|
||||||
|
|
||||||
|
### 新增
|
||||||
|
|
||||||
|
- 操作日志页(`/logs`):记录上传/删除,管理员可查看全部用户并筛选
|
||||||
|
- 图库记录支持按存储后端筛选
|
||||||
|
- 上传 IP / API Token 限流(15 分钟窗口)
|
||||||
|
|
||||||
|
### 改进
|
||||||
|
|
||||||
|
- 操作日志记录存储后端;图库卡片可展示存储来源
|
||||||
|
- 存储筛选下拉固定「本地磁盘」排在第二位
|
||||||
|
- 系统设置页版本号链接至 GitHub Releases
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
|
||||||
|
- 修复删除存储后端后确认弹窗闪出空名称
|
||||||
|
|
||||||
## [1.1.1] - 2026-08-26
|
## [1.1.1] - 2026-08-26
|
||||||
|
|
||||||
### 修复
|
### 修复
|
||||||
@@ -95,8 +113,9 @@
|
|||||||
|
|
||||||
### 路线图
|
### 路线图
|
||||||
|
|
||||||
- **v1.1.1**(当前 `main`):会话校验与存储占位修复、Docker 日志增强
|
- **v1.1.2**(当前 `main`):操作日志、图库存储筛选、上传限流
|
||||||
|
|
||||||
|
[1.1.2]: https://github.com/O96u/PicHost/releases/tag/v1.1.2
|
||||||
[1.1.1]: https://github.com/O96u/PicHost/releases/tag/v1.1.1
|
[1.1.1]: https://github.com/O96u/PicHost/releases/tag/v1.1.1
|
||||||
[1.1.0]: https://github.com/O96u/PicHost/releases/tag/v1.1.0
|
[1.1.0]: https://github.com/O96u/PicHost/releases/tag/v1.1.0
|
||||||
[1.0.4]: https://github.com/O96u/PicHost/releases/tag/v1.0.4
|
[1.0.4]: https://github.com/O96u/PicHost/releases/tag/v1.0.4
|
||||||
|
|||||||
+3
-2
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
| Branch | Notes |
|
| Branch | Notes |
|
||||||
| ------ | ----- |
|
| ------ | ----- |
|
||||||
| [**main**](https://github.com/O96u/PicHost/tree/main) (default) | **v1.1.1** — local disk + multi-backend object storage (R2 / COS / OSS / AWS), [`/storage`](docs/README.md) UI, hybrid URLs |
|
| [**main**](https://github.com/O96u/PicHost/tree/main) (default) | **v1.1.2** — local disk + multi-backend object storage (R2 / COS / OSS / AWS), [`/storage`](docs/README.md) UI, hybrid URLs |
|
||||||
| [**cloudflare**](https://github.com/O96u/PicHost/tree/cloudflare) | **Cloudflare R2–only line** — streamlined for deployments that use R2 exclusively |
|
| [**cloudflare**](https://github.com/O96u/PicHost/tree/cloudflare) | **Cloudflare R2–only line** — streamlined for deployments that use R2 exclusively |
|
||||||
|
|
||||||
Use **main** for the full product and multiple cloud backends.
|
Use **main** for the full product and multiple cloud backends.
|
||||||
@@ -193,7 +193,8 @@ npm test # Unit tests
|
|||||||
|
|
||||||
| Version | Plan |
|
| Version | Plan |
|
||||||
| ---------- | -------------------------------------------------------------- |
|
| ---------- | -------------------------------------------------------------- |
|
||||||
| **v1.1.1** | Session check fixes, storage placeholder cleanup, Docker logging (current `main`) |
|
| **v1.1.2** | Activity logs, gallery storage filter, upload rate limits (current `main`) |
|
||||||
|
| **v1.1.1** | Session check fixes, storage placeholder cleanup, Docker logging |
|
||||||
| **v1.1.0** | Multi-backend object storage, hybrid URLs, storage UI |
|
| **v1.1.0** | Multi-backend object storage, hybrid URLs, storage UI |
|
||||||
| **v1.0.4** | Password visibility toggle, legacy ADMIN_SECRET migration |
|
| **v1.0.4** | Password visibility toggle, legacy ADMIN_SECRET migration |
|
||||||
| **v1.0.3** | CI and Docker multi-arch build fixes |
|
| **v1.0.3** | CI and Docker multi-arch build fixes |
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
| 分支 | 说明 |
|
| 分支 | 说明 |
|
||||||
| ---- | ---- |
|
| ---- | ---- |
|
||||||
| [**main**](https://github.com/O96u/PicHost/tree/main)(默认) | **v1.1.1** 主线:本地磁盘 + 多对象存储后端(R2 / COS / OSS / AWS)、[`/storage`](docs/README.md) 存储管理、混合直链 |
|
| [**main**](https://github.com/O96u/PicHost/tree/main)(默认) | **v1.1.2** 主线:本地磁盘 + 多对象存储后端(R2 / COS / OSS / AWS)、[`/storage`](docs/README.md) 存储管理、混合直链 |
|
||||||
| [**cloudflare**](https://github.com/O96u/PicHost/tree/cloudflare) | **Cloudflare R2 专用线**:面向「只用 R2」的部署,预设与配置更聚焦 R2 |
|
| [**cloudflare**](https://github.com/O96u/PicHost/tree/cloudflare) | **Cloudflare R2 专用线**:面向「只用 R2」的部署,预设与配置更聚焦 R2 |
|
||||||
|
|
||||||
日常使用、需要管理多种存储后端,请直接用 **main**。
|
日常使用、需要管理多种存储后端,请直接用 **main**。
|
||||||
@@ -198,7 +198,8 @@ npm test # 单元测试
|
|||||||
|
|
||||||
| 版本 | 说明 |
|
| 版本 | 说明 |
|
||||||
| ---------- | ------------------------------------------------- |
|
| ---------- | ------------------------------------------------- |
|
||||||
| **v1.1.1** | 会话校验与存储占位修复、Docker 日志增强(当前 main) |
|
| **v1.1.2** | 操作日志、图库存储筛选、上传限流(当前 main) |
|
||||||
|
| **v1.1.1** | 会话校验与存储占位修复、Docker 日志增强 |
|
||||||
| **v1.1.0** | S3 / R2 多后端对象存储、混合直链、存储管理页 |
|
| **v1.1.0** | S3 / R2 多后端对象存储、混合直链、存储管理页 |
|
||||||
| **v1.0.4** | 密码显示切换、遗留 ADMIN_SECRET 迁移对齐 |
|
| **v1.0.4** | 密码显示切换、遗留 ADMIN_SECRET 迁移对齐 |
|
||||||
| **v1.0.3** | CI 与 Docker 多架构构建修复 |
|
| **v1.0.3** | CI 与 Docker 多架构构建修复 |
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "pichost",
|
"name": "pichost",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pichost",
|
"name": "pichost",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pichost",
|
"name": "pichost",
|
||||||
"version": "1.1.1",
|
"version": "1.1.2",
|
||||||
"description": "Self-hosted image hosting for your NAS / home server — Nuxt admin UI, local disk or S3-compatible storage, server-side WebP compression, referer protection, Twikoo/EasyImage compatible.",
|
"description": "Self-hosted image hosting for your NAS / home server — Nuxt admin UI, local disk or S3-compatible storage, server-side WebP compression, referer protection, Twikoo/EasyImage compatible.",
|
||||||
"homepage": "https://github.com/O96u/PicHost#readme",
|
"homepage": "https://github.com/O96u/PicHost#readme",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ import type { StoredImage } from './storage'
|
|||||||
import { getImageBaseUrl } from './env'
|
import { getImageBaseUrl } from './env'
|
||||||
import { getActiveBackendRow } from './storage/resolver'
|
import { getActiveBackendRow } from './storage/resolver'
|
||||||
import { getStorageBackendRow, getStorageBackendFromEnv } from './storage-backends'
|
import { getStorageBackendRow, getStorageBackendFromEnv } from './storage-backends'
|
||||||
import type { StorageBackendType } from './storage/types'
|
import type { StorageBackendType, StorageBackendRow } from './storage/types'
|
||||||
import { buildObjectKey, parseS3Config } from './storage/s3'
|
import { buildObjectKey, parseS3Config } from './storage/s3'
|
||||||
import type { StorageBackendRow } from './storage/types'
|
|
||||||
|
|
||||||
export function resolveImageOwner(
|
export function resolveImageOwner(
|
||||||
userId: number | null | undefined,
|
userId: number | null | undefined,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest'
|
import { describe, expect, it, vi } from 'vitest'
|
||||||
|
|
||||||
|
import { checkUploadRateLimit } from './rate-limit'
|
||||||
|
|
||||||
vi.mock('./logger', () => ({
|
vi.mock('./logger', () => ({
|
||||||
clientIp: (event: { __ip?: string }) => event.__ip ?? '127.0.0.1'
|
clientIp: (event: { __ip?: string }) => event.__ip ?? '127.0.0.1'
|
||||||
}))
|
}))
|
||||||
|
|
||||||
import { checkUploadRateLimit } from './rate-limit'
|
|
||||||
|
|
||||||
function mockEvent(ip = '127.0.0.1', authToken = '') {
|
function mockEvent(ip = '127.0.0.1', authToken = '') {
|
||||||
return {
|
return {
|
||||||
__ip: ip,
|
__ip: ip,
|
||||||
|
|||||||
Reference in new issue
Block a user