Neo Vern
bb80d3dc0a
✨ feat(sentry): 添加用户反馈功能 ( #83 )
...
* ✨ feat(sentry): 添加用户反馈功能
- 升级 CDN bundle 以支持 feedback 模块
- 添加 feedbackIntegration 内置 Widget(主动反馈)
- 实现错误后自动弹窗(Crash-Report Modal)
- 添加冷却机制防止频繁弹窗(60秒冷却 + 同一错误不重复)
* ♻️ refactor(sentry): 修复审查发现的问题
- 消除指纹计算重复(DRY 违反)
- 统一使用 const/let 替代 var
- 复用已有 showReportDialog 函数
- 添加 beforeSend UI 副作用设计说明注释
* 🐛 fix(sentry): 修复 SentryMock 缺失方法
- 添加 feedbackIntegration 和 replayIntegration 到 SentryMock
- 修复 CDN 加载失败时 TypeError
- 删除多余空行
* 🐛 fix(sentry): 修复代码质量问题
- sentry-loader.js 添加 replayIntegration 和 feedbackIntegration 配置
- sentry-loader.js 添加错误后自动弹窗逻辑(冷却机制 + try-catch)
- sentry-init.js 添加 showReportDialog try-catch 保护
- 弹窗延迟从 100ms 改为 500ms(弱网兼容)
* ✨ feat(sentry): 修复所有代码质量问题
- H1: CSP 添加 *.sentry.io 到 script-src(4 个文件)
- M1: Feedback Widget 和自动弹窗添加中文文案
- M2: 同步两套初始化路径配置(tracing、脱敏、ignoreErrors)
- M3: sentry-entry.js 添加 feedbackIntegration 导出
- M4: 新增专项测试(13 个测试用例)
- L1: SentryMock 补齐 showReportDialog/lastEventId
- L2: 空事件对象防御
* ✨ feat(sentry): 修复 PR 审查发现的全部问题
功能正确性:
- query_string 添加类型检查(字符串/对象兼容)
- 指纹计算移到脱敏前(避免不同错误被误判为重复)
- 冷却状态更新移到 setTimeout 内部(避免空转)
- subtitleLine2 改为 subtitle2(修正字段名)
CSP 修复:
- script-src 移除 *.sentry.io(减少攻击面)
- frame-src 添加 *.sentry.io(支持弹窗 iframe)
- 添加 worker-src/child-src blob:(支持 Session Replay)
- server.js helmet CSP 同步更新
- netlify.toml 注释与实际策略对齐
配置/架构:
- sentry-entry.js 添加 lastEventId 导出
- tracePropagationTargets 添加 CORS 风险注释
- CDN 架构添加说明注释
代码质量:
- URL 参数脱敏支持大小写不敏感
- 移除过宽的 ignoreErrors 规则
- 测试文件添加 use strict
- 添加 i18n 和漂移风险注释
* fix: apply CodeRabbit auto-fixes (#85 )
Fixed 3 file(s) based on 5 unresolved review comments.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: CodeRabbit <noreply@coderabbit.ai >
* ✨ feat(sentry): 修复新一轮审查意见
CSP 修复:
- script-src 恢复 *.sentry.io(showReportDialog 需要)
- netlify.toml Header CSP 同步 Cloudflare/Google
- server.js helmet CSP 同步
冷却竞态修复:
- 状态预留移到 setTimeout 之前(防止 500ms 内重复弹窗)
- 弹窗失败时回滚冷却状态
脱敏修复:
- query_string 对象分支改为大小写不敏感
- sanitizeQueryString 迭代改为安全模式(先收集键再遍历)
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: CodeRabbit <noreply@coderabbit.ai >
2026-06-24 19:04:38 +08:00
Abner
6379bbef90
♻️ refactor: 移除外部二维码服务依赖,改用本地生成方案
...
- 将前端二维码生成从 `qrcode.show` 远程服务切换为 `qrcode-generator` 本地库(UMD 格式),消除对外部 CDN 渲染服务的依赖,降低隐私风险和第三方服务不可用时的故障点
- 重写 `generateQRCodeLocal` 函数适配 `qrcode-generator` API,使用 `qrcode(typeNumber, errorCorrectionLevel).addData().make().createDataURL()` 模式,并基于 QR 码模块数动态计算 `cellSize`,新增大尺寸预览图支持(400px)
- 移除所有页面中的 `qrcode.show` 域名引用,包括 CSP `connectSrc` 策略、preconnect 标签、resource-hints DNS 预解析配置及 Simyo/Giffgaff API 配置中的 `qrcode` 端点
- 完善二维码生成的日志与监控:在 CDN 加载成功后输出 `console.log`,本地/后端生成成功及失败时分别输出对应级别日志,并在 `trackQRCodeEvent` 中增加 `isBrowser` 守卫避免非浏览器环境报错
- 增加生成耗时和 QR 码长度(不含内容)到后端 BFF 日志,同时统一使用 `Date.now()` 计算请求耗时,避免 LPA 激活码等敏感信息进入日志
- 全面更新所有相关测试用例,适配新的 `window.qrcode` 工厂函数 mock,新增日志输出和 Sentry 上报断言,验证本地成功、本地失败降级、后端成功、后端失败四种场景的可观测性
2026-06-23 21:22:16 +08:00
Abner
07e048679f
🐛 fix: 修复 Google Tag Manager 脚本标签重复闭合导致的加载错误
...
- 移除 index.html 中 Google gtag.js script 标签末尾多余的 `</script>`,避免 DOM 结构异常
- 保留原有 `defer`、`src`、`crossorigin` 配置,确保延迟加载逻辑不被破坏
- 删除冲突的属性 `integrity` 相关内容,配合当前实际加载方式恢复正常请求行为
2026-06-13 22:14:21 +08:00
Abner
0b6103a96a
♻️ refactor: 提取通知系统初始化代码为独立模块
...
- 新增 `src/js/init-notification.js` 模块,将原本内联在 HTML 中的通知系统初始化逻辑独立封装,便于维护和测试
- 在 `index.html` 中移除内联的 `<script type="module">` 代码块,改用 `<script>` 标签引用新模块,保持 DOM 加载后自动初始化行为不变
- 调整内容安全策略(CSP),移除无用的 `sha256-*` 哈希值,同时添加 `fonts.googleapis.com` 和 `fonts.gstatic.com` 以支持网络字体加载,提升资源兼容性
- 保持功能完全一致,仅进行代码结构重组和 CSP 规则细化,不引入任何新功能或逻辑变更
2026-06-13 22:03:06 +08:00
Abner
4286069759
✨ feat: 调整 Sentry 与 CSP 以满足更严格的安全策略
...
- 将内联 Sentry DSN 配置改为外链脚本(/src/js/sentry-config.js),避免 CSP 限制导致初始化失败
- 更新 index.html 的 Content-Security-Policy,新增脚本 hash 以允许必要的内嵌代码,同时保留对 Sentry/Google 等域的连接权限
- 移除 CSP 触发风险较高的 preload+onload 写法,改为直接加载 Bootstrap 与本地样式文件,确保样式在受限环境下可用
- README 与 README_EN 的语言切换入口顺序调整,统一中英文版本跳转位置以提升可读性
2026-06-13 21:13:54 +08:00
Abner
574fd70025
✨ feat: 新增首页信息区标题与教程/对比/地区限制/术语/FAQ/安全声明的 i18n 映射
...
- 为兼容性、教程、对比、地区与时间限制、技术术语说明、常见问题与安全声明等新增 DOM 翻译选择器,补齐 `.compat-title-text` 等标题与描述的本地化映射
- 在 `TEXT_REPLACEMENTS` 中补充首页首页信息区完整中文/英文文案(包含 Giffgaff/Simyo 激活流程、对比项、时间窗口与地区限制、安全声明等)
- 更新首页静态标题结构,将各信息区标题改为 `<span>` 包裹文本,以便 i18n 模块按类名进行动态替换
- 扩展国际化数据文件中的翻译键(`home.compat.*`、`home.tutorial.title`、`home.compare.title`、`home.region.title`、`home.glossary.title`、`home.faq.title`、`home.disclaimer.title`)以同步支持中英文渲染
2026-05-27 22:22:38 +08:00
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
c3926b14eb
📝 docs: 修正误导性描述,明确工具仅支持已有用户 eSIM 设备更换
2026-05-17 21:57:13 +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
9941f66ee7
✨ feat: 完善 OAuth Discovery、MCP Server Card 和 WebMCP 支持
...
- 添加 /.well-known/openid-configuration (RFC 8414) OAuth 发现元数据
- 更新 MCP Server Card 为 SEP-2127 格式(顶级 name/version/description)
- 新增 WebMCP 支持,通过 navigator.modelContext 暴露站点工具
2026-05-11 13:01:14 +08:00
Abner
18ab12cefa
🐛 fix: 修复首页内容区块不可见问题
...
- 修复 home.js 让 IntersectionObserver 处理所有 .reveal 元素
- 修复 glossary HTML 结构(dt/dd 改为 p 标签)
2026-05-11 09:25:08 +08:00
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