Commit Graph

338 Commits

Author SHA1 Message Date
Abner
63997e4bcb ♻️ refactor: 使用可选链和空值合并运算符优化代码安全性
- 在 cookie-handler.js 中使用 `err?.message` 替代 `err && err.message`,提升错误信息获取的代码简洁性和安全性
- 在 giffgaff-app.js 中将多个 `(error && error.message) || ''` 形式的表达式替换为 `error?.message ?? ''`,统一代码风格并增强空值处理
- 在 esim-service.js 中多处使用可选链操作符(`?.`)替代多层属性访问的条件判断,防止因对象为 null 或 undefined 导致的运行时错误
- 在 giffgaff-app.js 和 esim-service.js 中将逻辑或(`||`)默认值替换为空值合并运算符(`??`),确保只有 null 或 undefined 时使用默认值,保留空字符串等有效 falsy 值
- 更新 package-lock.json 文件以反映依赖关系的变化
2026-05-16 21:15:48 +08:00
Abner
643c16f393 🐛 fix: 修复 markdown-negotiation.js 全部 Code Scanning 安全警报
- bad-tag-filter:结束标签正则改用 \b[^>]* 匹配所有变体
- double-escaping:HTML 实体解码改为单次遍历回调,避免 < 双重解码
- incomplete-multi-character-sanitization:标签移除从正则改为逐字符 while 循环扫描,彻底消除 CodeQL 误报
2026-05-11 23:05:56 +08:00
Abner
da56b1e07f feat: README 中英文文档添加头图
- README.md 添加 og-image.png 居中头图 (width=600)
- README_EN.md 添加 og-image.png 居中头图 (width=600)
2026-05-11 22:27:28 +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
76e0be2fcc feat: 添加 llms.txt 为 LLM 提供结构化站点索引
- 新增 /llms.txt 遵循 llmstxt.org 规范
- 包含项目描述、功能、设备兼容性、API 资源、技术栈
- 集成到构建流程自动复制到 dist
2026-05-11 09:37:45 +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
eba2c1fb05 🔧 ci: 升级 Codacy Analysis CLI action 到 v4.4.7
- 修复旧版本 SARIF 生成时的 IndexOutOfBoundsException 崩溃
2026-05-11 09:14:52 +08:00
Abner
7d6faea4df 🐛 fix(security): 修复 markdown-negotiation Edge Function 的 HTML 清理逻辑
- 修复正则表达式匹配带空格的结束标签(如 </script >)
- 添加 \b 单词边界避免部分匹配
- 修复 HTML 实体解码潜在双重反转义问题
2026-05-11 09:06:36 +08:00
Abner
d3c418f9f3 Merge pull request #46 from Silentely/dependabot/npm_and_yarn/fast-uri-3.1.2
build(deps-dev): bump fast-uri from 3.1.0 to 3.1.2
2026-05-11 09:04:44 +08:00
Abner
7426f76fe7 Merge pull request #47 from Silentely/dependabot/npm_and_yarn/babel/plugin-transform-modules-systemjs-7.29.4
build(deps): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4
2026-05-11 09:04:37 +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
dependabot[bot]
60e7470a4c build(deps): bump @babel/plugin-transform-modules-systemjs
Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.29.0 to 7.29.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-modules-systemjs"
  dependency-version: 7.29.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-09 17:55:47 +00:00
dependabot[bot]
527e4fab49 build(deps-dev): bump fast-uri from 3.1.0 to 3.1.2
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-09 02:29:50 +00:00
Abner
b5ec8eb18a 🐛 fix: 修复受限环境下 secure-storage 触发 sessionStorage SecurityError
- 新增 safeGetStorage 探测能力探针,捕获 sessionStorage/localStorage 读取与写入探测时抛出的 SecurityError,返回可用的 Storage 或 null
- 将顶层敏感数据迁移逻辑外层包裹 try-catch,避免 iframe/sandbox/隐私设置等受限上下文导致模块初始化阶段未捕获异常中断
- 在 migrateFromLocalStorage 中基于 safeGetStorage 动态获取 localStorage,localStorage 不可用时直接跳过迁移而非抛错
- 补充受限环境降级单元测试:模拟 sessionStorage/localStorage 属性读取被拒、以及 sessionStorage 写入失败时确保降级到 fallbackStorage 且不抛异常
2026-05-08 18:33:59 +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
4abd32c3b0 ♻️ refactor: 移除旧版冻结文件及相关 legacy 路由
移除 giffgaff_complete_esim.html 和 simyo_complete_esim.html,
清理所有引用:sw.js 缓存列表、server.js 路由、netlify.toml 重定向、
pre-commit/pre-push 检查、security-check CSP 检测、
legacy-freeze.json 基线、verify-legacy-frozen.js 注释、
simyo_proxy_server.js 默认路由。
2026-05-07 22:42:24 +08:00
Abner
962779d63e 🐛 fix(giffgaff): 修复 secureStorage 迁移后 Cookie 读取断裂导致短信激活 403
api.js 中三处 localStorage.getItem('giffgaff_cookie') 在 secureStorage
迁移后返回 null,导致后端 giffgaff-sms-activate 无法获取 CSRF token,
向 Giffgaff 服务器发送的请求缺少 XSRF-TOKEN 被拒绝(403 Forbidden)。

修复内容:
- api.js: 统一使用 secureStorage.getItem 读取 Cookie
- state-manager.js: saveCookie/getCookie/clearSession/loadSession 统一
  使用 secureStorage,并添加 localStorage 旧数据回退迁移逻辑
2026-05-07 22:37:23 +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
1bb9c6db30 Add Codacy security scan workflow
This workflow integrates Codacy security scans into GitHub Actions, checking code on pushes and pull requests to the main branch, and scheduling scans weekly.

Signed-off-by: Abner <22141172+Silentely@users.noreply.github.com>
2026-05-06 20:58:05 +08:00
Abner
37f54a10a1 Add CodeQL analysis workflow configuration
Signed-off-by: Abner <22141172+Silentely@users.noreply.github.com>
2026-05-06 20:57:59 +08:00
dependabot[bot]
63fa2bf3d6 build(deps): bump axios from 1.15.0 to 1.15.2 (#43)
Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.15.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.15.0...v1.15.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.15.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 18:40:59 +08:00
Abner
47308a0fd1 🐛 fix(giffgaff): 移除 legacy 目录中的可选链语法以兼容旧浏览器
TikTok 内置浏览器(Android 10 WebView)不支持 ES2020 可选链(?.)语法,
导致 SyntaxError: Unexpected token . 崩溃。legacy 目录不经 Webpack/Babel
转译,直接以原始 JS 服务,因此需要手动替换为传统 && 短路求值写法。

涉及 4 个文件共 25 处:giffgaff-app.js、esim-service.js、
mfa-handler.js、cookie-handler.js
2026-05-06 18:36:02 +08:00
Abner
f897ae5212 feat: 优化 AI 智能回复工作流的请求逻辑与 JSON 格式处理
- 移除冗余的 `tools` 和 `tool_choice` 参数,简化请求结构,提升代码可维护性
- 统一使用 `response_format: {"type": "json_object"}` 确保所有请求返回标准 JSON 格式
- 在用户提示末尾明确添加禁止输出 `json` 代码块标记的说明,避免解析错误
- 简化重试逻辑,移除基于模式的条件判断,统一处理消息内容追加
- 将测试用例名称从 `chat_tools`/`chat_json` 调整为更语义化的 `chat_json`/`chat_plain`
2026-05-05 11:45:03 +08:00
Abner
9ed51287c0 test: 新增多个核心模块的单元测试并优化 Jest 配置
- 在 `jest.config.js` 中启用 V8 覆盖率提供器(兼容 Node.js 22+),提升覆盖率检测性能与准确性
- 调整覆盖率收集范围为 `src/js/modules/**/*.js`,排除测试文件,使报告更聚焦于实际业务逻辑
- 降低全局覆盖率阈值至当前可达成水平(statements/branches 30%-70%),制定逐步提升计划
- 新增 6 个模块的完整单元测试:`APIService`、`AppConfig`、`HTMLSanitizer`、`Logger`、`SecureStorage` 和 `utils`,总计约 840 行测试代码
- 修复 `HTMLSanitizer.sanitizeURL()` 中对 `data:text/html` 协议的正则检测逻辑,增强 XSS 防护能力
2026-05-05 10:35:14 +08:00
Abner
5ed5bb678b docs: 更新项目文档与安全配置
- 更新 PROJECT_SUMMARY.md,新增 notification-manager.js 和 notification-service.js 模块说明,并将通用工具中的 i18n 移至括号内
- 完善 SECURITY.md,重构 CORS 配置为动态白名单校验并禁用 credentials,增强 CSP 策略并统一生产与本地环境的安全基准说明
- 重写 SERVICE_TIME_CHECK.md,采用模块化三层架构(utils/dom/app),使用 Intl API 处理英国时区与夏令时,支持双时间显示与国际化的同时强化 XSS 防护
- 修订 notification-system.md,明确通知 API 公开接口无需认证,细化安全实践并规范消息转义方式
- 调整 netlify/functions/CLAUDE.md,标注 notifications API 为公开接口(requireAuth: false)
2026-05-03 23:04:19 +08:00
Abner
14e2500a85 📝 docs: 更新项目文档和配置说明
- 更新 Jest 版本从 29.7.0 到 30.3.0,保持测试框架最新状态
- 修正文档链接,将性能说明指向 ARCHITECTURE.md 替代已废弃的 PERFORMANCE.md
- 新增 docs/CLAUDE.md 文档模块说明文件,明确文档结构和规范要求
- 删除过时的 REFACTORING_COMPLETE.md 文档,避免信息冗余
- 统一服务时间描述为英国时间 04:30–21:30,修正多处时间范围表述错误
2026-05-03 22:26:23 +08:00
Abner
5087ad5e64 feat: 优化 AI 智能回复工作流中的文件内容读取逻辑
- 将单个文件最大读取字符数从 3000 提升至 8000,以获取更完整的上下文信息
- 引入关键词定位机制,自动识别 search_queries、keywords 和 components 中的有效搜索词
- 实现上下文窗口提取功能,对关键词命中行前后各取 40 行内容,提高相关代码片段的完整性
- 添加重叠区间合并逻辑,避免重复内容并保持上下文连贯性
- 在无关键词匹配时保留原始截断策略作为回退方案,确保兼容性
2026-05-02 12:28:20 +08:00
Abner
093ca0ce49 📝 docs: 更新 Simyo 保号服务金额信息
- 将 Simyo 保号服务金额从 0.01 欧元调整为 10 欧元起
- 同步更新中文和英文文档中的保号成本描述
- 修正国际化翻译文件中的保号服务金额显示
- 更新模块化页面中的保号提示文本,确保金额信息一致
2026-05-01 08:38:48 +08:00
Abner
bf090f9ce2 feat: 升级 AI Issue 智能回复工作流,支持更精确的解决方案输出和新评论模式
- 重构 LLM 调用方式,移除 `chat_tools` 模式,统一使用 `chat_json` 和 `chat_plain` 模式,并增强 JSON 提取逻辑(支持从 markdown 代码块中提取)
- 在响应 schema 中新增 `workaround` 字段,用于提供用户可立即执行的临时解决方案(不依赖代码修改或重新部署)
- 强化 `solution` 和 `actionable_steps` 字段的内容要求,必须包含具体文件路径、函数名、行号及可执行修改步骤,提升对 AI 编程助手的可用性
- 将输出标记从 v3 升级至 v4,并改为始终创建新评论(不再编辑旧评论),保留历史分析记录,提升可追溯性
- 优化错误处理和日志输出,在网络请求失败时打印 HTTP 错误码和响应体前 500 字符,便于调试
2026-04-29 23:22:44 +08:00
Abner
d7c4f5f6e3 ♻️ refactor: 重构 AI Issue 智能回复工作流,移除索引检索并增强上下文分析
- 移除独立的 AI 索引构建工作流(ai-build-index.yml)及相关脚本,简化架构
- 删除 ai/ 目录下所有索引文件(index.jsonl、embeddings.jsonl、index_manifest.json)
- 将 retrieve_ai_context.py 脚本替换为内联的仓库扫描逻辑,直接在工作流中实现上下文检索
- 新增富化上下文(enriched context)收集功能,自动提取 Issue 中的错误堆栈、代码块、相关文件内容和 Git 历史
- 增强 triage 阶段输出结构,新增 error_pattern_summary、related_files 和 actionable_steps 字段
- 优化触发条件,支持 issue_comment 事件并通过 `/ai-analyze` 命令触发重新分析
- 改进 LLM 调用验证逻辑,增加字段完整性检查和自动重试机制
- 重构输出展示模板,提供更结构化的 AI 分析结果和用户操作指引
2026-04-29 22:50:56 +08:00
Abner
8f9bd3a6be 📝 docs: 新增模块化文档文件并更新主文档索引
- 新增 `src/js/modules/CLAUDE.md`,详细描述通用工具模块的职责、接口和使用方式
- 新增 `netlify/functions/CLAUDE.md`,系统化说明 11 个 Serverless 函数的功能和中间件架构
- 新增 `netlify/edge-functions/CLAUDE.md`,明确 BFF 代理层的验证码校验规则和转发流程
- 新增 `scripts/CLAUDE.md`,梳理 22 个构建和质量检查脚本的用途和执行命令
- 新增 `tests/CLAUDE.md`,说明 Jest 测试框架配置、覆盖率要求和各模块测试文件
- 更新根目录 `CLAUDE.md`,精简内容并添加模块结构图和详细索引导航
2026-04-28 20:14:59 +08:00
Abner
ca669014c4 feat: 实现 giffgaff DOM 模块的国际化支持
- 在 DOM 管理模块中引入 tl 函数,用于动态翻译页面文本内容
- 将会员信息、eSIM 信息、状态提示等硬编码文案替换为调用 tl 函数实现多语言支持
- 新增多条英文翻译词条到 i18n-data.js,涵盖状态显示、按钮文本、提示信息等场景
- 对时间显示逻辑进行优化,将"分钟前"等相对时间文本改为支持参数插值的翻译格式
- 统一服务时间警告弹窗的按钮文案国际化处理,提升整体用户体验一致性
2026-04-26 21:34:50 +08:00
Abner
7df5def91d 🔧 chore: 升级转译目标至 Chrome 90+ 并引入 browserslist 配置
- package.json 新增 browserslist 字段(defaults, Chrome >= 90, not dead)
- transpile-dist-js.js 从 browserslist 动态解析目标,不再硬编码 Chrome 77
- 减少不必要的语法降级,输出更精简的现代 JS
2026-04-25 16:56:26 +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
9cfa35adb3 🔧 chore: 修复 Dependabot 安全告警
- postcss 升级至 8.5.10 (修复 XSS via unescaped </style>)
- uuid 升级至 14.0.0 (修复 buffer bounds check 缺失)
2026-04-25 16:35:41 +08:00
Abner
7fd54dde39 ♻️ refactor: 修复安全漏洞并优化架构债务
安全修复:
- 修复 dom.js 和 simyo/app.js 中的 innerHTML XSS 注入风险
- 使用 HTMLSanitizer.escapeHtml/escapeAttr 替代直接模板拼接
- 将 onclick 内联事件替换为 data-* 属性 + addEventListener
- 移除 server.js 中硬编码的 Simyo X-Client-Token

架构优化:
- 新增 _shared/rate-limiter.js 分布式限流模块 (Netlify Blobs)
- verify-cookie.js 内存限流替换为 KV 跨实例共享方案
- giffgaff/utils.js debounce/throttle 改为委托共享实现
- simyo/app.js 会话存储迁移至 SecureStorage (自动 TTL 过期)
- 合并 notifications-internal.js 至 notifications.js 消除双维护路径
2026-04-25 16:30:19 +08:00
Abner
8cb4d32419 🔧 chore: 更新 Jest 版本至 30.3.0
- 将 package.json 中的 Jest 依赖版本从 ^30.2.0 升级至 ^30.3.0
- 自动更新 package-lock.json 以反映新的依赖锁定文件
- 保留其他开发依赖版本不变,仅针对 Jest 进行指定版本升级
2026-04-23 18:06:52 +08:00
Abner
01b81eaa5e 🔧 chore: 移除旧版 Issue 模板并重构 AI 工单处理工作流
- 删除 `.github/ISSUE_TEMPLATE/bug_report.yml` 和 `.github/ISSUE_TEMPLATE/config_question.yml` 两个旧版 Issue 模板文件
- 重构 `ai-issue-smart-reply.yml` 工作流,将 LLM 调用从 `appleboy/llm-action` 改为原生 Python 脚本实现
- 在工作流中添加对 Node 24 的强制使用设置 `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true`
- 优化 LLM 接口调用逻辑,支持多种响应格式(function calling 和 JSON object)并具备自动降级机制
- 将系统提示词和输入提示词分离为独立文件,提升可维护性和可读性
2026-04-23 17:32:47 +08:00
Abner
2f87443ddc ♻️ refactor: 调整提交信息校验逻辑并增强运行时变量兜底保护
- 更新 commit-msg 校验脚本,移除 emoji 与 type 的强制配对要求,仅验证两者合法性
- 同步更新中英文 README 文档说明,明确 emoji 与 type 不再强制匹配
- 在 Simyo eSIM HTML 文件中添加全局变量兜底逻辑,防止 iOS WebView 因未定义 currentInset、CONFIG 导致崩溃
- 扩展 Sentry 错误过滤规则,新增对 currentInset 和 CONFIG 相关报错信息的忽略处理
2026-04-19 10:35:31 +08:00
Abner
6282507d12 ♻️ refactor(simyo): 移除模块化流程的 sendSmsCode 路径 2026-04-18 22:25:45 +08:00
Abner
f7151c9283 ♻️ refactor: 优化设备更换验证码流程并添加相关测试
- 修改中英文帮助文档,将“获取或接收验证码”调整为更准确的“发送与接收验证码”
- 简化 `device-change-handler.js` 中的验证码发送逻辑,移除冗余的错误处理,统一回退机制
- 当新版流程仅支持邮箱验证时,即使短信接口不可用也返回成功提示,提升用户体验
- 新增 `device-change-handler.test.js` 测试文件,覆盖 `applyNewEsim`、`verifyCode` 和 `sendSmsCode` 方法的正常与异常场景
- 新增 `simyo-app-device-change.test.js` 测试文件,验证主流程中设备更换的自动化操作和UI交互逻辑
2026-04-18 22:08:35 +08:00
github-actions[bot]
4b9a3ca7f4 chore(ai): update repository knowledge index 2026-04-18 13:56:39 +00:00
Abner
b500cf5656 feat: Simyo 工具升级为邮箱验证码验证流程,优化 Sentry 扩展干扰过滤
- 将 Simyo 工具的短信验证码流程升级为邮箱验证码验证,支持自动识别验证方式,兼容旧版短信流程
- 更新所有相关国际化文案,将"短信验证码"替换为"邮箱验证码"或通用验证码表述,提升用户体验一致性
- 重构设备更换处理逻辑,移除独立的短信发送按钮和流程,引导用户直接输入邮箱收到的验证码
- 增强 Sentry 错误监控的扩展干扰过滤能力,针对非 Error 类型的 Promise rejection 异常进行深度扫描,防止扩展插件产生的噪音数据上报
- 优化验证码发送方法的健壮性,增加验证方式检测机制,支持邮箱和短信双模式自动适配,提高系统兼容性
2026-04-18 21:55:55 +08:00
github-actions[bot]
6cea86766c chore(ai): update repository knowledge index 2026-04-18 12:36:34 +00:00
Abner
6ffd684443 📝 docs(readme): 同步英文README与中文基线 2026-04-18 20:36:06 +08:00