Abner
70766c3a32
fix: 以 spawnSync 与路径边界校验加固 quality-check
...
将 node -c 从 shell 字符串 execSync 改为参数数组 spawnSync,
并用 path.resolve + projectRoot 前缀校验替代脆弱的 .. 正则与
手写路径拼接;非法扫描路径改为显式失败,避免假绿。
2026-07-22 19:26:12 +08:00
Abner
76cba05ef1
🔧 chore: 脱链检查覆盖 dist 构建产物 HTML
...
在已构建时同步校验 dist 入口资源,未构建时跳过 dist 避免误报。
2026-07-17 20:53:32 +08:00
Abner
5f78b2e45b
🔧 chore: 增加生产资源脱链检查并完善质量门禁
...
新增 check-asset-links,接入 quality-check 与 pre-push;修正 resource-hints 中已失效的 Webpack 产物路径。
2026-07-17 20:48:11 +08:00
Neo Vern
7298ae4a0d
✨ feat: QR 码本地打包 + Edge Function 直接生成 ( #86 )
...
* ✨ feat: 打包 qrcode-generator@1.4.4 到本地 ES 模块
* ♻️ refactor(qrcode): 移除 CDN 加载逻辑,改用本地 import 引入 qrcode-generator
* 🔧 chore: 移除 CDN preconnect 提示,QR 码库已内联
* 🔧 chore: 清理 CSP 配置,移除不再需要的 CDN 域名
* ✨ feat: 将 QR 码生成迁移到 Edge Function,消除后端冷启动延迟
- 在 Edge Function 中内联 qrcode-generator 库(~20KB),直接生成 QR 码
- 删除废弃的 Netlify Function (qrcode-generate.js)
- 更新 server.js 移除对已删除函数的引用
- 更新测试文件适配新的 Edge 内联架构
* ♻️ refactor: 代码质量修复 — 移除死代码、消除变量遮蔽、添加交叉引用注释
* 🔧 chore: 修复非阻塞风险 — 补充 strict 模式、移除废弃 qrcode 依赖
- Edge Function qrcode-lib.js 补充 'use strict' 声明,与浏览器版保持一致
- 移除已废弃的 qrcode npm 依赖(原用于已删除的 Netlify Function)
* ♻️ refactor: 消除魔法数字、补充脆耦合和 async 技术债注释
- Edge Function 中 QR margin 魔法数字 8 替换为 QR_MARGIN_MODULES 常量
- generateQRCodeLocal 补充 async 无 await 的技术债说明
- error.message.startsWith 条件补充校验函数耦合关系注释
* 🐛 fix: 修复边界条件 — null JSON body、vendor 字符串异常、CDN preconnect 残留
- Edge Function: null JSON body 解构移到 try/catch 内,添加 null/非对象检查
- qrcode-generator: 库 throw 字符串时统一转换为 Error 对象,避免 .startsWith 崩溃
- index.html: 移除不再需要的 CDN preconnect 提示(jsdelivr/cdnjs)
* ♻️ refactor: 修复 CSP 恢复、异常归一化、自定义 Error 类、负面路径测试
- netlify.toml: 恢复 script-src 中 cdn.jsdelivr.net(Bootstrap JS 仍依赖)
- Edge Function catch: 归一化非 Error 异常(库可能 throw 字符串)
- Edge Function QR margin: createDataURL(cellSize, 2) → createDataURL(cellSize, cellSize * 2) 对齐模块边距
- Edge Function: 补充认证模型和 QR 格式变更注释
- qrcode-generator.js: 引入 QRCodeValidationError 替代 error.message.startsWith 脆耦合
- tests/bff-proxy: 添加 6 个 Edge QR 负面路径测试(无效 JSON、空/超长/非字符串 data、超范围 size)
- tests/qrcode-generator: 添加库 throw 字符串异常的测试
- scripts/sync-qrcode-lib.js: 新增库代码同步验证脚本
* 🐛 fix: 修复 server.js CSP 缺少 jsdelivr、同步脚本 CRLF 归一化、fallback 拦截校验错误
- server.js: 恢复 script-src 中 cdn.jsdelivr.net(本地开发 Bootstrap JS 依赖)
- sync-qrcode-lib.js: 归一化 CRLF 换行符避免跨平台误报
- qrcode-generator.js: generateQRCodeWithFallback 入口处拦截 QRCodeValidationError,避免无效输入触发无意义的后端降级
2026-06-25 22:15:17 +08:00
Abner
00a0e58d81
📝 docs: 更新架构与安全文档并扩展测试模块清单
...
- 更新 CLAUDE.md、docs/ARCHITECTURE.md 中的模块与阶段状态,补充 verify-cookie/health/public-config/notifications 等新节点,并将基础设施阶段由规划中标注为进行中
- 完善 docs/SECURITY.md 的 BFF 代理层与 withAuth 中间件说明,明确 x-esim-key 注入、函数白名单校验以及 CORS/体验验证的统一错误格式化策略
- 更新 src/giffgaff/MODULE_ARCHITECTURE.md 的安全考虑条目,补充 cookie 有效性检查间隔、CSP/Helmet 策略、HTML sanitization(escapeHtml/escapeAttr)以及通过 BFF 代理转发的传输层防护细则
- 扩展 tests/CLAUDE.md 测试范围与表格结构,新增 modules、giffgaff、security 三类的独立测试文件清单,并补充 tests/setup.js 的全局初始化说明
- 调整脚本与模块文档:scripts/CLAUDE.md 新增部署与构建相关脚本清单;src/js/modules/CLAUDE.md 更新 CaptchaManager 集成说明与模块覆盖状态,补充 notification-service/browser-utils 等相关条目
2026-06-02 22:50:26 +08:00
Abner
defcea2160
🔥 chore: 清理 Legacy 冻结校验工具链及相关残留配置
...
- 删除 `scripts/verify-legacy-frozen.js` 及 `scripts/legacy-freeze.json`,移除 legacy 文件冻结校验能力
- 删除 `package.json` 中 `verify:legacy` 和 `verify:legacy:update` 两个 npm scripts
- 删除 `build-static.js` 中移除 legacy HTML 文件的构建时清理逻辑
- 移除 `server.js` 中已废弃的 `/simyo-static` 路由及其兼容静态路径
- 更新 CLAUDE.md、scripts/CLAUDE.md 及两个业务模块架构文档,将"Legacy 架构"表述统一改为"原生 ES6 模块"
2026-05-25 20:34:53 +08:00
coderabbitai[bot]
9f0feccc35
📝 Add docstrings to feat/remove-turnstile-and-fixes
...
Docstrings generation was requested by @Silentely.
The following files were modified:
* `scripts/pre-commit-check.js`
These file types are not supported:
* `CLAUDE.md`
* `netlify.toml`
* `netlify/edge-functions/CLAUDE.md`
* `netlify/functions/CLAUDE.md`
* `src/giffgaff/giffgaff_modular.html`
* `src/simyo/simyo_modular.html`
2026-05-18 12:37:32 +00:00
Abner
307ebe8e84
🔧 chore: 移除 pre-commit 中的远程同步逻辑
2026-05-18 20:18:46 +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
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
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
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
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
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
a1fa26dc40
🔧 chore(hooks): 提交前同步远程并静默无效URL测试日志
2026-04-18 00:36:30 +08:00
Abner
77673f2a6e
🔧 chore(hooks): 禁止提交与推送 legacy complete 页面改动
2026-04-11 23:12:51 +08:00
Abner
01df53a9df
🔧 chore(hooks): 新增提交与推送质量门禁
2026-04-06 18:13:44 +08:00
Abner
d37961c614
feat: 添加 JS 转译脚本以支持 Chrome 77 目标
...
此提交引入了一个新的 JavaScript 转译功能,用于在构建过程中将现代 JavaScript 代码转换为与 Chrome 77 兼容的版本。
- 新增 transpile-dist-js.js 脚本,使用 Babel 将 dist/src 目录下的 JS 文件转译为 Chrome 77 目标
- 在 build-static.js 中集成转译步骤,确保在注入 Sentry 配置前完成代码转换
- 转译过程会自动跳过 minified 文件和 vendor 目录,仅处理需要转换的源文件
- 添加了详细的日志记录,显示处理文件数量和更新文件数量
2026-03-26 21:43:16 +08:00
Abner
14ee2c0332
fix(build): 更新 Legacy Freeze 基线以适配 i18n 功能
...
修复 CI 自动修复工作流失败问题。之前的 i18n 多语言功能修改了
giffgaff_complete_esim.html 文件,但未更新冻结基线的哈希值,
导致构建时 Legacy Freeze 保护机制触发。
变更内容:
- 更新 giffgaff_complete_esim.html 的 SHA256 哈希值
- 保持 simyo_complete_esim.html 哈希值不变
影响:修复后 CI 工作流将正常通过构建检查
2026-02-14 08:46:24 +08:00
Abner
9da2e0bf95
fix: giffgaff tutorial link; freeze legacy pages
2025-12-31 00:21:43 +08:00
Abner
65068df5dd
fix(sentry): 修复 CSP 内联脚本问题并增强敏感数据脱敏
...
- 新增 sentry-config.js 外链脚本替代 HTML 内联配置
- 修改 HTML 文件引用外链脚本以符合 CSP 策略
- 重写 inject-sentry-config.js 仅处理配置文件
- 添加 sentry-sdk-loaded 事件触发,修复 SDK 超时覆盖问题
- 增强 beforeSend 脱敏逻辑,覆盖 query_string 和更多敏感参数
2025-12-13 23:36:44 +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
c6a6893aa2
refactor: 修复安全检查脚本的模板字符串语法和多行输出格式
...
- 将多行字符串连接修复为使用模板字符串语法,解决字符串插值问题
- 统一日志输出的换行符格式,改善控制台显示效果
- 移除不必要的换行符连接,简化代码逻辑
- 保持安全检查功能不变,仅优化代码格式和语法
2025-11-24 20:22:43 +08:00
Abner
4a0fcc94fe
feat: 重构Netlify Functions架构并增强代码质量
...
- 新增统一的中间件模块,提供鉴权、CORS和错误处理功能
- 重构所有Functions使用withAuth中间件简化代码结构
- 添加安全存储模块替代localStorage,防御XSS攻击
- 引入HTML清理工具,自动转义特殊字符和验证URL安全性
- 创建代码质量检查脚本,验证语法、环境变量和依赖完整性
- 添加构建日志工具和重构脚本,统一替换console.log为Logger
- 引入ESLint配置,提升代码质量和一致性
- 重构Giffgaff相关API,统一错误处理和验证逻辑
- 优化构建脚本,添加压缩和图片优化功能
- 新增健康检查端点,用于服务监控和状态报告
2025-11-23 22:20:02 +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
copilot-swe-agent[bot]
bd522e7d7e
Refactor: Improve code quality and performance across scripts and modules
...
- Add parallel processing and caching to image optimization
- Enhance compression with Brotli and intelligent filtering
- Improve Performance module with memory leak prevention
- Optimize webpack config with better chunking and caching
- Add utility library with debounce/throttle/retry functions
- Create validation middleware for Express server
- Add comprehensive architecture documentation
Co-authored-by: Silentely <22141172+Silentely@users.noreply.github.com >
2025-10-04 03:07:23 +00:00
Abner
576f574d29
feat: 更新品牌标识和版权年份
...
- 将品牌名称从 "eSIM工具集" 修改为 "eSIM Tools"
- 更新 GitHub 仓库地址和相关链接
- 添加自定义应用品牌与年份范围配置功能
- 实现统一版权页脚自动注入
- 优化部分页面结构和样式
2025-08-12 19:17:22 +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
b6f7434aac
feat(images): 重构图片优化脚本并替换为 sharp 库
...
- 移除 imagemin 及其相关插件依赖,改用更高效的 sharp 库处理图片
- 支持生成多种格式(JPEG、PNG、WebP)和多尺寸缩略图
- 新增命令行参数支持,可自定义输入输出目录及图片质量
- 自动创建示例目录及说明文件,提升易用性
- 优化失败处理逻辑并提供详细日志反馈
此变更提高了图片处理性能与灵活性,同时简化了依赖管理。
2025-08-05 23:40:44 +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
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