erio
3de7713017
fix(channel): splice替换model_pricing条目 + 增强调试日志
2026-04-14 09:08:58 +08:00
Wesley Liddick
66bea2b5ed
Merge pull request #1624 from KnowSky404/fix-issue-1613-version-dropdown
...
fix(sidebar): prevent version update dropdown clipping
2026-04-13 22:03:02 +08:00
Wesley Liddick
d949acb1f2
Merge pull request #1603 from Zqysl/qingyu/fix-datatable-mobile-double-render
...
fix(frontend): reduce account usage request fan-out on pagination
2026-04-13 21:48:00 +08:00
knowsky404
b9b52e74c6
fix(sidebar): prevent version dropdown clipping
2026-04-13 19:24:33 +08:00
erio
24f0eebcf7
fix(frontend): lower QR code error correction level to reduce density
...
Closes #1607
2026-04-13 14:07:12 +08:00
qingyuzhang
abe4267553
fix(frontend): lazy load mobile account usage cells
2026-04-13 07:34:07 +08:00
qingyuzhang
3a11348119
fix(frontend): avoid mounting hidden mobile table
2026-04-13 06:55:57 +08:00
shaw
9648c4323f
fix(frontend): resolve TS2352 type assertion error in API client
2026-04-12 18:06:40 +08:00
Wesley Liddick
16126a2c9c
Merge pull request #1545 from Zqysl/qingyu/fix-smooth-sidebar-collapse
...
fix(sidebar): smooth sidebar collapse behavior
2026-04-12 16:36:00 +08:00
Wesley Liddick
9b7b3755fe
Merge pull request #1543 from IanShaw027/fix/messages-dispatch-i18n
...
fix(frontend): 补全 messages 调度国际化文案
2026-04-12 16:35:34 +08:00
qingyuzhang
c520de11de
Merge branch 'main' of github.com:Wei-Shaw/sub2api into qingyu/fix-smooth-sidebar-collapse
...
# Conflicts:
# frontend/src/components/layout/AppSidebar.vue
2026-04-12 06:04:34 +08:00
erio
1def627443
feat(settings): add EasyPay provider recommendation link below enabled providers
2026-04-11 21:13:46 +08:00
erio
64cee0b633
feat(settings): add payment config guide link in payment settings header
2026-04-11 21:13:28 +08:00
erio
6793503ed0
chore: remove sora_client_enabled residuals from frontend types and store
2026-04-11 19:02:25 +08:00
erio
fa833f7684
Merge remote-tracking branch 'upstream/main' into feat/payment-system-v2
...
# Conflicts:
# frontend/src/api/admin/settings.ts
# frontend/src/stores/app.ts
# frontend/src/types/index.ts
# frontend/src/views/admin/SettingsView.vue
2026-04-11 18:25:06 +08:00
erio
d67ecf893d
chore: remove all sora dead code and fork-specific sora_client_enabled
...
Upstream removed sora feature (090_drop_sora.sql) but left i18n keys
and wire.go references. Clean up:
- Remove entire sora i18n block from en.ts and zh.ts (~190 lines)
- Remove sora nav key and unused 'data' settings tab key
- Remove sora_client_enabled from settings (fork-specific)
- Remove SoraMediaCleanupService from wire.go
2026-04-11 18:15:24 +08:00
erio
faee59ee15
fix(payment): propagate reason/metadata in API error responses
...
The API client's error interceptor was dropping the reason and metadata
fields from backend error responses. This caused PaymentView to miss
specific error codes (TOO_MANY_PENDING, CANCEL_RATE_LIMITED) and fall
back to generic error messages.
2026-04-11 17:51:06 +08:00
erio
217b7ea68c
fix(deps): upgrade axios to 1.15.0 to fix GHSA-fvcv-3m26-pcqx
2026-04-11 16:46:46 +08:00
erio
a020fc52c9
fix(payment): pass expires_at for Stripe countdown timer
...
Stripe payment path was setting expiresAt to empty string, causing
PaymentStatusPanel to fall back to hardcoded 30-minute default when
the popup redirect switches to the waiting view.
2026-04-11 16:30:34 +08:00
erio
7515590324
feat(payment): add H5/mobile payment support
...
Backend:
- Parse EasyPay `payurl2` field, prefer H5 link on mobile
- Add `device=mobile` to EasyPay submit.php (popup) mode
- Expand isMobile detection keywords (add ipad/ipod)
Frontend:
- Add `isMobileDevice()` utility (userAgentData + UA regex)
- Mobile + pay_url: direct redirect instead of QR/popup
- Popup blocked fallback: auto-redirect when window.open fails
- Stripe WeChat Pay: dynamic client param (mobile_web vs web)
2026-04-11 13:16:35 +08:00
erio
e3a000e0d4
refactor(payment): code standards fixes and regression repairs
...
Backend:
- Split payment_order.go (546→314 lines) into payment_order_lifecycle.go
- Replace magic strings with constants in factory, easypay, webhook handler
- Add rate limit/validity unit constants in payment_order_lifecycle, payment_service
- Fix critical regression: add PaymentEnabled to GetPublicSettings response
- Add missing migration 099_fix_migrated_purchase_menu_label_icon.sql
Frontend:
- Fix StripePopupView.vue: replace `as any` with typed interface, use extractApiErrorMessage
- Fix AdminOrderTable.vue: replace hardcoded column labels with i18n t() calls
- Fix SubscriptionsView.vue: replace hardcoded Today/Tomorrow with i18n
- Extract duplicate statusBadgeClass/canRefund/formatOrderDateTime to orderUtils.ts
- Add missing i18n keys: common.today, common.tomorrow, payment.orders.orderType/actions
- Remove dead PurchaseSubscriptionView.vue (replaced by PaymentView)
2026-04-11 13:16:35 +08:00
erio
27cd2f8e96
fix(payment): remove purchase_subscription fields replaced by payment system
...
The built-in payment system replaces the old external purchase subscription
iframe approach. Remove purchase_subscription_enabled/url from admin settings
interface and form defaults, as the Payment tab now handles this functionality.
Kept in stores/app.ts fallback to match backend DTO response structure.
2026-04-11 13:16:35 +08:00
erio
e1547d7835
fix(payment): resolve PR audit issues
...
- Add payment navigation to AppSidebar (user orders + admin payment menu group with collapse)
- Add 5 missing nav i18n keys (myOrders, orderManagement, paymentDashboard, paymentConfig, paymentPlans)
- Renumber payment migrations 090-100 → 092-102 to avoid conflict with upstream 090/091
- Remove non-payment sora_client_enabled change, restore upstream purchase_subscription fields
- Remove extra 'data' from SettingsTab type union
2026-04-11 13:16:35 +08:00
erio
63d1860dc0
feat(payment): add complete payment system with multi-provider support
...
Add a full payment and subscription system supporting EasyPay (Alipay/WeChat),
Stripe, and direct Alipay/WeChat Pay providers with multi-instance load balancing.
2026-04-11 13:16:35 +08:00
IanShaw027
f480e57344
fix: align table defaults and preserve sidebar svg colors
2026-04-10 18:27:53 +08:00
IanShaw027
67a05dfccd
fix: honor table defaults and preserve dispatch mappings
2026-04-10 17:55:37 +08:00
IanShaw027
b6bc042302
fix(frontend): 升级 axios 修复审计高危漏洞
2026-04-10 09:28:32 +08:00
qingyuzhang
07d2add674
fix(sidebar): smooth collapse transitions
2026-04-10 05:16:20 +08:00
IanShaw027
57d0f9794f
fix(frontend): 补全 messages 调度国际化文案
2026-04-10 00:56:23 +08:00
IanShaw027
2b70d1d332
merge upstream main into fix/bug-cleanup-main
2026-04-09 21:35:48 +08:00
Wesley Liddick
bbc79796dc
Merge pull request #1529 from IanShaw027/feat/group-messages-dispatch-redo
...
feat: 为openai分组增加messages调度模型映射并支持instructions模板注入
2026-04-09 21:14:38 +08:00
IanShaw027
5f8e60a1b7
feat(table): 表格排序与搜索改为后端处理
2026-04-09 18:14:28 +08:00
IanShaw027
66e15a54a4
fix(export): 导出逻辑与当前筛选条件对齐
2026-04-09 18:14:28 +08:00
IanShaw027
ad80606a44
feat(settings): 增加全局表格分页配置,支持自定义
2026-04-09 18:14:28 +08:00
IanShaw027
d8fa38d55a
fix(account): 修复账号管理中的状态筛选
2026-04-09 18:14:28 +08:00
IanShaw027
fe211fc563
fix(ui): 修复在 macOS 系统下数据表格横向滚动条闪隐和消失的问题
...
问题原因:
原本的 `style.css` 代码全局使用了 W3C 标准属性 (`scrollbar-width`)。而在 Chrome 121+ 以及 Safari 环境下,一旦匹配到 W3C 标准属性,浏览器就会放弃 WebKit 的定制样式,全面交由操作系统原生渲染。因为 macOS 原生的滚动条特性就是“不滚动时自动隐藏”,加之原本又配置了全局 hover 时才显色的透明度逻辑,最终导致在苹果系统下数据表常常无法明显看出横向滚动条。
修复方式:
1. 在 `style.css` 中增加 `@supports (-moz-appearance:none)`,将对全局 `scrollbar-width` 的干预严格隔离限制在 Firefox 浏览器内,防止误伤 Chrome 等 WebKit 系浏览器。
2. 移除旧版代码中对 `.table-wrapper` 直接定义的 `scrollbar-width` 和透明覆盖。
3. 在 `DataTable.vue` 内部,通过 `!important` 将 Webkit 专属定制外观(12px高度,实心圆角灰色轨道)的优先权推至最高,强制覆盖透明隐身规则。
4. 为底层 table 添加了 `min-w-max` 属性,强制阻止内容宽度受限于屏幕边界带来的收缩,充分保证合理超出范围而触发常驻横向溢出。
2026-04-09 15:13:16 +08:00
IanShaw027
de9b9c9dfb
feat(admin): 增加分组 messages 调度映射配置界面
2026-04-09 12:30:25 +08:00
IanShaw027
d765359f4b
test(admin): 增加messages调度表单状态转换测试
2026-04-09 12:30:06 +08:00
ruiqurm
02a66a01c3
feat: support OIDC login.
2026-04-09 02:20:51 +00:00
shaw
e51c9e50b5
feat: sync billing header cc_version with User-Agent and add opt-in CCH signing
...
- Sync cc_version in x-anthropic-billing-header with the fingerprint
User-Agent version, preserving the message-derived suffix
- Implement xxHash64-based CCH signing to replace the cch=00000
placeholder with a computed hash
- Add admin toggle (enable_cch_signing) under gateway forwarding settings,
disabled by default
2026-04-08 16:11:19 +08:00
shaw
7c60ee3c85
feat: Beta策略支持按模型区分处理(模型白名单)
2026-04-07 20:33:09 +08:00
shaw
a07296770c
fix: remove remaining Sora references from frontend
...
The previous Sora removal missed several frontend references, causing
TypeScript build errors for sora_client_enabled and a missing SoraView.vue
import. Clean up all remaining Sora code from types, router, sidebar,
settings, store, and accounts API.
2026-04-05 21:26:47 +08:00
erio
08e69af572
fix: remove empty DataManagement tab from settings (was Sora S3 storage)
2026-04-05 17:22:22 +08:00
erio
294b4bcbac
fix: remove Sora S3 profile code from DataManagementView, keep backup functionality
2026-04-05 17:22:22 +08:00
erio
67008b5d15
fix: restore DataManagementView.vue — incorrectly deleted during Sora removal
...
This component is used by SettingsView.vue for backup/data management.
It was mistakenly deleted as "Sora storage management" but contains
non-Sora backup functionality from upstream.
2026-04-05 17:22:22 +08:00
erio
ff86154a03
refactor: remove unused OpenAIOAuthOptions after Sora platform removal
...
The options parameter only served to switch between 'openai' and 'sora'
platforms. With Sora removed, the parameter is unnecessary.
2026-04-05 17:19:27 +08:00
erio
fcee67e317
fix: remove remaining unused Sora variables causing TypeScript build failure
...
- Remove unused accessTokenInput ref from OAuthAuthorizationFlow
- Remove unused parsedSessionToken* computed and handleValidateSessionToken
- Prefix unused options parameter in useOpenAIOAuth
2026-04-05 17:19:27 +08:00
erio
155900e62f
fix: remove unused Sora references causing TypeScript build failure
...
- Remove handleImportAccessToken event binding from CreateAccountModal
- Remove unused imports/variables from OAuthAuthorizationFlow (useAppStore,
parsedAccessToken*, handleImportAccessToken)
- Remove unused oauthPlatform variable from useOpenAIOAuth composable
2026-04-05 17:19:27 +08:00
erio
62e80c602d
revert: completely remove all Sora functionality
2026-04-05 17:11:01 +08:00
erio
feb6999d9a
fix: channel cache fail-close, group conflict check across pages, status toggle stale data
...
- GetGroupPlatforms failure now stores error-TTL cache and returns error (fail-close)
- Frontend group-to-channel conflict map loads all channels instead of current page only
- Toggle channel status reloads list when active filter would hide the changed item
2026-04-04 11:25:01 +08:00