IanShaw027
6696e61c7b
fix(frontend): preserve callback recovery state
2026-04-22 13:19:41 +08:00
IanShaw027
81c827ee51
fix(profile): stabilize identity binding management
2026-04-22 13:19:28 +08:00
IanShaw027
83cad63ce0
fix(auth): harden oauth callback adoption flows
2026-04-22 13:19:20 +08:00
IanShaw027
06136af805
fix(upgrade): preserve legacy auth and payment compatibility
2026-04-22 13:18:10 +08:00
lucas morgan
6ad333d6b2
fix(openai): 修复生图服务 lint 问题
...
- 移除不安全的类型断言用法
- 补齐响应体关闭与字符串拼接的 lint 问题
- 按 staticcheck 建议简化选择器与条件表达式
2026-04-22 12:54:39 +08:00
IanShaw027
29caf85104
fix(frontend): stabilize wechat payment resume recovery
2026-04-22 12:30:24 +08:00
IanShaw027
d6a04bb772
fix(payment): support source routing and compatible resume signing
2026-04-22 12:30:17 +08:00
lucas morgan
c548021921
feat(openai): 同步生图 API 支持并接入图片计费调度
...
- 同步 OpenAI 图片生成与编辑接口
- 接入图片请求解析、账号调度、转发与用量记录
- 接入图片计费与图片用量落库
- 限制 OAuth 生图仅支持无显式模型和尺寸的基础请求
2026-04-22 12:30:08 +08:00
IanShaw027
b2e0712190
fix(settings): preserve oauth config compatibility on upgrade
2026-04-22 12:30:07 +08:00
IanShaw027
767f2f2dfe
fix(auth): harden pending oauth and backend mode flows
2026-04-22 12:30:00 +08:00
IanShaw027
1ffebbb568
fix(migrations): keep auth identity and payment upgrades safe
2026-04-22 12:29:52 +08:00
IanShaw027
be9df2bea7
fix(auth): scrub legacy pending oauth tokens on upgrade
2026-04-22 11:29:05 +08:00
IanShaw027
9d5e9bbc18
fix(payment): respect configured visible method source
2026-04-22 11:28:58 +08:00
IanShaw027
454873221c
test(auth): strengthen pending oauth legacy token assertions
2026-04-22 11:18:09 +08:00
IanShaw027
18481a100b
fix(migrations): defer online ddl follow-ups safely
2026-04-22 11:17:45 +08:00
IanShaw027
ca1f30a911
fix(auth): harden pending oauth session consumption
2026-04-22 11:17:38 +08:00
IanShaw027
84628108fc
fix(auth): preserve backward-compatible oauth defaults
2026-04-22 11:17:32 +08:00
IanShaw027
dd314c41e3
fix(payment): restore public resume and result flows
2026-04-22 11:17:23 +08:00
IanShaw027
c229f33e9e
fix(review): harden payment, oauth, and migration paths
2026-04-22 10:26:22 +08:00
Wesley Liddick
8eb3f9e789
Merge pull request #1785 from IanShaw027/rebuild/auth-identity-foundation
...
feat(auth,payment): 重构认证身份和支付系统及其他部分优化
2026-04-22 10:14:15 +08:00
IanShaw027
7fbd5177c2
fix(ci): make legacy migration cleanup resilient
2026-04-22 09:15:39 +08:00
IanShaw027
fdf72eb511
fix(ci): repair integration repository tests
2026-04-22 02:42:43 +08:00
IanShaw027
b13e34f831
fix(ci): align auth and payment verification tests
2026-04-22 02:32:53 +08:00
IanShaw027
6d51834a95
refactor(profile): simplify profile page flow
2026-04-22 01:48:09 +08:00
IanShaw027
863258d782
Always show register password hint
2026-04-21 10:15:57 -07:00
IanShaw027
287f2f56d6
Show embedded avatar preview after selection
2026-04-21 10:13:28 -07:00
IanShaw027
525a320424
Fix user profile writes on postgres conflicts
2026-04-21 10:13:28 -07:00
IanShaw027
0f4a8d7be8
feat(profile): redesign profile center layout
2026-04-22 00:54:38 +08:00
IanShaw027
d4c0a99114
feat(auth): support unbinding third-party identities
2026-04-22 00:54:38 +08:00
IanShaw027
89d09838d8
Return bad request for invalid announcements
2026-04-21 09:53:15 -07:00
IanShaw027
0d87f94cb7
Harden adoption decision reassignment
2026-04-21 09:53:15 -07:00
IanShaw027
9bf8ab7048
Fix postgres provider grant queries
2026-04-21 09:53:15 -07:00
IanShaw027
dcbddef611
Merge remote-tracking branch 'origin/rebuild/auth-identity-foundation' into rebuild/auth-identity-foundation
2026-04-22 00:37:40 +08:00
IanShaw027
906802abe3
Fix mobile payment launch detection
2026-04-22 00:36:55 +08:00
IanShaw027
da1d26001f
Merge branch 'main' into rebuild/auth-identity-foundation
2026-04-22 00:35:34 +08:00
IanShaw027
a13ae5a0da
Fix mobile payment launch detection
2026-04-21 09:22:40 -07:00
IanShaw027
e4cfcae652
fix: reassign oauth adoption decisions on repeat login
2026-04-21 23:39:21 +08:00
IanShaw027
11db3989ce
Fix repeated OAuth adoption prompt for existing logins
2026-04-21 23:35:59 +08:00
IanShaw027
40f7e832b4
fix: restore wechat settings compatibility after rebase
2026-04-21 23:26:45 +08:00
IanShaw027
b22d00e541
feat: drive visible payment methods from enabled providers
2026-04-21 23:20:37 +08:00
IanShaw027
54dc176725
feat(settings): support per-channel WeChat OAuth and persist payment options
2026-04-21 07:51:41 -07:00
IanShaw027
d5819181ea
feat(auth): reclaim stale identities and refresh profile UI
2026-04-21 07:49:40 -07:00
IanShaw027
c0371e9104
frontend: align gateway scheduling toggles
2026-04-21 22:38:47 +08:00
IanShaw027
65d3bd728b
frontend: normalize payment error presentation
2026-04-21 22:26:54 +08:00
IanShaw027
20062b44dc
frontend: normalize profile and admin i18n cleanup
2026-04-21 22:26:35 +08:00
IanShaw027
a6b919eb53
frontend: normalize auth oauth i18n and error toasts
2026-04-21 22:26:11 +08:00
erio
1f81b77911
feat(settings): link feature toggles to their config pages
...
Channel Monitor card now links to 渠道管理 > 渠道监控 and the Available
Channels card links to 渠道管理 > 渠道定价 so admins know where to go
after flipping the switch.
2026-04-21 21:59:23 +08:00
erio
6cd7c60549
fix(channels): supported models = mapping ∪ pricing with global LiteLLM fallback
...
Why: channels with model pricing entries but no model mapping (e.g. azcc with
3 priced claude models, no mapping) were rendering as 未配置模型 in the
'Available Channels' page. The algorithm only iterated ModelMapping and
silently dropped any platform without a mapping entry.
Changes:
- channel.go: SupportedModels now unions mapping + pricing entries.
For exact mapping src → target, pricing is looked up by target (the actually
billed name), not by src.
- channel_available.go: ListAvailable enriches each entry with nil pricing
via PricingService.GetModelPricing (global LiteLLM fallback) so the popover
always shows a price.
- channel_service.go: NewChannelService takes *PricingService as 4th param.
- channel_test.go: rewrote 4 tests that froze the old mapping-only semantics;
added pricing-only / mapping-target / target-missing coverage.
2026-04-23 00:45:10 +08:00
erio
25a5035503
fix(available-channels): description as own column, fixed table layout
...
- 描述独立成列:渠道名与描述各占一列,均用 rowspan 纵向合并
- 渠道名单元格 text-center + align-middle,合并后视觉居中
- table-fixed:给 name/description/platform 显式宽度,groups 和
supported_models 在剩余空间均分。支持模型列此前在 table-auto 下
不会换行导致横向溢出遮挡(反馈截图),加 table-fixed 后天然 flex-wrap
- i18n 增加 availableChannels.columns.description(zh/en)
2026-04-22 19:47:03 +08:00
erio
9dae6c7aee
feat(sidebar+groups): available-channels above channel-status; show rate for subscription groups
...
- Sidebar user-side order: /available-channels now sits directly above
/monitor (渠道状态) for regular users, mirroring the admin section where
it sits above /admin/channels.
- GroupBadge gains an alwaysShowRate prop. Subscription groups default to
a "订阅"/days-remaining label; the new flag swaps that for the rate
multiplier while keeping the subscription theme color, so the Available
Channels page can surface rates on every group type.
2026-04-21 22:10:51 +08:00