diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml new file mode 100644 index 0000000..cd6ed80 --- /dev/null +++ b/.github/workflows/github-pages.yml @@ -0,0 +1,52 @@ +name: GitHub Pages + +on: + push: + tags: ["v*"] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + + - name: Install dependencies + working-directory: web + run: bun install --frozen-lockfile + + - name: Build + working-directory: web + env: + VITE_BASE: /${{ github.event.repository.name }}/ + run: bun run build + + - name: Add SPA fallback + run: cp web/dist/index.html web/dist/404.html + + - uses: actions/configure-pages@v5 + + - uses: actions/upload-pages-artifact@v3 + with: + path: web/dist + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb6478..4818574 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,11 @@ ## Unreleased -+ [新增] 图片切图支持等分线直接拖拽调整,并可新增、删除和重置横向 / 纵向切图线。 + [新增] 新增Codex App插件支持。 + [新增] 配置与用户偏好新增独立页面和 Codex 连接配置 Tab。 + [修复] 修复生图工作台重试成功结果刷新后丢失的问题。 ++ [新增] 新增GitHub Pages 前端静态站点发布 workflow。 ++ [新增] 图片切图支持等分线直接拖拽调整,并可新增、删除和重置横向 / 纵向切图线。 ## v0.5.0 - 2026-07-05 diff --git a/README.md b/README.md index b74666c..07e2c50 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,20 @@ Linux.do Deploy to Render GitHub stars - Version + Version License Vite React Router

+

+ basketikun%2Finfinite-canvas | Trendshift +

+ +

+ 快速开始 · 功能介绍 · Render 部署 · Docker 部署 · 画布节点操作手册 · 画布快捷键 · 贡献者协议 · 漏洞提交 · 待办事项 · 本地 Canvas Agent · Codex app 插件 +

+ 无限画布是一款面向图片创作的开源工作台。它把画布编排、AI 图片生成、参考图编辑、对话助手、提示词库和素材沉淀放在同一个界面里,适合用来探索视觉方案并连续迭代图片结果。 > [!CAUTION] @@ -34,16 +42,12 @@ 如果你在为担心没有合适的生图API来发愁,可以查看该免费生图项目:[chatgpt2api](https://github.com/basketikun/chatgpt2api) -## 技术栈 - -- 前端:Vite、React、React Router、TypeScript、Tailwind CSS、Ant Design、Zustand、TanStack Query。 -- 前端:提示词库、WebDAV 和 AI 接口都由浏览器前端直连。 -- 部署:静态站点托管或 Docker。 - ## 快速开始 AI API Key、Base URL、画布、素材和生成记录默认保存在浏览器本地。 +### 本地开发 + ```bash git clone git@github.com:basketikun/infinite-canvas.git cd infinite-canvas @@ -52,11 +56,12 @@ bun install bun run dev ``` -Docker 运行: +### Docker 运行 ```bash -docker build -t infinite-canvas . -docker run --rm -p 3000:3000 infinite-canvas +git clone git@github.com:basketikun/infinite-canvas.git +cd infinite-canvas +docker compose up -d ``` 运行后默认端口3000,可访问 `http://localhost:3000`。 @@ -95,19 +100,11 @@ https://canvas.best?apiKey={key}&baseUrl={address} -## 文档 +## 联系方式 -- [快速开始](docs/content/docs/overview/quick-start.mdx) -- [功能介绍](docs/content/docs/overview/features.mdx) -- [Render 部署](docs/content/docs/overview/render.mdx) -- [Docker 部署](docs/content/docs/overview/docker.mdx) -- [画布节点操作手册](docs/content/docs/canvas/canvas-node-manual.mdx) -- [画布快捷键](docs/content/docs/canvas/canvas-shortcuts.mdx) -- [贡献者协议](CLA.md) -- [漏洞提交](SECURITY.md) -- [待办事项](docs/content/docs/progress/todo.mdx) -- [本地 Canvas Agent](canvas-agent/README.md) -- [Codex app 插件](plugins/infinite-canvas) +项目定制二次开发需求 / 生图 API 需求可联系。 + +邮箱:1844025705@qq.com · QQ:1844025705 ## 赞助支持 diff --git a/docs/content/docs/progress/pending-test.mdx b/docs/content/docs/progress/pending-test.mdx index 293804a..d5b16ec 100644 --- a/docs/content/docs/progress/pending-test.mdx +++ b/docs/content/docs/progress/pending-test.mdx @@ -5,6 +5,7 @@ description: 当前版本已实现但仍需人工验证的变更项 # 待测试 +- GitHub Pages:新增版本 tag 触发的前端静态站点自动发布 workflow,需在仓库 Pages 设置中选择 GitHub Actions 并验证路由刷新回退。 - 画布图片切图:行数 / 列数会生成可直接拖拽的等分切图线,并支持新增横向 / 纵向线、删除单条线、重置切图线和切片数量预览。 - Codex App 插件文档:新增插件安装教程,区分 AI 自动安装、手动安装和本仓库开发调试安装;同步优化插件 README 与技能说明。 - 顶部导航:缩小桌面顶部导航栏高度,导航项下划线和内容垂直对齐需确认。 diff --git a/web/vite.config.ts b/web/vite.config.ts index 9327604..a38d304 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -11,6 +11,7 @@ const localVersion = readFileSync(resolve(webDir, "../VERSION"), "utf8").trim() const localChangelog = readFileSync(resolve(webDir, "../CHANGELOG.md"), "utf8"); export default defineConfig({ + base: process.env.VITE_BASE || "/", plugins: [react()], resolve: { alias: {