快速开始

更新日志

发给 ChatGPT / Claude 等 AI,可更快消化本页并上手上站。

Created: 09/05/2026
Updated: 10/21/2026

2026-10-21

  • fix: restore in-progress generation tasks after a page refresh (ac793a8)
  • fix: stop re-submitting a generation when the page closes (b18b421)
  • fix(payment): claw back a refunded order once and end its subscription (1dd6dce)
  • fix(pricing): show and charge USD in every locale (a69f061)
  • fix(billing): block plan changes while a subscription is canceling (b74cfdc) 在 Stripe 后台开启 webhook 事件 charge.refunded,在 Creem 后台开启 refund.created,退款收回积分才会生效。
  • test: drop the partial-repaint test left after its module was removed (70d73f4)
  • fix(billing): don't grant a full period for a same-cycle upgrade (4a0b75a)

2026-10-19

  • feat(auth): localize better-auth json error responses (91fd41d)
  • feat: localize public api error responses (c70b767)
  • feat: add translations for auth and public api errors (d7cca86)
  • fix: accept paraglide message input types in api error translation (f5fc85e)
  • feat: 校准tanstack目录结构,修正nextjs迁移过来的目录和tanstack模板未统一问题 (注意:本次更新改动了目录结构,注意看下多个commit)

2026-10-18

  • chore: track src/core/settings/data.ts excluded by the data* ignore rule (b4af860)
  • feat: add plan changes, tickets, and announcements (06b251d)
  • feat: 支持公告、支付等实现,具体看英文commit

注意:下面shipany-template-gpt-image2 是你 远程D1的dbname
#本地
for f in sql/000{5,6,7,8}_*.sql; do
case "$f" in *.postgres.sql) continue;; esac
echo "==> $f"
sqlite3 -bail data/local.db < "$f" || break
done
#远程D1
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0005_ai_task_lease_slot.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0006_subscription_plan_change.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0007_announcement_ticket.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0008_ticket_permissions.sql

2026-10-17

  • feat: fill payment product ID mapping from a template (f8e19bf)
  • fix: copy immutable redirect headers before adding security headers (b1073a9)
  • fix: mark user-created API keys with the user type (21db982)
  • feat: refresh credit balance from the account menu and settings (b5589da)
  • feat: 同步官方tanstack更新 (f000002)

!!! 注意: 本次更新需要本地和远程跑数据库表同步image
注意:下面shipany-template-gpt-image2 是你 远程D1的dbname
#本地
for f in sql/000{1,2,3,4}_*.sql; do sqlite3 data/local.db < $f; done
#远程D1
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0001_user_attribution.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0002_order_refund.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0003_user_event.sql
npx wrangler d1 execute shipany-template-gpt-image2 --remote --file=sql/0004_admin_agent.sql

2026-10-09

  • feat: 一次性订单金额校验、异常态与管理端人工放行 (88a5f30)
  • feat: 结账按渠道定价,支付宝微信仅支持 CNY 积分包 (b1d296b)
  • feat: 支付渠道实付金额与币种换算上报 (8257ce7)

2026-10-06

  • fix: 拦截扫描探测路径并补安全响应头 (f0e289d)

2026-10-04

  • fix: proxy 无 Content-Length 时强制体大小上限 (8f21642)

2026-09-14

  • feat: 支持gpt image2.5

  • fix: 管理端修改AI配置,隐藏不支持gpt 2.5默认供应商,将kie、apimart作为默认供应商;

  • fix: 管理端增加自定义配置与积分发放,避免空表覆盖和数据库锁;

  • fix: 定价页按实际最低 4积分改单价,不再把单积分标成 $0.02/张。校准 GPT Image 生图渠道与标价,避免走错供应商和按宣传单价亏本;

  • fix: 刷新后可续上生成并自动更新记录;

  • fix: Kie 分辨率与模型 ID 按接口要求透传,版权错误对用户可见。

2026-09-13

  • fix: 对d1数据库的兼容处理

2026-09-09

2026-08-08

1、更新tanstack分支(底层改成基于shipany-tanstack框架,UI不变)tanstack文档
部署Cloudflare的命令不变:yarn cf:deploy 或者pnpm cf:deploy
部署Cloudflare的wrangler.toml参考:

name = "shipany-template-gpt-image2"
main = ".output/server/index.mjs"
compatibility_date = "2026-08-08"
compatibility_flags = ["nodejs_compat"]

[triggers]
# Beijing 00:00 = UTC 16:00
crons = ["0 16 * * *"]

[assets]
binding = "ASSETS"
directory = ".output/public"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "64c5c135190xxxxc103ca" // 注意xxxx是需要改成你的
localConnectionString = "postgres://neondb_owner:npg_4jGl2VAaiZKg@ep-xxxx" // 注意xxxx是需要改成你的

[observability]
enabled = true

[vars]
# app
VITE_APP_URL = "https://xxx.xxxx.xxxx" // 注意xxxx是需要改成你的
VITE_APP_NAME = "GPT Image2"

# theme
VITE_THEME = "default"

# appearance
VITE_APPEARANCE = "dark"

# database
DATABASE_URL = "postgresql://neondb_owner:npg_4jGl2VAaiZKg@ep-blue-hall-amhxxxxx" // 注意xxxx是需要改成你的
DATABASE_PROVIDER = "postgresql"
DB_SINGLETON_ENABLED = "false"
DB_SCHEMA = "public"
DB_MAX_CONNECTIONS = "10"

# auth secret
# openssl rand -base64 32
AUTH_SECRET = "xxxxx" // 注意xxxx是需要改成你的