Spaces:
Running
Running
Visual Journal deploy commited on
Commit ·
67447a4
1
Parent(s): 6a6bf47
Deploy eebe13e to Docker Space
Browse files- CHANGELOG.md +18 -21
- README.md +9 -3
- public/hf-space-deploy-marker.json +3 -3
- scripts/check-version-metadata.mjs +1 -1
- scripts/product-branding.test.mjs +10 -0
- src/app/api/deploy-marker/route.ts +1 -1
CHANGELOG.md
CHANGED
|
@@ -6,22 +6,13 @@
|
|
| 6 |
|
| 7 |
## [未发布]
|
| 8 |
|
| 9 |
-
|
| 10 |
|
| 11 |
-
|
| 12 |
-
- 默认上游请求和上游能力探针 User-Agent 统一为 `visual-journal` 品牌标识。
|
| 13 |
-
- Agent 状态库初始化、请求恢复和测试重置遵循显式资源释放顺序;运行中不允许切换状态库配置。
|
| 14 |
-
- 本地部署在启用 WebUI 自动图片清理时要求显式确认,避免发布后立即清理历史图片。
|
| 15 |
-
- Prettier 与 Tailwind 格式化插件升级到当前兼容版本,并收敛现有源码格式。
|
| 16 |
-
|
| 17 |
-
### 修复
|
| 18 |
-
|
| 19 |
-
- 非活动生成表单不再显示当前表单之外的高分辨率流式建议。
|
| 20 |
-
|
| 21 |
-
## [2.2.0] - 2026-07-27
|
| 22 |
|
| 23 |
### 新增
|
| 24 |
|
|
|
|
| 25 |
- 增加工作台生成活动状态播报、短屏布局和 API 设置弹窗的回归测试,覆盖生成、批量、继续编辑和配置草稿生命周期。
|
| 26 |
- 增加共享 DOM 测试辅助模块以及可转发 Node test runner 参数的脚本测试入口。
|
| 27 |
- 增加默认关闭的 WebUI 文件系统图片自动清理,可配置保留天数,并通过运行时能力接口查询配置和最近执行摘要。
|
|
@@ -29,6 +20,11 @@
|
|
| 29 |
|
| 30 |
### 变更
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
- Node.js 最低版本统一为 `22.15.0`,启动器、诊断脚本、客户说明和部署文档使用同一版本门槛。
|
| 33 |
- 安装流程会确认 npm 支持 `--strict-allow-scripts`,避免旧 npm 静默忽略 `allowScripts` 白名单。
|
| 34 |
- 独立启动脚本显式加载 Next.js 运行时环境,测试和版本检查脚本改为支持显式测试文件与 runner 参数。
|
|
@@ -39,6 +35,7 @@
|
|
| 39 |
|
| 40 |
### 修复
|
| 41 |
|
|
|
|
| 42 |
- 修正生成完成、批量进度和继续编辑之间残留活动状态导致的实时播报错误。
|
| 43 |
- 修正 API 设置弹窗常驻挂载后的草稿回填、焦点恢复和重复测试生命周期问题。
|
| 44 |
- 修正移动端运行时状态加载引起的首屏布局位移,并增加键盘跳到主要内容入口。
|
|
@@ -178,12 +175,12 @@
|
|
| 178 |
- 支持基于 OpenAI 兼容 Images API 的本地图片生成和编辑流程。
|
| 179 |
- 增加 Docker 部署支持和多平台启动脚本。
|
| 180 |
|
| 181 |
-
[未发布]: https://github.com/MisonL/
|
| 182 |
-
[2.2.0]: https://github.com/MisonL/
|
| 183 |
-
[2.1.0]: https://github.com/MisonL/
|
| 184 |
-
[2.0.0]: https://github.com/MisonL/
|
| 185 |
-
[1.4.0]: https://github.com/MisonL/
|
| 186 |
-
[1.3.0]: https://github.com/MisonL/
|
| 187 |
-
[1.2.0]: https://github.com/MisonL/
|
| 188 |
-
[1.1.0]: https://github.com/MisonL/
|
| 189 |
-
[1.0.0]: https://github.com/MisonL/
|
|
|
|
| 6 |
|
| 7 |
## [未发布]
|
| 8 |
|
| 9 |
+
暂无变更。
|
| 10 |
|
| 11 |
+
## [2.2.0] - 2026-07-28
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
### 新增
|
| 14 |
|
| 15 |
+
- README 增加 Hugging Face 官方复制入口,供其他用户创建独立的私有 Space;复制流程不会继承正式服务的凭证。
|
| 16 |
- 增加工作台生成活动状态播报、短屏布局和 API 设置弹窗的回归测试,覆盖生成、批量、继续编辑和配置草稿生命周期。
|
| 17 |
- 增加共享 DOM 测试辅助模块以及可转发 Node test runner 参数的脚本测试入口。
|
| 18 |
- 增加默认关闭的 WebUI 文件系统图片自动清理,可配置保留天数,并通过运行时能力接口查询配置和最近执行摘要。
|
|
|
|
| 20 |
|
| 21 |
### 变更
|
| 22 |
|
| 23 |
+
- 产品正式名称统一为“图像手记 / Visual Journal”;现有技术标识保持兼容,并同步更新 Space 卡片、浏览器图标、访问码文案、历史下载名和运维标识。
|
| 24 |
+
- 默认上游请求和上游能力探针 User-Agent 统一为 `visual-journal` 品牌标识。
|
| 25 |
+
- Agent 状态库初始化、请求恢复和测试重置遵循显式资源释放顺序;运行中不允许切换状态库配置。
|
| 26 |
+
- 本地部署在启用 WebUI 自动图片清理时要求显式确认,避免发布后立即清理历史图片。
|
| 27 |
+
- Prettier 与 Tailwind 格式化插件升级到当前兼容版本,并收敛现有源码格式。
|
| 28 |
- Node.js 最低版本统一为 `22.15.0`,启动器、诊断脚本、客户说明和部署文档使用同一版本门槛。
|
| 29 |
- 安装流程会确认 npm 支持 `--strict-allow-scripts`,避免旧 npm 静默忽略 `allowScripts` 白名单。
|
| 30 |
- 独立启动脚本显式加载 Next.js 运行时环境,测试和版本检查脚本改为支持显式测试文件与 runner 参数。
|
|
|
|
| 35 |
|
| 36 |
### 修复
|
| 37 |
|
| 38 |
+
- 非活动生成表单不再显示当前表单之外的高分辨率流式建议。
|
| 39 |
- 修正生成完成、批量进度和继续编辑之间残留活动状态导致的实时播报错误。
|
| 40 |
- 修正 API 设置弹窗常驻挂载后的草稿回填、焦点恢复和重复测试生命周期问题。
|
| 41 |
- 修正移动端运行时状态加载引起的首屏布局位移,并增加键盘跳到主要内容入口。
|
|
|
|
| 175 |
- 支持基于 OpenAI 兼容 Images API 的本地图片生成和编辑流程。
|
| 176 |
- 增加 Docker 部署支持和多平台启动脚本。
|
| 177 |
|
| 178 |
+
[未发布]: https://github.com/MisonL/visual-journal/compare/v2.2.0...HEAD
|
| 179 |
+
[2.2.0]: https://github.com/MisonL/visual-journal/compare/v2.1.0...v2.2.0
|
| 180 |
+
[2.1.0]: https://github.com/MisonL/visual-journal/compare/v2.0.0...v2.1.0
|
| 181 |
+
[2.0.0]: https://github.com/MisonL/visual-journal/compare/v1.4.0...v2.0.0
|
| 182 |
+
[1.4.0]: https://github.com/MisonL/visual-journal/compare/v1.3.0...v1.4.0
|
| 183 |
+
[1.3.0]: https://github.com/MisonL/visual-journal/compare/v1.2.0...v1.3.0
|
| 184 |
+
[1.2.0]: https://github.com/MisonL/visual-journal/compare/v1.1.0...v1.2.0
|
| 185 |
+
[1.1.0]: https://github.com/MisonL/visual-journal/compare/dc7c8f5855e80cb9507517b5748c718e7155df52...v1.1.0
|
| 186 |
+
[1.0.0]: https://github.com/MisonL/visual-journal/commit/dc7c8f5855e80cb9507517b5748c718e7155df52
|
README.md
CHANGED
|
@@ -16,7 +16,7 @@ app_port: 4783
|
|
| 16 |
对外产品名称为“图像手记 / Visual Journal”。为保持已有部署和自动化客户端兼容,仓库包名、Docker 服务、HF Space slug、环境变量、API 路径和 Skill 标识继续使用 `gpt-image-playground` 相关技术名称。
|
| 17 |
|
| 18 |
<p align="center">
|
| 19 |
-
<img src="https://raw.githubusercontent.com/MisonL/
|
| 20 |
</p>
|
| 21 |
|
| 22 |
## 快速开始
|
|
@@ -71,8 +71,8 @@ Windows、macOS 和 Linux 也可分别使用 `start-windows.bat`、`start-macos.
|
|
| 71 |
## 界面预览
|
| 72 |
|
| 73 |
<p align="center">
|
| 74 |
-
<img src="https://raw.githubusercontent.com/MisonL/
|
| 75 |
-
<img src="https://raw.githubusercontent.com/MisonL/
|
| 76 |
</p>
|
| 77 |
|
| 78 |
## 配置
|
|
@@ -142,6 +142,12 @@ GIP_BIND_HOST=0.0.0.0 npm run deploy:local
|
|
| 142 |
|
| 143 |
### Hugging Face Space
|
| 144 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
```bash
|
| 146 |
npm run doctor:hf-space
|
| 147 |
npm run deploy:space
|
|
|
|
| 16 |
对外产品名称为“图像手记 / Visual Journal”。为保持已有部署和自动化客户端兼容,仓库包名、Docker 服务、HF Space slug、环境变量、API 路径和 Skill 标识继续使用 `gpt-image-playground` 相关技术名称。
|
| 17 |
|
| 18 |
<p align="center">
|
| 19 |
+
<img src="https://raw.githubusercontent.com/MisonL/visual-journal/eebe13e18fbb1f099fe4f3313cc68e97fe8b111b/readme-images/interface.jpg" alt="图像手记主界面" width="900"/>
|
| 20 |
</p>
|
| 21 |
|
| 22 |
## 快速开始
|
|
|
|
| 71 |
## 界面预览
|
| 72 |
|
| 73 |
<p align="center">
|
| 74 |
+
<img src="https://raw.githubusercontent.com/MisonL/visual-journal/eebe13e18fbb1f099fe4f3313cc68e97fe8b111b/readme-images/mask-creation.jpg" alt="遮罩编辑界面" width="49%"/>
|
| 75 |
+
<img src="https://raw.githubusercontent.com/MisonL/visual-journal/eebe13e18fbb1f099fe4f3313cc68e97fe8b111b/readme-images/history.jpg" alt="历史与费用面板" width="49%"/>
|
| 76 |
</p>
|
| 77 |
|
| 78 |
## 配置
|
|
|
|
| 142 |
|
| 143 |
### Hugging Face Space
|
| 144 |
|
| 145 |
+
可直接复制官方 Space 到自己的 Hugging Face 账号或组织中,创建独立的私有服务:
|
| 146 |
+
|
| 147 |
+
[](https://huggingface.co/spaces/misonL/gpt-image-playground-customer?duplicate=true)
|
| 148 |
+
|
| 149 |
+
复制流程默认创建私有 Space,不会复制本服务的 API Key、访问码或 Agent token。创建后必须在新 Space 的 Settings 中配置 `APP_PASSWORD`、`AGENT_API_TOKEN` 和自己的上游凭证;Docker Space 的创建资格仍受 Hugging Face 当前账户政策约束。
|
| 150 |
+
|
| 151 |
```bash
|
| 152 |
npm run doctor:hf-space
|
| 153 |
npm run deploy:space
|
public/hf-space-deploy-marker.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema_version": 1,
|
| 3 |
-
"local_sha": "
|
| 4 |
-
"created_at": "2026-07-
|
| 5 |
-
"deploy_id": "
|
| 6 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"schema_version": 1,
|
| 3 |
+
"local_sha": "eebe13e18fbb1f099fe4f3313cc68e97fe8b111b",
|
| 4 |
+
"created_at": "2026-07-28T03:13:21.366Z",
|
| 5 |
+
"deploy_id": "3f0d1a6c-942d-4a7c-86a3-c09d831456df"
|
| 6 |
}
|
scripts/check-version-metadata.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { fileURLToPath } from 'node:url';
|
|
| 6 |
|
| 7 |
const REPO_ROOT = fileURLToPath(new URL('..', import.meta.url));
|
| 8 |
const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
| 9 |
-
const CHANGELOG_BASE_URL = 'https://github.com/MisonL/
|
| 10 |
|
| 11 |
function readText(path) {
|
| 12 |
return readFileSync(join(REPO_ROOT, path), 'utf8');
|
|
|
|
| 6 |
|
| 7 |
const REPO_ROOT = fileURLToPath(new URL('..', import.meta.url));
|
| 8 |
const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
| 9 |
+
const CHANGELOG_BASE_URL = 'https://github.com/MisonL/visual-journal';
|
| 10 |
|
| 11 |
function readText(path) {
|
| 12 |
return readFileSync(join(REPO_ROOT, path), 'utf8');
|
scripts/product-branding.test.mjs
CHANGED
|
@@ -24,6 +24,16 @@ describe('product branding', () => {
|
|
| 24 |
assert.match(favicon, /<title>图像手记 \/ Visual Journal<\/title>/);
|
| 25 |
});
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
it('uses the formal product name in access-code guidance and history downloads', () => {
|
| 28 |
const translations = readRepositoryText('src/lib/i18n.tsx');
|
| 29 |
const page = readRepositoryText('src/app/page.tsx');
|
|
|
|
| 24 |
assert.match(favicon, /<title>图像手记 \/ Visual Journal<\/title>/);
|
| 25 |
});
|
| 26 |
|
| 27 |
+
it('offers an isolated private Hugging Face Space copy without sharing production credentials', () => {
|
| 28 |
+
const readme = readRepositoryText('README.md');
|
| 29 |
+
|
| 30 |
+
assert.match(
|
| 31 |
+
readme,
|
| 32 |
+
/https:\/\/huggingface\.co\/spaces\/misonL\/gpt-image-playground-customer\?duplicate=true/
|
| 33 |
+
);
|
| 34 |
+
assert.match(readme, /复制流程默认创建私有 Space,不会复制本服务的 API Key、访问码或 Agent token。/);
|
| 35 |
+
});
|
| 36 |
+
|
| 37 |
it('uses the formal product name in access-code guidance and history downloads', () => {
|
| 38 |
const translations = readRepositoryText('src/lib/i18n.tsx');
|
| 39 |
const page = readRepositoryText('src/app/page.tsx');
|
src/app/api/deploy-marker/route.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
import { NextResponse } from 'next/server';
|
| 2 |
|
| 3 |
-
const deployMarker = {"schema_version":1,"local_sha":"
|
| 4 |
|
| 5 |
export const dynamic = 'force-dynamic';
|
| 6 |
|
|
|
|
| 1 |
import { NextResponse } from 'next/server';
|
| 2 |
|
| 3 |
+
const deployMarker = {"schema_version":1,"local_sha":"eebe13e18fbb1f099fe4f3313cc68e97fe8b111b","created_at":"2026-07-28T03:13:21.366Z","deploy_id":"3f0d1a6c-942d-4a7c-86a3-c09d831456df"} as const;
|
| 4 |
|
| 5 |
export const dynamic = 'force-dynamic';
|
| 6 |
|