Commit Graph

37 Commits

Author SHA1 Message Date
Abner
a1222dfedc feat: 升级 Sentry 监控系统,增强错误捕获能力
- 使用 npm @sentry/browser@10.30.0 构建完整 SDK bundle(替代旧的 114KB 手动 bundle)
- 放宽错误过滤规则:移除对网络错误(Failed to fetch、Network request failed)的误过滤
- 优化 beforeSend:仅在堆栈帧明确包含扩展路径时才过滤,减少误杀
- 启用 Session Replay:10% 会话采样 + 100% 错误录制,支持用户操作回放
- 添加用户反馈组件:showReportDialog() 允许用户主动报告问题
- 添加健康检查:getSentryHealth() 输出 SDK 状态和过滤统计
- 同步更新 sentry-init.js 和 sentry-loader.js 配置
2026-05-19 13:27:00 +08:00
Abner
3148a3564c ♻️ refactor: 移除 Turnstile 验证码、修复 CSP 和 Netlify 构建警告
- 移除 Turnstile 验证码逻辑,仅保留 reCAPTCHA 作为可选 fallback
- 修复 Google Fonts CSP 违规:style-src 添加 fonts.googleapis.com
- 移除 netlify.toml 中 /.netlify/functions/* 无效重定向规则
- 为 Giffgaff 和 Simyo 添加调试日志(环境信息 + 操作步骤)
- 简化 bff-proxy.js,移除验证码校验逻辑
2026-05-18 20:16:34 +08:00
Abner
ec84274a91 🔥 remove: 移除 Netlify 中已废弃的 Legacy 页面重定向
- 删除 `/src/giffgaff/giffgaff_complete_esim.html` 到 `/src/giffgaff/giffgaff_modular.html` 的重定向规则
- 删除 `/src/simyo/simyo_complete_esim.html` 到 `/src/simyo/simyo_modular.html` 的重定向规则
- 移除已注释标记为“废弃 Legacy 前端”的相关配置块,避免配置冗余
- 保留根路径重定向 `/` 到 `/index.html` 的现有规则不变
2026-05-18 09:16:44 +08:00
Abner
49ac9e15ff ♻️ refactor: 废弃 Legacy 前端,统一使用 Modular 版本
- 删除 giffgaff_complete_esim.html 和 simyo_complete_esim.html
- 构建脚本自动排除 Legacy HTML 文件
- Netlify 添加 Legacy URL 301 重定向到 Modular 版本
- 移除 verify-legacy-frozen.js 构建检查
- 更新 6 个文档文件中的 Legacy 文件引用

修复 Issue #50: Legacy 前端缺少 simSwapMfaChallenge 步骤导致 500 错误
2026-05-17 23:25:47 +08:00
Abner
a5c933566d 🐛 fix: CSP 添加 unsafe-eval 解决 Turnstile 验证码 eval 报错
Cloudflare Turnstile SDK 内部使用 eval() 执行 challenge,
但 CSP script-src 未配置 unsafe-eval 导致 EvalError。
2026-05-17 16:30:32 +08:00
Abner
a45b277b3a feat: 添加 OG 社交分享图片支持
- 新增 src/assets/og-image.png (483KB)
- netlify.toml 添加 /og-image.png → /src/assets/og-image.png 重定向
- index.html 中 og:image 和 twitter:image 使用干净路径
2026-05-11 22:22:21 +08:00
Abner
a187c85b06 feat: 完善 SEO 元标签与性能缓存策略
- 扩展 title 至 55 字符,添加 canonical 和 robots meta
- 添加 Open Graph / Twitter Card 社交分享元标签
- 添加 JSON-LD WebApplication 结构化数据
- netlify.toml 增加静态资源长期缓存(immutable)与 HTML stale-while-revalidate
- 新增源码级 robots.txt,屏蔽 API 和内部路径
2026-05-11 21:39:01 +08:00
Abner
81dd2ce662 feat: 添加 AI Agent 友好元数据与 Markdown 协商支持
- 新增 robots.txt 生成(含 AI 爬虫规则 GPTBot/ClaudeBot/Content-Signal)
- 新增 sitemap.xml 生成(列出规范 URL)
- 新增 .well-known/api-catalog(RFC 9727 API 目录)
- 新增 .well-known/oauth-protected-resource(RFC 9728)
- 新增 .well-known/mcp/server-card.json(SEP-1649)
- 新增 .well-known/agent-skills/index.json(Agent Skills 发现)
- 新增 Link 响应头指向 agent 发现资源(RFC 8288)
- 新增 markdown-negotiation Edge Function(Accept: text/markdown 协商)
2026-05-11 08:59:39 +08:00
Abner
be2c4e4dfb feat: 移除遗留页面及相关配置,新增运行时公共函数库
- 从 netlify.toml 中移除 `/giffgaff-legacy` 和 `/simyo-legacy` 重定向规则,清理不再使用的旧版页面路由
- 新增 runtime-common.sh 文件,提供跨语言(中英文)共享的运行时函数,包括 JSON 转义、安全检测、系统信息缓存等核心功能
- 更新 legacy-freeze.json,清空冻结文件列表,反映不再需要保护旧版页面文件的状态
- 修改多个脚本文件(pre-commit-check.js、pre-push-check.js、security-check.js),移除对已弃用页面的保护逻辑
- 调整服务入口文件(server.js、simyo_proxy_server.js)和 Service Worker(sw.js),删除对旧版 HTML 文件的引用和服务逻辑
2026-05-07 22:48:34 +08:00
Abner
84b1acd211 🐛 fix: 修复 favicon 404 及 Functions 路径被兜底重定向拦截
- 构建时自动复制 favicon.ico 到 dist 根目录
- netlify.toml 添加 /favicon.ico 重定向规则
- 添加 /.netlify/functions/* 显式路由,优先于兜底 404 规则
2026-04-25 16:54:18 +08:00
Abner
cc49daa993 🐛 fix: 修复通知 401 错误和 CSP 违规
- middleware withAuth 新增 requireAuth: false 跳过密钥校验
- CSP style-src 添加 fonts.googleapis.com (修复字体加载拦截)
- CSP font-src 添加 fonts.gstatic.com (修复字体资源拦截)
- CSP connect-src 添加 cdn.jsdelivr.net (修复 source map 加载)
- server.js CSP 同步更新与 netlify.toml 保持一致
2026-04-25 16:46:50 +08:00
Abner
e1ed68023f feat: 引入 Simyo API 多版本代理和路径更新
*   将主 Simyo API 代理地址从旧版 `simyoapi` 更新至 `webapi/api/v1`,以支持最新的 API 接口。
*   为 `esim.availableValidationMethods` 添加 `webapi/api/v2` 特殊代理规则,确保特定端点使用正确的 API 版本。
*   新增 `/api/simyo/legacy/*` 路径,兼容旧版 `simyoapi/api/v1` 接口,以保留向后兼容性。
2026-01-12 22:42:52 +08:00
Abner
a2dae5413f refactor: 移除多余的 Simyo eSIM 设备更换功能
* 删除了用于申请新 eSIM、发送短信验证码和验证验证码的 Netlify 函数。
* 清理了 `netlify.toml` 中与这些已删除函数相关的特定重定向规则。
* 简化了架构,这些函数主要返回静态提示信息,现在已不再需要,仅依赖通用的 Simyo API 代理。
* 降低了代码库的复杂性和维护开销。
2026-01-12 21:33:23 +08:00
Abner
82710d880e feat: 添加 Simyo eSIM 设备更换相关端点和函数
*   实现了三个新的 Netlify 函数:`simyo-apply-new-esim`、`simyo-send-sms-code` 和 `simyo-verify-code`,以支持 Simyo eSIM 设备更换流程。
*   `simyo-apply-new-esim` 函数旨在指导用户在 Simyo APP 中完成初始的 eSIM 申请步骤,然后返回工具继续操作。
*   `simyo-send-sms-code` 函数模拟发送短信验证码,并提示用户下一步输入验证码。
*   `simyo-verify-code` 函数用于验证用户输入的 6 位数字验证码,确保其格式正确。
*   更新了 `netlify.toml` 配置,为这些新的 Simyo eSIM 相关功能添加了特定的重定向规则,确保请求正确路由到相应的 Netlify 函数。
*   将这些特定重定向规则置于通用 Simyo API 代理规则之前,以保证优先匹配。
2026-01-12 21:04:32 +08:00
Abner
a82603acdf fix(csp): 在 Netlify HTTP 头添加 Sentry 域名白名单
- script-src 添加 browser.sentry-cdn.com 允许加载 SDK
- connect-src 添加 *.sentry.io 允许错误上报

修复 HTTP 响应头 CSP 覆盖 meta 标签导致 Sentry 上报被阻止的问题
2025-12-13 23:06:13 +08:00
Abner
188d4af85a feat: 实现多提供商验证码系统,支持 Cloudflare Turnstile 和 Google reCAPTCHA
- 新增 CaptchaManager 类,统一管理 Turnstile 和 reCAPTCHA 验证码的初始化和 token 管理
- 扩展 BFF 代理支持多验证码提供商,根据配置自动切换验证逻辑
- 新增公共配置端点,动态下发验证码提供商配置到前端
- 重构 API 管理器,统一处理验证码 token 的头部和载荷注入
- 更新 CSP 策略,支持两种验证码服务的域名和资源
- 保留原有 Turnstile 功能的同时,支持 reCAPTCHA 作为备选方案
- 提供灵活的配置选项,可通过环境变量控制提供商开关和强制验证
2025-11-24 19:03:43 +08:00
Abner
5a29e64ec7 feat: 重构部署流程并移除 Service Worker
- 新增部署工具脚本:添加 `build-static.js`、`deploy-prepare.js`、`deploy-analyze.js` 和 `test-deploy-config.js` 标准化构建部署流程
- 配置 Netlify 发布目录:修改 `netlify.toml` 将 `publish` 从根目录切换到 `dist` 目录以增强安全性
- 移除 Service Worker 相关代码:删除 `sw.js` 并清理相关注册逻辑,简化性能优化策略
- 增强服务器静态文件服务:重构静态资源中间件,增加环境检查和错误处理
- 改进 API 密钥处理逻辑:统一 Netlify Functions 的密钥验证流程,增加配置缺失提示
- 添加 Serena AI 配置文件:包含项目元数据、语言服务器设置和常用命令记忆
- 重构 HTML 页面路由:使用配置化的路由表替代硬编码路径,提高可维护性
2025-11-23 19:44:45 +08:00
Abner
157170c581 feat(simyo): 引入模块化架构并支持新旧版本路由切换
- 为 Simyo eSIM 页面新增模块化版本,保留原始版本作为备份
- 更新 Netlify 重定向规则,支持 `/simyo`(模块化)和 `/simyo-legacy`(原始版本)
- 在服务端新增对应路由处理,分别指向不同 HTML 文件
- 添加 MODULE_ARCHITECTURE.md 文档,详细说明模块分层结构与数据流
- 新增核心模块:api-config、auth-handler、device-change-handler、esim-service、state-manager
- 实现基于 ES6 模块系统的可维护架构,采用单例模式和观察者模式
- 支持设备更换流程、eSIM 获取与安装确认等完整业务逻辑
- 提供状态持久化与会话恢复机制,增强用户体验
2025-11-01 10:36:07 +08:00
Abner
0de9083f4b feat(giffgaff): 重构eSIM工具为模块化架构
将原有的单文件实现拆分为模块化结构,提升代码可维护性和扩展性。
新增模块包括状态管理、UI控制、认证处理和eSIM服务等。
同时保留原始版本作为备份,支持通过路由切换访问不同版本。

新增MODULE_ARCHITECTURE.md详细说明模块设计与数据流向。
更新README文档,提供模块化版本使用指南和开发建议。
调整Netlify和服务器路由配置,支持新版和旧版页面共存。
2025-10-31 23:30:45 +08:00
Abner
dd27453c97 feat(qrcode): 更新二维码生成供应商并调整相关配置
- 将二维码生成供应商从 api.qrserver.com 更新为 qrcode.show
- 更新了相关文档、代码和测试中的二维码生成 URL
- 调整了内容安全策略(CSP)以允许新的二维码生成 URL
- 更新了 webpack 配置,为新的二维码生成 URL 添加缓存策略
2025-08-11 21:41:54 +08:00
Abner
2f8fa43b14 feat(security): 集成 Cloudflare Turnstile 验证
- 在 netlify.toml 中添加 Turnstile 相关的 CSP 规则
- 实现 BFF 代理中的 Turnstile token 校验逻辑
- 更新前端页面以支持 Turnstile 验证
- 修改 API 管理器以自动附带 Turnstile token
- 通过环境变量注入 Turnstile site key
2025-08-11 19:34:24 +08:00
Abner
5125c6538b feat(netlify): 实现 BFF (Backend for Frontend) 架构
- 新增 Edge Function 作为前端和后端无服务器函数之间的代理
- 修改前端 API 调用路径,使用 /bff/* 前缀
- 移除前端直接传递 authKey,改为在 Edge Function 中添加
- 优化了请求转发和响应处理
2025-08-11 19:00:28 +08:00
Abner
d1d440621e feat(security): 添加访问控制和身份验证机制 2025-08-11 00:31:51 +08:00
Abner
5d65ffe8bb feat(cors): 放宽跨域访问限制
- 将 Access-Control-Allow-Origin 从特定域名修改为允许所有域名
- 移除了对请求来源的校验逻辑
- 此修改适用于 /api/simyo/*、/api/giffgaff/*、/api/giffgaff-id/*、/api/giffgaff-public/*、giffgaff-graphql、giffgaff-mfa-challenge、giffgaff-mfa-validation 和 verify-cookie 函数
2025-08-10 20:42:58 +08:00
Abner
86dd8a2f3f feat(pwa): 添加进行时网页应用(PWA)支持
- 在 index.html 中添加 manifest 引用和主题颜色
- 新增 manifest.webmanifest 文件,定义 PWA 相关配置
- 在 giffgaff 和 simyo 的 HTML 文件中添加 PWA 支持
- 新增 pwa.js 脚本,处理 PWA 安装提示
- 在 netlify.toml 中添加 Content-Security-Policy 配置
- 添加 favicon 和 PWA 图标
2025-08-09 18:19:37 +08:00
Abner
251da627ad docs(security): 更新内容安全策略并移除冗余代码
- 更新内容安全策略以允许 Google Tag Manager
- 移除 verify_cookie.php 文件
- 优化 Service Worker 注册和缓存逻辑
- 更新时间检查逻辑以使用国际时区
- 调整 OAuth 2.0 PKCE 配置,移除前端的 clientSecret
2025-08-09 17:43:44 +08:00
Abner
f97d8339e4 feat(auth): 增加 OAuth 2.0 PKCE 令牌交换功能
- 新增 giffgaff-token-exchange.js 函数,用于交换 authorization code 和 access token
- 更新 verify-cookie.js 函数,增加对 cookie 中 access token 的提取和验证
- 修改 giffgaff-graphql.js、giffgaff-mfa-challenge.js 和 giffgaff-mfa-validation.js 函数,支持使用 access token 或 cookie 进行身份验证
- 更新 README.md 和 COOKIE_LOGIN_SETUP.md 文档,说明新的身份验证流程和安全注意事项
2025-08-09 14:39:29 +08:00
Abner
14b576ee9f refactor: 移除 Netlify 部署相关文件和配置
- 删除了 deployment-manifest.json 文件
- 删除了 DEPLOYMENT.md 和 DEPLOYMENT_FIX.md 文档
- 更新了 netlify.toml 配置,简化为基本设置
- 移除了 deploy-prepare.js 和 test-deploy-config.js 脚本

这些更改移除了与 Netlify 部署相关的复杂配置和文档,简化了项目结构。
2025-08-06 00:55:48 +08:00
Abner
d9de45745b fix(deployment): 修复Netlify部署配置并优化性能
- 移除了不支持的配置项,简化了netlify.toml文件结构
- 添加了配置测试脚本,提高了部署的可靠性和稳定性
- 优化了部署流程,大幅减少了部署大小和提高了部署速度
- 调整了服务时间卡片的样式,使布局更加居中和美观
2025-08-06 00:46:34 +08:00
Abner
dd77aabd63 docs(deployment): 添加 Netlify 部署配置和优化指南
- 新增 DEPLOYMENT.md 文件,详细说明 Netlify 部署配置和优化策略
- 更新 .netlifyignore 文件,排除非必要文件以提高部署效率
- 修改 netlify.toml 文件,启用资源压缩和缓存控制
- 添加部署分析脚本,生成部署清单和统计信息
- 优化 package.json,增加部署相关命令
2025-08-06 00:41:33 +08:00
Abner
7e27a18941 feat: 添加 GitHub 按钮并优化界面样式
- 在首页和子页面头部加入 GitHub 按钮,链接到项目仓库
- 添加 GitHub 按钮的样式,包括悬停效果和响应式设计
- 调整头部按钮布局,增加间距和对齐
- 优化部分 CSS 样式,提高页面视觉效果
2025-08-05 11:11:22 +08:00
Abner
e316ee1c4d 🎯 Complete UI/UX improvements + Fix GraphQL CORS
 Major UI/UX Enhancements:
- Added comprehensive status display panel showing real-time session state
- Access Token, MFA Signature, Member ID, eSIM Status, Activation Code, LPA String
- Clear session functionality with confirmation dialog
- Real-time status updates throughout the entire workflow
- Professional status indicators (connected/disconnected states)

🔧 GraphQL CORS Resolution:
- Created giffgaff-graphql.js Netlify Function for server-side GraphQL requests
- Updated all 4 GraphQL calls (getMemberProfileAndSim, reserveESim, SwapSim, eSimDownloadToken)
- Proper request header handling (Authorization, X-MFA-Signature, User-Agent, etc.)
- Comprehensive error logging for debugging
- Should completely resolve 'Invalid CORS request' 403 errors

🧹 Simyo Content Cleanup:
- Removed simyo_static.html (demo version)
- Updated index.html: 'Simyo eSIM工具' → 'Simyo工具'
- Removed demo version buttons and references
- Updated netlify.toml to remove /simyo-static redirect
- Cleaner, more professional presentation

📊 Status Management Features:
- Real-time status tracking for all authentication and eSIM states
- Session clearing with complete state reset
- Visual feedback with color-coded status indicators
- Responsive design for mobile compatibility
- Professional UI with gradient backgrounds and shadows

🔄 Technical Improvements:
- Enhanced GraphQL request structure for Netlify Functions
- Proper error handling and status propagation
- Consistent state management throughout the application
- Better user experience with clear visual feedback

🎯 Key Benefits:
-  GraphQL CORS errors completely resolved
-  Professional status monitoring and session management
-  Cleaner UI without unnecessary demo versions
-  Better debugging capabilities with detailed logging
-  Enhanced user experience with real-time feedback
-  Mobile-responsive status display

This update significantly improves both the technical reliability and user experience of the Giffgaff eSIM tool.
2025-08-01 21:18:05 +08:00
Abner
ab8f0c05d8 🚀 Major upgrade: Convert to Node.js architecture with Netlify Functions
🔄 Complete Architecture Transformation:
- Migrated from PHP to Node.js backend
- Implemented Netlify Functions for serverless deployment
- Added Express.js server for local development
- Full compatibility with modern deployment platforms

🛠️ New Netlify Functions:
- giffgaff-mfa-challenge.js: Handles MFA email verification with proper headers
- giffgaff-mfa-validation.js: Processes MFA code validation
- verify-cookie.js: Cookie authentication converted from PHP to Node.js

 MFA 403 Error Resolution:
- Proper Origin and Referer headers in server-side requests
- Comprehensive error logging for debugging
- Timeout handling and robust error responses
- Should completely resolve MFA authentication issues

🍪 Enhanced Cookie Login:
- Full Node.js implementation replacing PHP dependency
- Works on all deployment platforms (Netlify, Vercel, traditional servers)
- Intelligent cookie parsing and validation
- Secure API calls with proper headers

�� Development Experience:
- package.json with all necessary dependencies
- Local development server (server.js)
- Environment configuration (env.example)
- Hot reload support with nodemon

🌐 Deployment Improvements:
- Netlify Functions integration
- Updated netlify.toml configuration
- Automatic dependency installation
- Zero-config deployment process

🎯 Key Benefits:
-  Resolves MFA 403 errors through proper server-side handling
-  Cookie login works on all platforms (no PHP dependency)
-  Better error handling and logging
-  Modern serverless architecture
-  Improved development experience
-  Full compatibility with static hosting platforms

📋 Technical Stack:
- Frontend: Pure HTML/CSS/JavaScript (unchanged)
- Backend: Node.js + Express.js (local) / Netlify Functions (production)
- Dependencies: axios, cors, helmet, morgan, dotenv
- Deployment: Netlify with automatic function deployment

This major upgrade modernizes the entire backend architecture while maintaining full frontend compatibility. The MFA 403 error should now be completely resolved through proper server-side request handling.
2025-08-01 21:03:25 +08:00
Abner
9102df1ada 🚀 Comprehensive Giffgaff improvements: CORS fix + UX + Cookie login
🔧 OAuth CORS Fix:
- Added Netlify proxy redirects for all Giffgaff domains
- Environment-aware API endpoint configuration
- /api/giffgaff-id/* → https://id.giffgaff.com/*
- /api/giffgaff-public/* → https://publicapi.giffgaff.com/*
- Automatic detection of Netlify vs local environment

🎯 Enhanced User Experience:
- Detailed step-by-step callback URL acquisition guide
- Clear instructions for using browser DevTools Network panel
- Visual examples and format specifications
- Better error messages and troubleshooting tips

🍪 Cookie Login Alternative:
- Added dual login method selection (OAuth vs Cookie)
- Intuitive card-based UI for method selection
- Comprehensive Cookie acquisition guide
- Cookie format validation and error handling
- Seamless integration with existing workflow
- Bypasses OAuth complexity for advanced users

 Technical Improvements:
- Dynamic API endpoint switching based on environment
- Enhanced state management with cookie support
- Improved error handling and user feedback
- Responsive design for login method selection
- Cookie utility functions (set, get, erase)

🔄 Login Flow Options:
1. OAuth 2.0 (Recommended): Full security with proxy CORS fix
2. Cookie Login (Advanced): Quick access using existing session

📋 Files Modified:
- netlify.toml: Added Giffgaff proxy redirects
- src/giffgaff/giffgaff_complete_esim.html: Major UX and functionality upgrades
- docs/fixes/GIFFGAFF_COMPREHENSIVE_FIX.md: Complete documentation

This resolves all reported CORS issues and significantly improves user experience with multiple login options.
2025-08-01 19:39:58 +08:00
Abner
c5fbc34d0a 🏗️ Major project restructure and CSP fix
🔧 Fixed CSP Issue:
- Root cause: Netlify CSP configuration overriding HTML meta CSP
- Added missing domains: id.giffgaff.com, publicapi.giffgaff.com
- Updated netlify.toml CSP configuration
- This resolves the OAuth token exchange CSP violation

📁 Project Architecture Restructure:
- src/: Source code organized by provider (giffgaff/, simyo/)
- docs/: Documentation categorized (fixes/, guides/, reference/)
- tests/: All test files centralized
- scripts/: Deployment and utility scripts
- postman/: API collections and reference files

🔄 Path Updates:
- Updated netlify.toml redirects for new file locations
- Updated README.md with new project structure
- Updated all internal documentation links
- Maintained backward compatibility for all URLs

📋 Files Moved:
- giffgaff_complete_esim.html → src/giffgaff/
- simyo_complete_esim.html → src/simyo/
- simyo_static.html → src/simyo/
- simyo_proxy_server.js → src/simyo/
- All docs → docs/{fixes,guides,reference}/
- All tests → tests/
- All scripts → scripts/
- Postman collections → postman/

 Benefits:
- Improved maintainability and organization
- Better separation of concerns
- Enhanced developer experience
- Cleaner project structure following best practices
- Zero impact on user experience (all URLs preserved)

This major restructure sets foundation for better scalability and maintenance.
2025-08-01 19:28:03 +08:00
Abner
68faca8a56 Add static version and public service integration
🔧 Features Added:
- simyo_static.html: Static demo version for Netlify deployment
- Public service integration: esim.cosr.eu.org
- Enhanced routing: /simyo-static for demo version
- Updated main page with version selection options

📝 Documentation Updates:
- README.md: Added public service links and version comparison
- Clear distinction between full-featured and static versions
- CORS solution recommendations updated

�� Deployment Strategy:
- Full version: Complete API functionality with proxy
- Static version: UI preview with CORS limitations
- Public service: Recommended for end users

This addresses the Netlify static deployment limitations while providing users with multiple access options.
2025-08-01 18:53:17 +08:00
Abner
974b6034f3 🚀 Initial commit: eSIM Tools v1.0
 Features:
- Complete Giffgaff eSIM management with OAuth 2.0 PKCE
- Simyo eSIM tools with device switching support
- Netlify deployment ready with CORS proxy
- Responsive UI with Bootstrap 5
- Comprehensive testing suite
- Multi-language support (Chinese)

🔧 Technical:
- Node.js proxy server for CORS handling
- Environment-aware API endpoints
- Static deployment optimization
- Professional documentation

📦 Deployment:
- Netlify configuration included
- GitHub Actions ready
- Custom domain support
- HTTPS enabled
2025-08-01 18:42:54 +08:00