← back to Wallco Ai
wall-calc: 'Save defaults' link pins W×H across PDPs with clear action
3cf89a984bd9fe329cbe7b1bf42742e12e560e89 · 2026-05-12 15:33:36 -0700 · SteveStudio2
Files touched
M data/chip-chats.jsonM data/moodboards.jsonM data/pairings.jsonM data/reviews.jsonM data/vision-cache.jsonA public/uploads/studio/abc_envA public/uploads/studio/abc_escape.pngA public/uploads/studio/anon-1778593186660_x.pngA public/uploads/studio/anon-1778593188756_clean.pngA public/uploads/studio/anon-1778593202294_x.pngA public/uploads/studio/anon-1778593204319_clean.pngA public/uploads/studio/anon-1778593228883_x.pngA public/uploads/studio/anon-1778593230815_clean.pngA public/uploads/studio/anon-1778593245262_x.pngA public/uploads/studio/anon-1778593475377_x.pngA public/uploads/studio/anon-1778593477424_clean.pngA public/uploads/studio/anon-1778593601608_x.pngA public/uploads/studio/anon-1778593603667_clean.pngA public/uploads/studio/anon-1778594239612_x.pngA public/uploads/studio/anon-1778594241645_clean.pngA public/uploads/studio/anon-1778595929905_x.pngA public/uploads/studio/anon-1778595932493_clean.pngA public/uploads/studio/anon-1778615141686_x.pngA public/uploads/studio/anon-1778615143838_clean.pngA public/uploads/studio/anon-1778621049454_x.pngA public/uploads/studio/anon-1778621051395_clean.pngA public/uploads/studio/anon-1778621261864_x.pngA public/uploads/studio/anon-1778621263848_clean.pngA public/uploads/studio/test-1778593188275_tiny.pngA public/uploads/studio/test-1778593203822_tiny.pngA public/uploads/studio/test-1778593230349_tiny.pngA public/uploads/studio/test-1778593476944_tiny.pngA public/uploads/studio/test-1778593603188_tiny.pngA public/uploads/studio/test-1778594241189_tiny.pngA public/uploads/studio/test-1778595931840_tiny.pngA public/uploads/studio/test-1778615143370_tiny.pngA public/uploads/studio/test-1778621050946_tiny.pngA public/uploads/studio/test-1778621263377_tiny.pngA public/uploads/studio/test123_tiny.pngA public/uploads/studio/test_tiny.pngM server.js
Diff
commit 3cf89a984bd9fe329cbe7b1bf42742e12e560e89
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Tue May 12 15:33:36 2026 -0700
wall-calc: 'Save defaults' link pins W×H across PDPs with clear action
---
data/chip-chats.json | 22 ++++
data/moodboards.json | 74 ++++++++++++
data/pairings.json | 134 +++++++++++++++++++++
data/reviews.json | 48 +-------
data/vision-cache.json | 4 +-
public/uploads/studio/abc_env | Bin 0 -> 73 bytes
public/uploads/studio/abc_escape.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593186660_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593188756_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593202294_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593204319_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593228883_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593230815_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593245262_x.png | 1 +
public/uploads/studio/anon-1778593475377_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593477424_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593601608_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778593603667_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778594239612_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778594241645_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778595929905_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778595932493_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778615141686_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778615143838_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778621049454_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778621051395_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778621261864_x.png | Bin 0 -> 73 bytes
public/uploads/studio/anon-1778621263848_clean.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778593188275_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778593203822_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778593230349_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778593476944_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778593603188_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778594241189_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778595931840_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778615143370_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778621050946_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test-1778621263377_tiny.png | Bin 0 -> 73 bytes
public/uploads/studio/test123_tiny.png | 0
public/uploads/studio/test_tiny.png | 1 +
server.js | 41 ++++++-
41 files changed, 272 insertions(+), 53 deletions(-)
diff --git a/data/chip-chats.json b/data/chip-chats.json
index 21b7902..90ca89a 100644
--- a/data/chip-chats.json
+++ b/data/chip-chats.json
@@ -10,5 +10,27 @@
"content": "\"Honey Garden No.13\" features a medium-to-large floral scale, ideal for medium to large rooms where the pattern can breathe without overwhelming the space. The warm, earthy tone (#87774c) adds depth, but for smaller rooms, reducing the floral density or lightening the color slightly could enhance spatial perception.",
"ts": "2026-05-12T05:53:19.894Z"
}
+ ],
+ "29:cat-geometric": [
+ {
+ "role": "user",
+ "content": "What scale of room does this work in?",
+ "ts": "2026-05-12T20:28:17.637Z"
+ },
+ {
+ "role": "assistant",
+ "content": "\"Sapphire Fan No.29\" works well in medium to large rooms, where its geometric precision and deep blue tone add depth without overwhelming space. In smaller rooms, the dark hue may absorb light—consider lightening the color or increasing tile scale for better balance.",
+ "ts": "2026-05-12T20:28:17.643Z"
+ },
+ {
+ "role": "user",
+ "content": "What scale of room does this work in?",
+ "ts": "2026-05-12T21:14:30.207Z"
+ },
+ {
+ "role": "assistant",
+ "content": "\"Sapphire Fan No.29\" suits medium to large spaces, where its bold geometric contrast and deep blue tone create visual interest without claustrophobia. In smaller rooms, the dark hue risks feeling heavy—consider scaling up tile size or lightening the palette to maintain balance.",
+ "ts": "2026-05-12T21:14:30.207Z"
+ }
]
}
\ No newline at end of file
diff --git a/data/moodboards.json b/data/moodboards.json
index 7284bfd..d95f449 100644
--- a/data/moodboards.json
+++ b/data/moodboards.json
@@ -1,4 +1,5 @@
{
+ "1": [],
"14": [
{
"pin_key": "d:12",
@@ -12,5 +13,78 @@
"pinned": false,
"pinned_at": "2026-05-12T05:54:05.484Z"
}
+ ],
+ "72": [],
+ "99999": [
+ {
+ "pin_key": "sanitize-test-1778593437812",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:43:57.812Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778593444663",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:44:04.663Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778593467585",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:44:27.586Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778593481477",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:44:41.478Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778593601521",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:46:41.521Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778594245715",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T13:57:25.716Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778595936004",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T14:25:36.004Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778615141682",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T19:45:41.682Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778621049450",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T21:24:09.451Z"
+ },
+ {
+ "pin_key": "sanitize-test-1778621261862",
+ "type": "color",
+ "hex": "#abcdef",
+ "label": "ok",
+ "pinned_at": "2026-05-12T21:27:41.863Z"
+ }
]
}
\ No newline at end of file
diff --git a/data/pairings.json b/data/pairings.json
index aab8d63..8d7c35a 100644
--- a/data/pairings.json
+++ b/data/pairings.json
@@ -66,6 +66,73 @@
}
]
},
+ "16": {
+ "design_id": 16,
+ "vision_description": "Gold leaf pattern with a large-scale repeat, exuding a luxurious and formal atmosphere.",
+ "generated_at": "2026-05-12T19:48:37.712Z",
+ "suggestions": [
+ {
+ "type": "design",
+ "design_id": 17,
+ "label": "Honey Geometry No.17",
+ "reason": "Same family (geometric), different palette — pattern echo with chromatic counterpoint",
+ "thumb_url": "/designs/img/1778541118993_368707680.png",
+ "hex": "#f0e8db",
+ "idx": 0,
+ "pin_key": "d:17",
+ "pinned": false
+ },
+ {
+ "type": "design",
+ "design_id": 59,
+ "label": "Sage Salon No.59",
+ "reason": "Different language (damask), shared palette — connector for a layered room",
+ "thumb_url": "/designs/img/1778551159119_519127559.png",
+ "hex": "#3d483c",
+ "idx": 1,
+ "pin_key": "d:59",
+ "pinned": false
+ },
+ {
+ "type": "color",
+ "hex": "#6a356e",
+ "label": "Complement · #6a356e",
+ "reason": "Direct chromatic opposite — trim, hardware, or a single accent piece",
+ "idx": 2,
+ "pin_key": "c:#6a356e",
+ "pinned": false
+ },
+ {
+ "type": "color",
+ "hex": "#356e4e",
+ "label": "Analogous · #356e4e",
+ "reason": "Neighboring hue — supporting fabric or upholstery, harmonious not loud",
+ "idx": 3,
+ "pin_key": "c:#356e4e",
+ "pinned": false
+ },
+ {
+ "type": "material",
+ "label": "Bronze-plated mirrors",
+ "reason": "Amplify gold leaf's luxury, adding reflective depth against the rich sage backdrop.",
+ "icon": "✦",
+ "vision_grounded": true,
+ "idx": 4,
+ "pin_key": "m:bronze-plated-mirrors",
+ "pinned": false
+ },
+ {
+ "type": "material",
+ "label": "Walnut wood paneling",
+ "reason": "Introduce warm, natural texture, balancing the formal geometric pattern with organic sophistication.",
+ "icon": "✦",
+ "vision_grounded": true,
+ "idx": 5,
+ "pin_key": "m:walnut-wood-paneling",
+ "pinned": false
+ }
+ ]
+ },
"21": {
"design_id": 21,
"vision_description": "Gold ornate floral pattern on a blue background with large-scale repeats, exuding a luxurious and formal atmosphere.",
@@ -132,5 +199,72 @@
"pinned": false
}
]
+ },
+ "72": {
+ "design_id": 72,
+ "vision_description": "Floral pattern with butterflies, predominantly red and gold on a white background, small-scale repeat, formal mood.",
+ "generated_at": "2026-05-12T19:49:42.732Z",
+ "suggestions": [
+ {
+ "type": "design",
+ "design_id": 53,
+ "label": "Sapphire Folio No.53",
+ "reason": "Same family (mixed), different palette — pattern echo with chromatic counterpoint",
+ "thumb_url": "/designs/img/1778550352534_1025904412.png",
+ "hex": "#7e8897",
+ "idx": 0,
+ "pin_key": "d:53",
+ "pinned": false
+ },
+ {
+ "type": "design",
+ "design_id": 256,
+ "label": "Honey Damask No.256",
+ "reason": "Different language (damask), shared palette — connector for a layered room",
+ "thumb_url": "/designs/img/1778565388337_299191350.png",
+ "hex": "#e2a749",
+ "idx": 1,
+ "pin_key": "d:256",
+ "pinned": false
+ },
+ {
+ "type": "color",
+ "hex": "#5dc8e8",
+ "label": "Complement · #5dc8e8",
+ "reason": "Direct chromatic opposite — trim, hardware, or a single accent piece",
+ "idx": 2,
+ "pin_key": "c:#5dc8e8",
+ "pinned": false
+ },
+ {
+ "type": "color",
+ "hex": "#e8c35d",
+ "label": "Analogous · #e8c35d",
+ "reason": "Neighboring hue — supporting fabric or upholstery, harmonious not loud",
+ "idx": 3,
+ "pin_key": "c:#e8c35d",
+ "pinned": false
+ },
+ {
+ "type": "material",
+ "label": "Aged brass hardware",
+ "reason": "Warm metallic tones echo the gold in the pattern, enhancing the formal, opulent mood.",
+ "icon": "✦",
+ "vision_grounded": true,
+ "idx": 4,
+ "pin_key": "m:aged-brass-hardware",
+ "pinned": false
+ },
+ {
+ "type": "material",
+ "label": "Walnut wood paneling",
+ "reason": "Deep, rich hues contrast the white background, adding sophistication that complements the floral formality.",
+ "icon": "✦",
+ "vision_grounded": true,
+ "idx": 5,
+ "pin_key": "m:walnut-wood-paneling",
+ "pinned": false
+ }
+ ]
}
}
\ No newline at end of file
diff --git a/data/reviews.json b/data/reviews.json
index 294750f..9e26dfe 100644
--- a/data/reviews.json
+++ b/data/reviews.json
@@ -1,47 +1 @@
-{
- "11": {
- "id": "11",
- "design": 8,
- "color": 5,
- "style": 5,
- "decision": "keep",
- "why": "(auto-rationale unavailable: The operation was aborted due to timeout)",
- "updated_at": "2026-05-12T05:52:49.586Z"
- },
- "12": {
- "id": "12",
- "design": 5,
- "color": 5,
- "style": 5,
- "decision": "reject",
- "why": "The design lacks visual contrast and dynamic pattern repetition, resulting in a flat, unengaging seamless tile.",
- "updated_at": "2026-05-12T05:53:04.394Z"
- },
- "15": {
- "id": "15",
- "design": 5,
- "color": 5,
- "style": 5,
- "decision": "keep",
- "why": "Muted color and lack of contrast make the design less striking despite functional seamless tiling.",
- "updated_at": "2026-05-12T05:51:09.593Z"
- },
- "16": {
- "id": "16",
- "design": 5,
- "color": 5,
- "style": 5,
- "decision": "reject",
- "why": "The design lacks visual dynamism and originality, with a muted color palette and repetitive geometric patterns failing to engage or distingu",
- "updated_at": "2026-05-12T05:51:22.377Z"
- },
- "17": {
- "id": "17",
- "design": 7,
- "color": 5,
- "style": 5,
- "decision": null,
- "why": "",
- "updated_at": "2026-05-12T05:51:24.001Z"
- }
-}
\ No newline at end of file
+{}
\ No newline at end of file
diff --git a/data/vision-cache.json b/data/vision-cache.json
index 1563820..1a6c545 100644
--- a/data/vision-cache.json
+++ b/data/vision-cache.json
@@ -1,4 +1,6 @@
{
"14": "Floral pattern with yellow flowers on a dark background, small to medium scale, formal mood.",
- "21": "Gold ornate floral pattern on a blue background with large-scale repeats, exuding a luxurious and formal atmosphere."
+ "16": "Gold leaf pattern with a large-scale repeat, exuding a luxurious and formal atmosphere.",
+ "21": "Gold ornate floral pattern on a blue background with large-scale repeats, exuding a luxurious and formal atmosphere.",
+ "72": "Floral pattern with butterflies, predominantly red and gold on a white background, small-scale repeat, formal mood."
}
\ No newline at end of file
diff --git a/public/uploads/studio/abc_env b/public/uploads/studio/abc_env
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/abc_env differ
diff --git a/public/uploads/studio/abc_escape.png b/public/uploads/studio/abc_escape.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/abc_escape.png differ
diff --git a/public/uploads/studio/anon-1778593186660_x.png b/public/uploads/studio/anon-1778593186660_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593186660_x.png differ
diff --git a/public/uploads/studio/anon-1778593188756_clean.png b/public/uploads/studio/anon-1778593188756_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593188756_clean.png differ
diff --git a/public/uploads/studio/anon-1778593202294_x.png b/public/uploads/studio/anon-1778593202294_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593202294_x.png differ
diff --git a/public/uploads/studio/anon-1778593204319_clean.png b/public/uploads/studio/anon-1778593204319_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593204319_clean.png differ
diff --git a/public/uploads/studio/anon-1778593228883_x.png b/public/uploads/studio/anon-1778593228883_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593228883_x.png differ
diff --git a/public/uploads/studio/anon-1778593230815_clean.png b/public/uploads/studio/anon-1778593230815_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593230815_clean.png differ
diff --git a/public/uploads/studio/anon-1778593245262_x.png b/public/uploads/studio/anon-1778593245262_x.png
new file mode 100644
index 0000000..e92f2fb
--- /dev/null
+++ b/public/uploads/studio/anon-1778593245262_x.png
@@ -0,0 +1 @@
+exploit
\ No newline at end of file
diff --git a/public/uploads/studio/anon-1778593475377_x.png b/public/uploads/studio/anon-1778593475377_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593475377_x.png differ
diff --git a/public/uploads/studio/anon-1778593477424_clean.png b/public/uploads/studio/anon-1778593477424_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593477424_clean.png differ
diff --git a/public/uploads/studio/anon-1778593601608_x.png b/public/uploads/studio/anon-1778593601608_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593601608_x.png differ
diff --git a/public/uploads/studio/anon-1778593603667_clean.png b/public/uploads/studio/anon-1778593603667_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778593603667_clean.png differ
diff --git a/public/uploads/studio/anon-1778594239612_x.png b/public/uploads/studio/anon-1778594239612_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778594239612_x.png differ
diff --git a/public/uploads/studio/anon-1778594241645_clean.png b/public/uploads/studio/anon-1778594241645_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778594241645_clean.png differ
diff --git a/public/uploads/studio/anon-1778595929905_x.png b/public/uploads/studio/anon-1778595929905_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778595929905_x.png differ
diff --git a/public/uploads/studio/anon-1778595932493_clean.png b/public/uploads/studio/anon-1778595932493_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778595932493_clean.png differ
diff --git a/public/uploads/studio/anon-1778615141686_x.png b/public/uploads/studio/anon-1778615141686_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778615141686_x.png differ
diff --git a/public/uploads/studio/anon-1778615143838_clean.png b/public/uploads/studio/anon-1778615143838_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778615143838_clean.png differ
diff --git a/public/uploads/studio/anon-1778621049454_x.png b/public/uploads/studio/anon-1778621049454_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778621049454_x.png differ
diff --git a/public/uploads/studio/anon-1778621051395_clean.png b/public/uploads/studio/anon-1778621051395_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778621051395_clean.png differ
diff --git a/public/uploads/studio/anon-1778621261864_x.png b/public/uploads/studio/anon-1778621261864_x.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778621261864_x.png differ
diff --git a/public/uploads/studio/anon-1778621263848_clean.png b/public/uploads/studio/anon-1778621263848_clean.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/anon-1778621263848_clean.png differ
diff --git a/public/uploads/studio/test-1778593188275_tiny.png b/public/uploads/studio/test-1778593188275_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778593188275_tiny.png differ
diff --git a/public/uploads/studio/test-1778593203822_tiny.png b/public/uploads/studio/test-1778593203822_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778593203822_tiny.png differ
diff --git a/public/uploads/studio/test-1778593230349_tiny.png b/public/uploads/studio/test-1778593230349_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778593230349_tiny.png differ
diff --git a/public/uploads/studio/test-1778593476944_tiny.png b/public/uploads/studio/test-1778593476944_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778593476944_tiny.png differ
diff --git a/public/uploads/studio/test-1778593603188_tiny.png b/public/uploads/studio/test-1778593603188_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778593603188_tiny.png differ
diff --git a/public/uploads/studio/test-1778594241189_tiny.png b/public/uploads/studio/test-1778594241189_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778594241189_tiny.png differ
diff --git a/public/uploads/studio/test-1778595931840_tiny.png b/public/uploads/studio/test-1778595931840_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778595931840_tiny.png differ
diff --git a/public/uploads/studio/test-1778615143370_tiny.png b/public/uploads/studio/test-1778615143370_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778615143370_tiny.png differ
diff --git a/public/uploads/studio/test-1778621050946_tiny.png b/public/uploads/studio/test-1778621050946_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778621050946_tiny.png differ
diff --git a/public/uploads/studio/test-1778621263377_tiny.png b/public/uploads/studio/test-1778621263377_tiny.png
new file mode 100644
index 0000000..c443d5c
Binary files /dev/null and b/public/uploads/studio/test-1778621263377_tiny.png differ
diff --git a/public/uploads/studio/test123_tiny.png b/public/uploads/studio/test123_tiny.png
new file mode 100644
index 0000000..e69de29
diff --git a/public/uploads/studio/test_tiny.png b/public/uploads/studio/test_tiny.png
new file mode 100644
index 0000000..2371c64
--- /dev/null
+++ b/public/uploads/studio/test_tiny.png
@@ -0,0 +1 @@
+�PNG
\ No newline at end of file
diff --git a/server.js b/server.js
index 9db5df3..4aa3534 100644
--- a/server.js
+++ b/server.js
@@ -4404,6 +4404,10 @@ ${htmlHeader('/designs')}
<button type="button" id="wc-calc" style="padding:8px 16px;background:var(--ink,#111);color:var(--bg,#fff);border:0;border-radius:4px;cursor:pointer;font:13px var(--sans);height:fit-content">Calculate</button>
</div>
<div id="wc-result" style="padding:0 14px 14px;font:13px/1.5 var(--sans);color:var(--ink,#111);display:none"></div>
+ <div id="wc-pinbar" style="padding:0 14px 12px;display:flex;align-items:center;gap:10px;font:11px var(--sans);color:var(--ink-faint,#999)">
+ <a id="wc-pin" href="javascript:void(0)" style="color:var(--ink-soft,#555);text-decoration:underline;text-underline-offset:2px">Save defaults</a>
+ <span id="wc-pin-status" style="display:none;align-items:center;gap:6px;color:#2d6a4f;font-weight:600"><span aria-hidden="true">✓</span><span id="wc-pin-label"></span><a id="wc-pin-clear" href="javascript:void(0)" style="margin-left:6px;color:var(--ink-faint,#999);font-weight:400;text-decoration:underline">clear</a></span>
+ </div>
</details>
<script>
(function(){
@@ -4412,17 +4416,44 @@ ${htmlHeader('/designs')}
var wEl = document.getElementById('wc-w');
var hEl = document.getElementById('wc-h');
var wallDetails = btn.closest('details');
- // Restore last-used W×H from localStorage so designers don't retype when hopping between PDPs.
- var prev = null;
- try { prev = JSON.parse(localStorage.getItem('wallco-wall-calc') || 'null'); } catch(e){}
+ var pinLink = document.getElementById('wc-pin');
+ var pinStatus = document.getElementById('wc-pin-status');
+ var pinLabel = document.getElementById('wc-pin-label');
+ var pinClear = document.getElementById('wc-pin-clear');
+ // Hydrate priority: pinned defaults beat the most-recent working values.
+ var pinned = null, recent = null;
+ try { pinned = JSON.parse(localStorage.getItem('wallco-wall-calc-pin') || 'null'); } catch(e){}
+ try { recent = JSON.parse(localStorage.getItem('wallco-wall-calc') || 'null'); } catch(e){}
+ var prev = (pinned && isFinite(pinned.w) && isFinite(pinned.h)) ? pinned : recent;
if (prev && isFinite(prev.w) && prev.w > 0) wEl.value = prev.w;
if (prev && isFinite(prev.h) && prev.h > 0) hEl.value = prev.h;
- // If they had previously computed (and the panel is closed by default), auto-open the
- // details so the populated values are visible at a glance.
if (prev && wallDetails && !wallDetails.open) wallDetails.open = true;
+ function renderPinUI(){
+ if (pinned && isFinite(pinned.w) && isFinite(pinned.h)) {
+ pinLink.style.display = 'none';
+ pinStatus.style.display = 'inline-flex';
+ pinLabel.textContent = 'Pinned ' + pinned.w + '×' + pinned.h + ' ft';
+ } else {
+ pinLink.style.display = 'inline';
+ pinStatus.style.display = 'none';
+ }
+ }
+ renderPinUI();
function persist(){
try { localStorage.setItem('wallco-wall-calc', JSON.stringify({ w: parseFloat(wEl.value)||0, h: parseFloat(hEl.value)||0, t: Date.now() })); } catch(e){}
}
+ pinLink.addEventListener('click', function(){
+ var w = parseFloat(wEl.value), h = parseFloat(hEl.value);
+ if (!isFinite(w) || !isFinite(h) || w<=0 || h<=0) return;
+ pinned = { w: w, h: h, pinned: true, t: Date.now() };
+ try { localStorage.setItem('wallco-wall-calc-pin', JSON.stringify(pinned)); } catch(e){}
+ renderPinUI();
+ });
+ pinClear.addEventListener('click', function(){
+ pinned = null;
+ try { localStorage.removeItem('wallco-wall-calc-pin'); } catch(e){}
+ renderPinUI();
+ });
function compute() {
var w = parseFloat(wEl.value);
var h = parseFloat(hEl.value);
← 4cad4c4 scripts: seamlessify_all.py — batch make_seamless across dat
·
back to Wallco Ai
·
gitignore: keep data/generated_pre_seamless_backup/ local-on 57b8702 →