fix: resolve remaining QA issues -- editor features, masking, persistence, Playwright tests

Phase 1 quick fixes:
- Add isInputFocused() guard to Cmd+A/D/T/J shortcuts (P1-7)
- Add Go Home button to tool-not-found page (P2-30)
- Fix hardcoded "Import from Library" string in file library modal (P2-28)
- Fix TeamEntry.id type from number to string to match API (P2-6)
- Add eye toggle to confirm password field (P2-10)
- Add Apply/Cancel buttons to Free Transform options bar (P2-14)

Phase 2 state fixes:
- Add sessionStorage persistence to pipeline store (P1-26)
- Fix Free Transform 0 dimensions by falling back to selection bounds (P1-6)

Phase 3 editor features:
- Constrain brush/eraser drawing within active selection bounds (P1-5)
- Add feather radius control to selection options (P2-21)
- Add flow control slider to brush options (P2-22)
- Add brush/block mode selector to eraser options (P2-23)
- Add estimated file size display to export dialog (P2-18)

Phase 4:
- Add Playwright e2e tests for key fixes (404 page, routing, pipeline persistence, export dialog)
This commit is contained in:
SnapOtter
2026-06-05 23:14:57 +08:00
parent 07e12754ba
commit 190d5c84bf
40 changed files with 1144 additions and 500 deletions
+17 -10
View File
@@ -37,9 +37,8 @@ export const zhCN: TranslationKeys = {
retry: "重试",
privacyPolicy: "隐私政策",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
noToolsFound: "No tools found",
},
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "基础工具",
optimization: "优化",
@@ -540,6 +539,13 @@ export const zhCN: TranslationKeys = {
intensity: "强度",
addShadow: "添加阴影",
opacity: "不透明度",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "渲染中...",
submit: "移除背景",
submitBatch: "移除背景({count} 个文件)",
@@ -1623,7 +1629,8 @@ export const zhCN: TranslationKeys = {
docsLink: "文档",
apiRefLink: "API 参考(Swagger",
licenseLabel: "License:",
licenseDescription: "Dual-licensed under AGPLv3 and a commercial license.",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
@@ -1763,9 +1770,9 @@ export const zhCN: TranslationKeys = {
pipelineName: "Pipeline 名称",
pipelineDescription: "描述(可选)",
noStepsPrompt: "添加步骤来构建自动化流程",
noStepsHeading: "No steps yet",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "步骤",
step: "步骤",
},
nav: {
tools: "工具",
@@ -1778,11 +1785,11 @@ export const zhCN: TranslationKeys = {
grid: "网格",
},
files: {
recentTab: "最近",
uploadTab: "上传",
fileDetailsAriaLabel: "文件详情",
fileDetailsHeading: "文件详情",
myFiles: "My Files",
recentTab: "Recent",
uploadTab: "Upload Files",
fileDetailsAriaLabel: "File Details",
fileDetailsHeading: "File Details",
searchPlaceholder: "Search files...",
selectedCount: "{count} selected",
fileCount: "{count} files",