雨霖铃
a374bf456d
feat: 数据格式改为按钮组选择
...
- 移除 Select 下拉框
- 改为 JSON/CSV 按钮组
- 选中状态与生成数量按钮样式统一
feat: 优化空值率设置
- 增加 75% 预设选项
- 设置 100% 时自动设为必填
- 限制输入范围 0-100
fix: 空值率预设改为纯数字显示
- 5%/20%/50%/75% 统一样式
fix: 移除空值率低/中/高 i18n 翻译键
fix: 精简生成数量预设选项
- 移除 10、500
- 保留 50、100、1000、5000、10000
2026-06-06 10:52:56 +08:00
雨霖铃
ea10b27c14
feat: 简化字段卡片交互 - 点击直接打开编辑弹窗
...
- 移除字段卡片选中样式
- 点击字段直接打开编辑弹窗
- 简化 FieldItem 组件,移除 isSelected 属性
- 简化 FieldList 接口,onSelect 改为 onEdit
fix: 优化字段编辑弹窗
- 去除弹窗描述文字
- 字段名称增加字符计数 (x/20)
- 字段描述增加字符计数 (x/50)
- 保持 placeholder 提示
fix: 修复弹窗顶部间距问题
- DialogContent 添加 pt-6 避开关闭按钮
- 内容区域移除顶部 padding,改为 pb-6
fix: 增加弹窗顶部间距 (pt-6 → pt-8)
fix: 优化弹窗尺寸和按钮间距
- 弹窗最大宽度 360→420px 适配标签页
- 增加按钮 padding (px-2→px-3, py-1→py-1.5)
- 添加按钮增加 padding (h-8→h-9, px-3)
2026-06-06 10:43:35 +08:00
雨霖铃
40443c8fc5
fix: 优化字段编辑弹窗样式
...
- 去除弹窗标题
- 描述文字显示选择字段提示
- 关闭按钮置顶,不随内容滚动
- 内容区域独立滚动
2026-06-06 10:32:19 +08:00
雨霖铃
ee4a45630e
fix: 限制弹窗尺寸适配 popup 显示
...
- 最大宽度 360px
- 最大高度 calc(100vh - 4rem)
- 内容超出时支持滚动
- 宽度自适应 viewport
2026-06-06 10:31:07 +08:00
雨霖铃
4a423889d9
feat: 字段编辑改为弹窗显示
...
- 添加 Dialog 组件包裹 FieldEditor
- 点击字段卡片打开编辑弹窗
- 简化布局,移除右侧字段编辑面板
- 支持点击遮罩或关闭按钮关闭弹窗
2026-06-06 10:29:44 +08:00
雨霖铃
ee78e314d3
fix: 修复拖拽时滚轮滚动不生效问题
...
- 改为在 document 级别监听 wheel 事件
- 使用 capture 阶段优先处理事件
- 确保在 PointerSensor 拦截前捕获滚轮事件
2026-06-06 10:20:59 +08:00
雨霖铃
ee77c97b56
feat: 拖拽时支持鼠标滚轮滚动列表
...
- 拖拽状态下监听 wheel 事件
- 使用 preventDefault 阻止默认滚动
- 降低滚动速度 (0.5x) 提供更精确的控制
- 自动更新虚拟列表渲染范围
2026-06-06 10:18:13 +08:00
雨霖铃
aa8b84af50
fix: 修复虚拟列表拖拽时显示空白问题
...
- 添加 DragOverlay 独立渲染拖拽中的项目
- 拖拽时扩展预加载范围 (OVERSCAN 2→10)
- 添加 activeId 状态跟踪拖拽项目
- 拖拽中的卡片以半透明效果独立显示
2026-06-06 10:17:16 +08:00
雨霖铃
707f17ac84
feat: 字段列表优化 - 输入限制、选中样式、取消选中
...
- FieldEditor: 字段名称maxLength=20,描述maxLength=50
- FieldItem: 统一有无描述时的垂直居中布局,选中左侧竖线+背景高亮
- FieldList: 点击已选中字段可取消选中,选中态加shadow和ring效果
- index: 支持selectedIndex=-1取消选中
2026-06-06 10:09:48 +08:00
雨霖铃
af0b2d8ed1
fix: 统一字段列表卡片高度,最大字段数改为40
...
- MAX_FIELDS: 20 → 40
- 固定卡片高度52px,无论虚拟/非虚拟模式视觉一致
- 5条以上容器高度固定,启用虚拟滚动
- 主页面添加字段时检查MAX_FIELDS限制
2026-06-06 09:58:57 +08:00
雨霖铃
49e7f1ea55
feat: 实现虚拟列表、拖拽排序、实时预览防抖,更新文档
...
- DataPreview: 大数据量(>100条)自动启用虚拟滚动,仅渲染可见区域
- FieldList: 基于 @dnd-kit/sortable 实现拖拽排序
- index.tsx: 配置变更时300ms防抖生成预览数据
- ui-design.md: 去除平板/移动端响应式、快捷键,更新交互说明
- technical-implementation.md: 去除downloadAsZip,更新虚拟列表说明
2026-06-06 09:42:58 +08:00
雨霖铃
1a92e88934
feat: 实现测试数据生成器完整功能
...
- 添加类型定义 (FieldConfig, DataRule, GeneratorDefinition 等)
- 实现 21 个数据生成器 (个人信息/业务数据/技术数据/基础类型)
- 实现 Web Worker 后台数据生成引擎
- 实现规则存储与管理功能
- 实现 JSON/CSV 数据导出功能
- 开发完整 UI 组件 (字段管理/生成器选择/数据预览/导出面板等)
- 集成到应用功能配置,添加国际化支持
功能特性:
- 实时预览生成的数据
- 字段配置 (名称/描述/必填/空值率/唯一性约束)
- 规则管理 (保存/加载/搜索/导入导出)
- Web Worker 后台生成,支持进度显示和取消
- 响应式布局,支持多种设备
docs: 更新 TASKS.md 所有子任务复选框为已完成状态
2026-06-06 09:29:12 +08:00
雨霖铃
2b84eda24f
docs: 统一测试数据生成器文档,移除 SQL/TypeScript 导出,修复接口命名不一致
...
- 移除所有文档中的 SQL 和 TypeScript 导出格式引用
- 统一数据导出格式为 JSON 和 CSV
- 移除 GeneratorDefinition 中的 icon 字段
- 更新 generatorCategories 配置,包含所有 21 个生成器
- 统一 rule-management.md 和 technical-implementation.md 中的接口名称为 DataRule
- 更新 ui-design.md 中的界面设计,移除 SQL/TypeScript 相关元素
2026-06-06 09:04:53 +08:00
雨霖铃
7f22b95aa2
refactor: 移除不必要的 export 关键字
...
中优先级任务:将仅内部使用的函数和类型移除 export 关键字
移除 export 的函数:
- uiPopover: showPopover
- storageCleaner: injectClearLocalStorage, injectClearSessionStorage,
injectClearIndexedDB, injectClearCacheStorage, injectUnregisterServiceWorkers
移除 export 的类型和常量:
- base64Converter: SUPPORTED_IMAGE_TYPES, SUPPORTED_IMAGE_EXTENSIONS,
TextToBase64Result, Base64ToBlobResult
- contextMenu: ContextMenuItemConfig, ContextMenuClickedInfo, ParseResult
- jsonFormatter: JsonMinifyResult
- jsonToToml: JsonToTomlResult
- jsonToYaml: JsonToYamlResult
- jwt: JwtHeader, JwtPayload
- qrCodeParser: QrCodeParseResult
所有 473 个测试通过,类型检查通过
2026-06-06 01:00:10 +08:00
雨霖铃
9990d86270
refactor: 删除高优先级死代码
...
删除未使用的代码以提高代码质量和可维护性:
删除的文件:
- src/pages/Dashboard/ToolCard.tsx:未被使用的组件
- src/utils/useDebounce.ts:未被使用的 hook
- src/components/__tests__/ToolCard.test.tsx:对应组件的测试文件
删除的导出函数:
- chromeTabs: getActiveTab, getActiveTabDomain, ensureContentScriptInjected
- clipboard: copyImageToClipboard
- storageCleaner: isEmptyResult
- chromeI18n: preloadNamespaces
- useContextMenuData: clearContextMenuData
更新了对应的测试文件以保持一致性
总计删除 525 行代码,所有 473 个测试通过
2026-06-06 01:00:10 +08:00
雨霖铃
ea0552e8aa
feat: 替换项目图标为自定义 logo
...
- 替换 public/icon/ 目录下所有 PNG 图标文件为新 logo
- 删除 public/wxt.svg(不再需要)
- 在 wxt.config.ts 中添加 icons 和 default_icon 配置
- 更新 public/README.md 文档
2026-06-06 01:00:10 +08:00
雨霖铃
97098c3abe
refactor: 移除不必要的 export 关键字
...
中优先级任务:将仅内部使用的函数和类型移除 export 关键字
移除 export 的函数:
- uiPopover: showPopover
- storageCleaner: injectClearLocalStorage, injectClearSessionStorage,
injectClearIndexedDB, injectClearCacheStorage, injectUnregisterServiceWorkers
移除 export 的类型和常量:
- base64Converter: SUPPORTED_IMAGE_TYPES, SUPPORTED_IMAGE_EXTENSIONS,
TextToBase64Result, Base64ToBlobResult
- contextMenu: ContextMenuItemConfig, ContextMenuClickedInfo, ParseResult
- jsonFormatter: JsonMinifyResult
- jsonToToml: JsonToTomlResult
- jsonToYaml: JsonToYamlResult
- jwt: JwtHeader, JwtPayload
- qrCodeParser: QrCodeParseResult
所有 473 个测试通过,类型检查通过
2026-06-06 00:55:05 +08:00
雨霖铃
7afce94d93
refactor: 删除高优先级死代码
...
删除未使用的代码以提高代码质量和可维护性:
删除的文件:
- src/pages/Dashboard/ToolCard.tsx:未被使用的组件
- src/utils/useDebounce.ts:未被使用的 hook
- src/components/__tests__/ToolCard.test.tsx:对应组件的测试文件
删除的导出函数:
- chromeTabs: getActiveTab, getActiveTabDomain, ensureContentScriptInjected
- clipboard: copyImageToClipboard
- storageCleaner: isEmptyResult
- chromeI18n: preloadNamespaces
- useContextMenuData: clearContextMenuData
更新了对应的测试文件以保持一致性
总计删除 525 行代码,所有 473 个测试通过
2026-06-06 00:49:57 +08:00
雨霖铃
e2b76a5f86
feat: 替换项目图标为自定义 logo
...
- 替换 public/icon/ 目录下所有 PNG 图标文件为新 logo
- 删除 public/wxt.svg(不再需要)
- 在 wxt.config.ts 中添加 icons 和 default_icon 配置
- 更新 public/README.md 文档
2026-06-05 23:57:04 +08:00
雨霖铃
1ab79785b6
docs(AGENTS.md): 添加 Git Commit 必须使用中文描述的规范
2026-06-05 23:41:04 +08:00
雨霖铃
c40b66b703
docs: 更新测试数据生成器功能设计文档
...
主要更新:
- 添加字段必填/选填设置和空值率配置
- 移除标签管理系统(20条规则无需标签)
- 添加组合策略保证唯一性生成
- 添加价格生成器(真实分布/心理定价)
- 添加场景化生成器(年龄/数量/评分/折扣/库存)
- 更新所有文档移除emoji,使用纯文字
- 更新类型定义和生成逻辑
2026-06-05 23:40:36 +08:00
雨霖铃
f55fd4338d
docs(AGENTS.md): 添加 Git Commit 必须使用中文描述的规范
2026-06-05 22:54:29 +08:00
雨霖铃
27c1cf37e3
chore: update .gitignore with common ignore patterns
...
- Add environment variable files (.env, .env.local, .env.*.local)
- Add build output directories (dist/, build/)
- Add test coverage directory (coverage/)
- Add IDE workspace files (*.code-workspace)
- Add TypeScript build info files (*.tsbuildinfo, *.tsxbuildinfo)
- Remove docs/* to track documentation files
2026-06-05 22:53:39 +08:00
雨霖铃
2520d72eb1
refactor: 移动 CopyButton 测试文件到统一 __tests__ 目录
2026-06-05 21:57:19 +08:00
LingandRX
4d038203a7
fix(CopyButton): 修复 review 反馈并补充测试 ( #66 )
...
* fix: remove non-functional animation classes from CopyButton
* test(CopyButton): 补充单元测试覆盖边界场景
* fix: unify CopyButton imports to named export across all consumers
* fix(CopyButton): add aria-label for screen reader accessibility
2026-06-05 21:16:12 +08:00
LingandRX
2c45ddada9
fix: add missing Toaster component to enable toast display ( #65 )
...
The project was calling toast.success/error/warning from sonner in 7 files,
but the <Toaster> component was never rendered in the React tree. This meant
sonner stored toast data internally but no UI was ever displayed to users.
Changes:
- Create src/components/ui/sonner.tsx with shadcn/ui-style Toaster wrapper
that integrates with ThemeModeProvider for light/dark theme support
- Add <Toaster /> to AppRoot.tsx so it works across all entry points
(popup, sidepanel, browser-tab)
fix: always convert dots to underscores in i18n t() key lookup
The t() function only converted dots to underscores when the key contained
a colon (namespace:key format). Keys using dot notation like
'messages.copySuccess' were passed directly to chrome.i18n.getMessage()
without dot-to-underscore conversion, causing lookups to fail silently and
return empty strings - resulting in toast notifications with no text.
Now all separators (both ':' and '.') are consistently converted to '_'
regardless of format, matching the messages.json key convention.
fix: position toast at bottom-center instead of bottom-right
2026-06-05 19:34:09 +08:00
LingandRX
a0b1ade662
Merge branch 'main' into develop
2026-06-05 13:10:34 +08:00
雨霖铃
d964e27c9d
fix(hooks): 用 merge-base 替代 rev-parse 修复 pre-push 变更文件检测
2026-06-05 13:02:30 +08:00
LingandRX
359326c6da
Hotfix/contextmenu srcurl generating fix ( #63 )
...
* fix: 修复右键菜单 srcUrl 误判、pre-push 全量扫描、generating 状态不可见问题
- contextMenu: srcUrl 检查限定为 qrCode-image 菜单项,避免其他菜单误返回图片 URL
- pre-push: eslint 改为只检查变更文件(git diff 过滤),tsc 保留全项目检查
- useQrCode: confirmGenerate 用 setTimeout 延迟生成,让 loading 状态先被 React 渲染
- tests: 生成相关测试改为 async + waitFor 适配异步 confirmGenerate
* fix(hooks): pre-push 无 upstream 时回退到 origin/main 对比
2026-06-05 12:53:19 +08:00
雨霖铃
10644fae95
fix(hooks): pre-push 无 upstream 时回退到 origin/main 对比
2026-06-05 12:50:55 +08:00
雨霖铃
77f722b575
fix: 修复右键菜单 srcUrl 误判、pre-push 全量扫描、generating 状态不可见问题
...
- contextMenu: srcUrl 检查限定为 qrCode-image 菜单项,避免其他菜单误返回图片 URL
- pre-push: eslint 改为只检查变更文件(git diff 过滤),tsc 保留全项目检查
- useQrCode: confirmGenerate 用 setTimeout 延迟生成,让 loading 状态先被 React 渲染
- tests: 生成相关测试改为 async + waitFor 适配异步 confirmGenerate
2026-06-05 12:49:43 +08:00
LingandRX
0624b609be
Merge pull request #62 from LingandRX/hotfix/remove-unused-alarms
...
hotfix: remove unused alarms permission
v1.0.6
2026-06-02 19:10:26 +08:00
Ubuntu
f551428142
hotfix: remove unused alarms permission
2026-06-02 19:09:39 +08:00
LingandRX
1ae057ccfa
Merge pull request #61 from LingandRX/hotfix/revert-version
...
hotfix: revert package.json version to 1.0.0
2026-06-02 14:59:34 +08:00
Ubuntu
400a1afb0c
hotfix: revert package.json version to 1.0.0
2026-06-02 14:58:54 +08:00
LingandRX
c6d0914d33
Merge pull request #60 from LingandRX/develop
...
fix: update _locales path in vitest.setup.ts
2026-06-02 14:38:05 +08:00
Ubuntu
7617e317f2
fix: update _locales path from zh to zh_CN in vitest.setup.ts
2026-06-02 14:35:56 +08:00
LingandRX
396b3d7013
Merge pull request #59 from LingandRX/develop
...
fix: correct default_locale to zh_CN
2026-06-02 14:18:20 +08:00
雨霖铃
92fb853329
fix: correct default_locale to zh_CN to match _locales directory
2026-06-02 14:16:33 +08:00
雨霖铃
e4e5464be0
chore(hooks): 优化 lint-staged 和 git hooks 配置
...
- lint-staged: 本地开发仅自动修复不阻塞,CI 环境严格检查
- pre-commit: 后台运行 tsc 类型检查,前台运行 lint-staged
- pre-push: 新增严格检查闸门(tsc + eslint --max-warnings=0)
2026-05-30 21:31:12 +08:00
LingandRX
f4b6ae89b5
Merge pull request #58 from LingandRX/develop
...
chore: merge develop into main (v1.x.x)
2026-05-30 21:20:52 +08:00
雨霖铃
37bdeb5f3a
fix(qrcode): 去除已上传图片区域重复的文本预览
...
- 移除图片预览区域中的解析结果文本预览
- 解析结果只在下方的 TextInputArea 中显示
- 避免重复显示相同内容
2026-05-30 21:03:35 +08:00
雨霖铃
e919af6857
fix(qrcode): 修复图片右键菜单功能描述和检测逻辑
...
- 修改菜单标题为「解析图片二维码」更准确
- 改进 isImageUrl 函数,支持更多图片URL格式
- 支持 data:image/ 格式
- 支持URL路径中包含图片相关关键词
- 更新国际化文案和测试用例
2026-05-30 21:01:33 +08:00
雨霖铃
5be15301b5
feat(qrcode): 实现图片转二维码右键菜单功能
...
- 添加图片类型的右键菜单配置
- 修改 parseContextMenuClick 支持 srcUrl 参数
- 实现图片URL自动解析功能
- 检测图片URL自动切换到解析模式
- 更新测试用例覆盖新功能
- 新增国际化文案
2026-05-30 20:58:28 +08:00
雨霖铃
306600a35c
refactor(qrcode): 优化二维码转文本布局,与文本转二维码风格统一
...
- 未上传图片时只显示上传区域
- 上传图片后显示小图预览 + 解析结果
- 添加重新上传按钮
- 解析结果文本限制显示长度
- 新增国际化文案(已上传图片、重新上传、解析中等)
- 适配popup窗口紧凑布局
2026-05-30 20:51:48 +08:00
雨霖铃
a0345b384d
style(qrcode): 优化预览态布局适配popup窗口
...
- 调整文本预览区域高度,单行显示截断文本
- 缩小二维码图片尺寸(56x56 -> 48x48)
- 减少内边距和间距,更紧凑的布局
- 确保完整显示在popup窗口中无需滚动
2026-05-30 20:46:47 +08:00
雨霖铃
9458d62a99
feat(qrcode): 右键菜单传入URL时自动生成二维码
...
- 右键菜单传入URL时直接生成二维码,跳转到预览态
- 保留手动输入文本并点击生成按钮的功能
- 优化用户体验,简化操作流程
2026-05-30 20:38:23 +08:00
雨霖铃
5b26287cff
refactor(qrcode): 优化布局逻辑,输入态隐藏预览区域
...
- 输入态:只显示输入框和生成按钮,隐藏二维码预览
- 预览态:上方显示文本预览(超长文本截断),下方显示二维码
- 点击编辑返回输入态,隐藏二维码预览
- 更新测试用例适配新布局
2026-05-30 20:29:12 +08:00
雨霖铃
6dca673a5a
refactor(qrcode): 优化文本转二维码为两步操作模式
...
- 将实时预览改为显式触发生成,用户体验更清晰
- 新增输入态(input)和预览态(preview)两种状态
- 输入态:显示输入框和生成按钮,右侧显示占位提示
- 预览态:显示只读文本预览和编辑按钮,右侧显示二维码
- 保存上次输入内容,返回编辑态时自动回填
- 添加空输入校验和错误提示
- 更新国际化文案
- 完善单元测试覆盖新功能
2026-05-30 20:23:05 +08:00
雨霖铃
afd57bb5b2
Merge branch 'main' into develop
2026-05-30 19:47:16 +08:00