shaw
40ea3aebad
feat: add OAuth outbound transport plugin system
2026-08-24 09:03:37 +08:00
Wesley Liddick and GitHub
b2d5ce0395
Merge pull request #5662 from yzxcj797/fix/self-referential-paths
...
docs: fix self-referential URLs after file moved into docs/
2026-08-21 17:47:51 +08:00
Kingsley
58e147fba6
feat(composite): support Codex endpoints
2026-08-19 04:40:32 +00:00
yzxcj797
98c7b0e88e
docs: fix self-referential URLs after file moved into docs/
2026-08-15 11:42:47 +08:00
IanShaw027
825f9c78d5
fix(channel-monitor-v2): default mode v1 and gentle adaptive backfill
...
Default channel_monitor_mode to v1 (opt-in V2) so upgrades keep active
probes; existing explicit v2 rows are left alone via ON CONFLICT DO NOTHING
plus migration checksum compatibility for already-applied 195.
V2 first-enable backfill no longer compresses ticks to 5s or uses 24h
chunks. Each tick does recent overlap plus at most one historical chunk
with depth-based ceilings (2h/4h/6h), adaptive grow/shrink, and failure
backoff. Error request_id dedup is bounded by a 90-minute lookback so
ops_error_logs is not scanned for full history.
Also align hide_throughput parse default with privacy-preserving public
runtime (missing key → true).
2026-08-08 13:59:11 +08:00
Wesley Liddick and GitHub
2c76506e07
Merge pull request #4734 from wjx2951874/feat/alipay-mobile-precreate-deep-link
...
feat(payment): add mobile Alipay precreate deep link
2026-07-23 14:06:18 +08:00
Heatherm Huang
2e774a48b3
Align Grok composite example with live model
2026-07-23 09:20:52 +08:00
Heatherm Huang
ce3272c41b
Build composite subscription bucket two
2026-07-23 09:20:52 +08:00
Heatherm Huang
a008b63c16
Add composite group route registry
2026-07-23 09:20:18 +08:00
Heatherm Huang
c8d1e2e16f
Harden composite group product surfaces
2026-07-23 09:19:25 +08:00
wjx2951874
7914433011
feat(payment): add mobile Alipay precreate deep link
2026-07-22 19:18:04 +08:00
Wesley Liddick and GitHub
8e078534c2
Merge pull request #4648 from creamtea47/codex/fix-mobile-account-actions-menu
...
fix: 修复账号管理移动端更多操作菜单溢出
2026-07-22 09:36:54 +08:00
moonfunjohn
c05b2311d8
docs(payment): update Kyren Topup provider details
...
Update Kyren Topup links, payment fees, and withdrawal fee details
in the English and Chinese payment guides.
2026-07-21 17:09:49 +08:00
NellPoi
53c8ab5b00
fix: 修复账号管理移动端更多操作菜单溢出
2026-07-20 17:18:42 +08:00
haruka and Claude Opus 4.8
b08cab91a9
feat(image-storage): 异步生图对象存储改为后台配置,保存即生效
...
此前开启异步生图必须改服务器上的 config.yaml 并重启容器(#4542),且若想
复用已配置的备份 S3,还得把同一套凭证再填一遍(#4458)。
- 新增 ImageStorageSettingService:配置存 settings 表,SecretAccessKey 经
SecretEncryptor 加密落库、读回脱敏、留空表示沿用旧值,与备份 S3 配置同一套做法。
- reuse_backup_s3(默认开)直接借用 backup_s3_config 的端点与密钥,只用自己的
bucket/prefix 区分对象,因此备份走 backups/、图片走 images/,且密钥不会在库里存两份。
- ImageTaskService 的启用状态改由 ImageStorageResolver 在运行时解析并缓存,
保存设置后 Invalidate 使下次请求重建客户端——不再需要重启。
- repository 侧由提供实例改为提供工厂,客户端才可能在运行期重建。
- 轮询接口的门控从 enabled() 放宽为 Pollable():关掉开关只拒绝新提交,
已受理的任务仍可取回结果,不再被中途吞掉。
- config.yaml 的 image_storage 保留为回落,后台从未保存过时沿用,
升级前已用配置文件开启的部署不受影响。
- 管理端 GET/PUT/POST /admin/backups/image-storage,PUT 与备份 S3 配置一样要求
step-up 2FA:改写存储目标同样能把生成内容导向外部账号。
注:go generate ./cmd/server 在当前 upstream 基线上即失败(securityaudit.
PromptAdminService 缺 provider),故 wire_gen.go 为手工同步。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHreE5pzCkSYz7J45fmd2Y
2026-07-19 00:56:21 -07:00
haruka and Claude Opus 4.8
37db8d031b
fix(config): 让环境变量能真正配置 image_storage 等凭证
...
viper.Unmarshal 只解码 AllKeys() 返回的键,而 AllKeys() 只汇总 SetDefault、
配置文件和显式 BindEnv 三个来源。AutomaticEnv 仅能覆盖已在其中的键,无法引入
新键;能兜底的 viper_bind_struct 又被 build tag 排除(我们只用 -tags embed)。
因此任何「没有注册默认值、且不在 config.yaml 里」的配置项,其环境变量会被静默
丢弃。image_storage 的 endpoint/bucket/access_key_id/secret_access_key/
public_base_url 正属此列,于是纯环境变量部署落到最坏组合:IMAGE_STORAGE_ENABLED
生效使 Enabled=true,四个凭证却为空 → Active()=false → 异步生图接口整体 404,
运维看到的却是"凭证不完整"。deploy/docker-compose.yml 默认就是纯环境变量驱动,
且自动生成的 config.yaml 从不写 image_storage 段,必然踩中(见 #4458、#4542)。
同类缺口不止于此:github_oauth、google_oauth、dingtalk_connect 三组第三方登录
配置(含 client_secret)同样完全无法用环境变量设置。
- 为这些键注册零值默认,使其进入 AllKeys() 而可被环境变量覆盖。零值与"键缺失"
时的解码结果一致,故行为不变。
- sticky_escape_enabled 例外:它的实际默认是 true(靠 IsSet 守卫在解码后补上),
注册 false 会让 IsSet 恒真而永久关闭该特性,故直接注册 true。
- 启动告警补上 missing_keys 字段,指明到底哪个凭证为空。
- 新增反射守卫测试:Config 结构体上每个可由环境变量表达的字段都必须已注册默认值。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHreE5pzCkSYz7J45fmd2Y
2026-07-18 05:24:32 -07:00
haruka and Claude Opus 4.8
0eb6e21aaa
feat: 异步图片任务结果落对象存储
...
为异步生图任务增加 S3 兼容对象存储支持,任务结果不再把大图内联存进 Redis:
- 新增可插拔接口 service.ImageStorage(Save -> url),适配别的厂商只需实现它
- S3 实现 S3ImageStorage(AWS S3 / R2 / 阿里云 OSS / MinIO),与备份共用 S3 客户端构造
- 新增 image_storage 配置(config.yaml + IMAGE_STORAGE_* 环境变量),默认关闭
- enabled 同时作为总开关:关闭或未配置对象存储时,异步生图接口返回 404 且不写
Redis,从根上避免几 MB 的 b64_json 结果撑爆 Redis
- 完成时把图片上传对象存储并把结果改写为短链接(公开直链或 presigned),
上传失败则任务标记为失败
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01SM1tf3CFVRzC7guuhBXvMd
2026-07-15 19:57:37 -07:00
haruka
e5e94d1eb1
docs: document async image task API
2026-07-15 19:57:37 -07:00
Wesley Liddick and GitHub
502097026f
Revert "feat: 支持异步生图任务与结果轮询"
2026-07-16 09:47:27 +08:00
haruka
df247b4364
docs: document async image task API
2026-07-15 22:14:34 +08:00
Turtle_Li
89edba8028
fix: restrict batch image groups to gemini
2026-07-07 04:14:09 +08:00
Turtle_Li
3c43fdec11
docs: add batch image PR readiness notes
2026-07-07 03:31:39 +08:00
Turtle_Li
a994fbd77a
feat: add batch image MVP
2026-07-04 05:30:50 +08:00
shaw
0acf00c4a1
Add admin compliance acknowledgement gate
2026-06-10 14:16:51 +08:00
shaw
7ce5b83215
chore: remove superpowers docs
2026-04-29 21:00:30 +08:00
KnowSky404
54de4e008c
docs: add account bulk edit implementation plan
2026-04-27 17:26:57 +08:00
KnowSky404
65c27d2c69
docs: add account bulk edit scope design
2026-04-27 17:21:11 +08:00
IanShaw027
f35e967516
fix payment qr fallback and admin guidance
2026-04-22 07:33:14 -07:00
shaw
c6d25f69d5
chore: 恢复PAYMENT系列文件
2026-04-22 18:48:40 +08:00
IanShaw027
422f3449a2
chore: remove local docs from repo
2026-04-21 14:54:42 +08:00
IanShaw027
440536a93d
docs: align wechat payment required fields
2026-04-21 11:41:14 +08:00
IanShaw027
f11b7d5105
docs: align payment defaults and wechat capability notes
2026-04-21 02:25:22 +08:00
IanShaw027
07bde2b665
docs: align payment guide with visible routing
2026-04-21 02:17:49 +08:00
IanShaw027
584ded2182
docs: harden auth identity payment design
2026-04-20 14:41:12 +08:00
IanShaw027
b6751f7ebc
docs: add auth identity implementation plan
2026-04-20 13:47:00 +08:00
IanShaw027
721d7ab3ab
docs: add audit synthesis to auth identity spec
2026-04-20 13:40:31 +08:00
IanShaw027
e01c1eaceb
docs: add auth identity payment foundation design spec
2026-04-20 13:18:30 +08:00
erio
0c538a584f
docs: note Kyren Topup $200 account fee waived via referral link
2026-04-18 14:48:47 +08:00
erio
6ae1cc8f3f
docs: use 易支付 in Chinese coexistence note
2026-04-18 14:45:25 +08:00
erio
37123cef8f
docs(payment): add Kyren Topup as international EasyPay provider option
...
Restructure the EasyPay recommendation block to present two options side
by side so users can pick by funding channel and settlement currency:
- Domestic / CNY — ZPay: official Alipay/WeChat API with 1.6% fee and
T+1 automatic settlement (existing recommendation, expanded with fee
and settlement details).
- International / USDT or USD — Kyren Topup (https://kyren.top ): global
payment stack supporting WeChat Pay and Alipay with local-currency
checkout, USD settlement, and USDT/USD withdrawal. Fees: WeChat 2%,
Alipay 2.5%, withdrawal 0.1% ($40 min / $150 max). Fills the gap for
users who cannot use domestic Chinese channels or tolerate Stripe's
6%+ fees.
Both recommendations share a single disclaimer at the end. The Chinese
heading uses "易支付" while the English one keeps "EasyPay".
2026-04-18 14:42:55 +08:00
erio
24f95767b4
docs: align English ZPay referral description with Chinese version
2026-04-11 21:13:08 +08:00
erio
ed001d94da
docs: clarify ZPay referral code belongs to Sub2ApiPay author @touwaeriol
2026-04-11 21:13:07 +08:00
erio
f3e8e5e057
docs: show ZPay URL explicitly in parentheses
2026-04-11 21:13:07 +08:00
erio
3b0dc92952
docs: move ZPay recommendation to overview section
2026-04-11 21:12:47 +08:00
erio
1a686239ed
fix(docs): correct webhook paths and provider config in payment guide
...
- Fix webhook URLs: /payment/webhook/<provider> not /payment/<provider>/notify
- Remove notifyUrl/returnUrl from provider config tables (auto-generated by UI)
- Adjust wxpay publicKeyId/certSerial to match frontend optional marking
2026-04-11 21:11:19 +08:00
erio
c777fe5471
docs: add built-in payment configuration guide and update README
...
- Add docs/PAYMENT.md and docs/PAYMENT_CN.md with full payment setup guide
- Mark Sub2ApiPay as deprecated in ecosystem tables (payment is now built-in)
- Add built-in payment system to features list in all 3 READMEs
2026-04-11 21:10:55 +08:00
erio and Claude Opus 4.6
ebc6755b33
feat(frontend): pass locale to iframe embedded pages via lang parameter
...
Embedded pages (purchase subscription, custom pages) now receive the
current user locale through a `lang` URL parameter, allowing iframe
content to match the user's language preference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 19:38:23 +08:00
shaw
0aa3cf677a
chore: 清理一些无用的文件
2026-03-04 10:15:42 +08:00
erio
23686b1391
refactor(docs): move integration doc to docs/ and add download link in settings
...
- Move ADMIN_PAYMENT_INTEGRATION_API.md → docs/ADMIN_PAYMENT_INTEGRATION_API.md
- Update README.md reference path
- Add payment integration doc download link in admin settings UI (Purchase section)
- Add i18n keys: integrationDoc / integrationDocHint (zh + en)
2026-03-01 18:08:42 +08:00
yangjianbo
50b9897182
docs(perf): 新增后端热点API性能优化审计行动计划
2026-02-22 12:54:21 +08:00