Resolved conflicts:
- typings.d.ts: Keep both validity fields and platform quota fields in CompanyListItem
- company/Popup.tsx: Merge imports (Card, Col, Row from platform-limit + Dayjs from company-expire)
- company/index.tsx: Keep useAccess and Typography imports needed by company-expire
- rules/index.tsx: Keep validityStatus check from company-expire, adopt simplified clone button from platform-limit
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add validity period fields to company CRUD, display expiry info in
table and profile, and block access for expired companies via a
full-screen guard component.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add userPlatform hook to derive available platforms from company config
- Add platform access section in company popup with MT4/MT5 switch and quota limits
- Add platform access column in company list showing quota usage
- Replace hardcoded platform options with dynamic userPlatform in account/alert/data-source pages
- Add getPlatformList API and extend CompanyListItem typings
- Add i18n translations for platform access related keys
- Update dev proxy target port to 8082
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Implement PermissionGuard component for route-level permission enforcement
- Add tree-based permission checkbox group in role management popup
- Gate SSE connection, unread count fetch, and rule edit actions on user permissions
- Add skip401Refresh option and auto token refresh on 401 response
- Improve alert table with fixed columns, explicit widths, and text ellipsis
- Add i18n entries for permission guide and rule menu descriptions (en/zh)
- Add expo-api nginx proxy configuration
- Add .claude to .gitignore
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>