Abner
de35542bc9
🐛 fix: 修正 Simyo QR 码支持描述
...
- Simyo 官方不支持 QR 码,但本工具可生成 eSIM QR 码
- 更新教程、对比表、FAQ 中的相关描述
2026-05-11 09:20:56 +08:00
Abner
4308c302bb
✨ feat: 根据 GEO 报告优化首页内容结构
...
- 添加设备兼容性说明(Apple/Android 设备列表 + EID 检查方法)
- 添加 Giffgaff/Simyo 分步使用教程
- 添加与官方 App 的对比表格
- 添加地区与时间限制说明(Giffgaff UK 时间窗口、Simyo NL 地区)
- 添加技术术语解释(OAuth、GraphQL、LPA、SM-DP+、MFA、EID)
- 添加 FAQ 常见问题(6 个高频问题)
- 添加安全声明区块(第三方工具风险、建议使用非主力号码)
- 更新 Markdown for Agents 主页内容
2026-05-11 09:19:43 +08:00
Abner
a1628aa33a
🐛 fix(security): 修复全部 76 个 CodeQL 安全扫描告警
...
修复 GitHub 代码扫描发现的所有安全问题,涵盖 20 个文件、76 个告警:
- Actions 工作流:添加 Fork 仓库限制、来源验证、persist-credentials: false、移除 npm cache
- 明文存储:localStorage 迁移到 secureStorage (sessionStorage + TTL)
- 日志注入:新增 sanitizeLog() 过滤换行符,覆盖全部 console.log 调用
- SSRF:新增 isAllowedTarget() 域名白名单校验
- SRI 完整性:为 Bootstrap/Font Awesome/GTM 添加 integrity + crossorigin
- XSS 防护:错误消息 HTML 转义、Service Worker origin 验证
- URL 清洗:hostname.includes() 替换为精确域名匹配
- HTML 过滤:扩展标签黑名单、添加事件属性过滤
- 限流:全局引入 createRateLimiter (200 req/min/IP)
2026-05-06 21:46:25 +08:00
Abner
35fc5a842d
⏪ ️ revert(ui): 撤回浏览器兼容提醒改动
2026-04-11 23:03:28 +08:00
Abner
381d16df07
✨ feat(ui): 新增首页与子页面浏览器兼容提醒
2026-04-11 22:50:20 +08:00
Abner
59236bef15
docs: 更新 Ko-fi 按钮的文本
...
- 将 Ko-fi 按钮的文本从“Support Me”更改为“Buy Me a Coffee”。
- 此更改旨在更清晰地传达用户可以通过 Ko-fi 进行的互动方式。
- 保持了链接的目标和功能不变。
2026-03-19 19:24:37 +08:00
Abner
62e1363563
feat: 添加 Ko-fi 赞助按钮和改进样式
...
- 在首页、Giffgaff 和 Simyo 页面中添加了 Ko-fi 赞助按钮,方便用户支持项目。
- 引入了新的 `.header-actions` CSS 类,用于统一管理按钮组的布局和间距。
- 优化了按钮的样式,使其更具现代感和一致性,包括悬停效果和焦点状态。
- 为新增的 Ko-fi 按钮添加了相应的国际化文本和 ARIA 标签。
- 调整了移动端响应式样式,确保按钮在小屏幕设备上也能良好显示。
- 统一了 GitHub 和 Ko-fi 按钮的样式,使其在视觉上更协调。
- 更新了设计系统 CSS 文件,添加了新的按钮组样式和响应式适配。
2026-03-19 19:10:01 +08:00
Abner
f330b42b04
fix(csp): 修复 Sentry 上报被 CSP 阻止的问题
...
- 将 CSP connect-src 中的 `*.ingest.sentry.io` 改为 `*.sentry.io`
- 原因:Sentry 使用 `o493416.ingest.us.sentry.io` 多级子域名
- 通配符 `*.ingest.sentry.io` 不匹配多级子域名
2025-12-13 22:56:20 +08:00
Abner
d8b06136dc
fix(sentry): 修复 Sentry SDK 加载问题,改用 CDN 方式
...
由于项目使用原生 ES 模块而非 webpack 打包,npm 导入方式无法工作。
改用 CDN 动态加载方案:
- 新增 src/js/sentry-loader.js:从 CDN 动态加载 Sentry SDK
- 重写 src/js/modules/sentry-init.js:使用 window.Sentry 而非 npm 导入
- 新增 scripts/inject-sentry-config.js:构建时注入环境变量配置
- 更新 build-static.js:集成 Sentry 配置注入步骤
- 更新 HTML 文件:添加 Sentry 配置脚本块和 CSP 策略
测试方法:部署后在控制台执行 testSentry() 或 window.testSentry()
2025-12-13 22:16:51 +08:00
Abner
e8d31267f2
refactor: 重构样式系统和通知组件,提升代码模块化和可维护性
...
将内联CSS样式从index.html迁移到模块化的notification.css文件
为Giffgaff和Simyo页面添加通知系统样式引用
实现状态面板的可折叠设计,改善用户体验
添加深色模式支持,增强可访问性
优化悬停效果,仅在支持设备上显示
添加官方暂停通道的提示信息
统一管理网络状态指示器和加载动画样式
2025-11-30 18:51:20 +08:00
Abner
abf9063b20
docs: 添加通知系统使用指南和完整实现文档
...
- 新增详细的通知系统使用指南,涵盖架构设计、快速开始、后端配置和故障排查
- 添加通知管理器组件,支持 success、warning、error、info 四种通知类型
- 实现通知服务,支持自动轮询和已读状态管理
- 创建 Netlify Functions 通知 API,提供通知消息查询接口
- 集成通知系统到主页面,在DOM加载完成后自动初始化
- 提供完整的样式系统,包含响应式设计和无障碍访问支持
2025-11-30 18:43:38 +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
7bdcbfcaee
feat(security): 更新 Content-Security-Policy 策略配置
...
新增对 Google Analytics、Google Tag Manager 和 Cloudflare Turnstile 的支持,
同时调整 frame-src 允许加载特定域名内容。此变更应用于多个页面的 CSP 设置,
包括 index.html、giffgaff 和 simyo 相关页面,提升安全性与功能兼容性。
fix(turnstile): 改进 Cloudflare Turnstile 初始化逻辑
增强 widget 加载稳定性并优化 token 刷新机制,增加错误处理和状态管理,
防止重复执行并适配浏览器可见性变化。提取独立脚本确保 CSP 兼容性,
避免内联代码触发安全策略限制。
feat(i18n): 实现页脚组件国际化支持
为 copyright 文本、GitHub 链接及容器添加多语言切换能力,
引入翻译键值绑定与动态更新机制,并完善中英文对照文本定义。
refactor(footer): 抽离页脚国际化相关逻辑
将原有静态文本生成改为参数化解析方式,分离品牌名称与年份范围计算逻辑,
便于后续扩展更多本地化字段与样式控制选项。
chore(scripts): 创建首页专用 i18n 初始化模块
消除主页中的内联 JavaScript 脚本片段,将其封装成外部可引用的 ES Module,
解决潜在的内容安全策略冲突问题,提高代码整洁度和维护性。
2025-11-02 10:41:05 +08:00
Abner
34e4d11032
feat(i18n): 添加多语言支持并优化页面结构
...
- 为首页和 Giffgaff 工具页添加语言切换功能
- 引入国际化模块,支持中英文内容动态切换
- 更新 HTML 结构以支持多语言文本包裹
- 添加语言切换按钮样式及交互逻辑
- 在页面加载时初始化国际化设置
- 补充页面元信息描述,提升 SEO 及可访问性
2025-11-01 13:50:08 +08:00
Abner
576f574d29
feat: 更新品牌标识和版权年份
...
- 将品牌名称从 "eSIM工具集" 修改为 "eSIM Tools"
- 更新 GitHub 仓库地址和相关链接
- 添加自定义应用品牌与年份范围配置功能
- 实现统一版权页脚自动注入
- 优化部分页面结构和样式
2025-08-12 19:17:22 +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
f7d7c5375d
refactor(src): 优化服务时间检查逻辑
...
- 更新服务时间检查函数,确保使用英国伦敦时区
- 调整服务时间范围为 04:30–21:30
- 优化时间计算方法,避免本地/夏令时偏差
- 统一时间判断逻辑,提高代码可维护性
2025-08-10 11:43:38 +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
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
c004e069e7
fix: 本地化 Font Awesome 图标
...
- 下载并配置本地 Font Awesome 文件
- 修改 HTML 文件中的图标引用路径
- 更新 Content Security Policy 策略
- 创建测试页面验证图标显示
- 优化图标加载性能
2025-08-05 23:15:41 +08:00
Abner
b72de71775
feat(security): 添加内容安全策略 (CSP)
...
- 在 HTML 头部加入 Content-Security-Policy 元标签
- 配置了各种资源的加载来源,增强了页面的安全性
- 包括脚本、样式、字体、图像等资源的加载限制
2025-08-05 22:55:38 +08:00
Abner
ac0744c4d5
feat(performance): 优化性能并添加离线支持
...
- 新增 .babelrc 配置文件,使用 Babel 进行代码转换和压缩
- 添加 PERFORMANCE.md 文件,详细说明性能优化措施
- 在 README.md 中增加性能优化相关说明
- 更新 index.html,添加 Service Worker 注册和性能优化脚本
2025-08-05 22:33:56 +08:00
Abner
e201e550b9
feat/perf: 优化页面加载性能和用户体验
...
- 预连接和预加载关键资源,提升页面加载速度
- 采用 IntersectionObserver 触发动画,避免阻塞主线程
- 优化 CSS 变量命名,提升代码可读性和可维护性
- 添加 Google Analytics 延迟加载,减少对页面性能的影响
- 优化图片加载,添加懒加载属性
2025-08-05 20:02:47 +08:00
Abner
def886e744
perf(index): 优化资源加载和页面显示效果
...
- 将 Font Awesome CDN 链接从 Cloudflare 切换到 jsDelivr,提高加载稳定性
- 底部提醒文本居中显示,提升视觉效果
- 在 .reveal 类中添加 will-change 属性,优化动画性能
- 添加 Google Analytics 跟踪代码,便于后续分析
- 优化小屏显示效果,调整工具按钮样式
2025-08-05 18:43:02 +08:00
Abner
5355d19403
feat(ui): 优化eSIM工具界面与无障碍访问支持
...
主要改进包括:
- 重构HTML结构,使用语义化标签提升可访问性
- 添加ARIA标签和焦点管理,改善键盘导航体验
- 优化CSS变量系统,增强主题一致性和维护性
- 引入预连接资源提升加载性能
- 统一响应式设计断点,适配多种设备屏幕
- 增强表单输入提示和错误状态反馈机制
这些变更显著提升了用户体验和界面专业度,同时保持了代码的简洁性与可维护性。
2025-08-05 18:11:51 +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
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