feat(photo-editor): Ajax Image Editor client (Photoshop-parity tools)

Photoshop-parity editor client: layers, selection/masking, brushes,
smart filters, LUT import, Quick Edit, mobile gestures, workspaces,
batch operations, and the service-worker versioning (v978->v1006).

Source: vendor/photocraft (ad1cff44) photo-editor client files, merged
onto upstream/dev (a8c147b2). Conflict resolution documented in
pr_work/A_conflicts.md; editor files taken from vendor/photocraft
(upstream's editor is an earlier snapshot of the same feature).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
pewdiepie-archdaemon
2026-10-15 11:57:35 +00:00
co-authored by Claude Opus 5.5
parent c74f475679
commit 5fac693c1c
290 changed files with 34358 additions and 766 deletions
+43
View File
@@ -0,0 +1,43 @@
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def read(rel):
return (ROOT / rel).read_text(encoding="utf-8")
def test_command_palette_module_shape():
src = read("static/js/editor/build/command-palette.js")
assert "export function createCommandPalette(" in src
for token in [
"ge-command-palette",
"ge-command-panel",
"ge-command-input",
"ge-command-list",
"ge-command-item",
"ge-command-empty",
"role",
"aria-modal",
]:
assert token in src, token
def test_gallery_wires_command_palette():
src = read("static/js/galleryEditor.js")
assert "import { createCommandPalette } from './editor/build/command-palette.js';" in src
assert "createCommandPalette(" in src
assert "commandPalette.toggle()" in src
assert "state.editorOpen" in src
assert "'k'" in src
def test_command_palette_css_present():
src = read("static/css/13-image-editor.css")
for token in [".ge-command-palette", ".ge-command-panel", ".ge-command-item.active", ".ge-command-empty"]:
assert token in src, token
def test_command_palette_is_precached():
src = read("static/sw.js")
assert "/static/js/editor/build/command-palette.js" in src