fix: resolve all QA report issues from 2026-06-05 sweep

Merges 77 QA issue fixes across routing, editor, i18n, pipeline,
and settings. Includes catch-all 404 page, keyboard shortcuts,
export filename, password validation, selection masking, brush flow,
eraser modes, feather control, pipeline persistence, RTL properties,
license info, and i18n for all 21 locales.
This commit is contained in:
SnapOtter
2026-06-06 10:37:36 +08:00
44 changed files with 1127 additions and 210 deletions
@@ -394,6 +394,7 @@ export function useEditorShortcuts(callbacks?: {
useHotkeys(
"mod+a",
(e) => {
if (isInputFocused()) return;
e.preventDefault();
const state = useEditorStore.getState();
const allIds = state.objects.map((o) => o.id);
@@ -406,6 +407,7 @@ export function useEditorShortcuts(callbacks?: {
useHotkeys(
"mod+d",
(e) => {
if (isInputFocused()) return;
e.preventDefault();
useEditorStore.getState().setSelectedObjects([]);
useEditorStore.getState().setSelection(null);
@@ -496,6 +498,7 @@ export function useEditorShortcuts(callbacks?: {
useHotkeys(
"mod+t",
(e) => {
if (isInputFocused()) return;
e.preventDefault();
useEditorStore.getState().setTool("transform");
},
@@ -506,6 +509,7 @@ export function useEditorShortcuts(callbacks?: {
useHotkeys(
"mod+j",
(e) => {
if (isInputFocused()) return;
e.preventDefault();
const state = useEditorStore.getState();
state.duplicateLayer(state.activeLayerId);
@@ -517,6 +521,7 @@ export function useEditorShortcuts(callbacks?: {
useHotkeys(
"mod+shift+n",
(e) => {
if (isInputFocused()) return;
e.preventDefault();
useEditorStore.getState().addLayer();
},