- parseStoreReview state shown per store with review tag
- UNDER_REVIEW/APPROVED stores are disabled + labeled "审核进行中,将跳过"
- openSubmitStoreDialog filters them out of default selectedStores
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ops-platform: add 一键转移 button and dialog to AppListView; add transferApp API call
- tenant-platform/update: parallel upload toggle in 凭据配置 tab; REVIEW_WEBHOOK notifyType select (钉钉/企微/飞书/自定义); select field support in store config dialog with visibleWhen
- tenant-platform/jwt: fix Chinese garble in right-corner nickname by decoding JWT payload as UTF-8 via TextDecoder instead of raw atob()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add IM real-time notification for service activation approval/rejection
(LicenseManagementView, PushManagementView, AppDetailView)
- Add retry button for FAILED and REJECTED stores in version review detail
- Refactor storeReviewRealtime to single shared IM connection
- Bump @xuqm/vue3-sdk to 0.2.3 (fixes sendSync crash when SDK uninitialized)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Android: correct version header 0.5.x→0.4.x, add sdk-license to module table, update artifact versions to 0.4.10
- iOS: correct min version iOS 14→16, bump version to 0.2.0, update SPM ref to from: "0.2.0"
- RN: fix version 0.3.x→0.2.x, standardize npm registry URL, add @xuqm/rn-license to module table
- Flutter: update git ref to v0.2.2, add xuqm_flutter_license to module tables
- Add new docs: ios/license, rn/push, rn/license, flutter/push, flutter/update, flutter/license
- tenant-platform: make appKey a computed ref in Push/VersionManagementView to fix service gating reactivity on route change
- tenant-platform: add requestActivation API endpoint
- tenant-platform: add IM service gating UI (checkServiceEnabled + activation dialog)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add sidebar sub-menu for 服务管理 (IM / 离线推送 / 版本管理)
- Service pages load directly with optional appId route param
- Each service page shows a portal bar (app selector) when accessed via /services/* path
- Content is guarded with v-if so empty state shows when no app is selected
- Router-view keyed by path so component re-creates on app switch
- App-level package name split into Android/iOS/HarmonyOS fields
- Push vendor channel config: Xiaomi channelId, Huawei category, vivo category+receiptId, OPPO channelId
- Remove packageName from push vendor config (moved to app-level)
- Format device last-login time in push management view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>