From 8bea24d55a9665b3b88b02cb5fe44707b899fde9 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Thu, 14 May 2026 21:56:47 -0400 Subject: [PATCH] update --- README.md | 7 +- src/index.html | 801 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 721 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index 3cebb93..8408b26 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ # CaseWrap Studio CaseWrap Studio is a static print-layout editor for physical media packaging. -It handles DVD and Blu-ray case wraps, Avery 8960-style disc labels, and freeform image/text layers. +It handles DVD and Blu-ray case wraps, Avery 8960-style disc labels, Avery 8693 jewel-case inserts, and freeform image/text layers. ## What it supports - Separate front, spine, and back artwork - One combined wrap image - Avery 8960 / 8944 disc-label layouts +- Avery 8693 / 8943 CD jewel-case inserts, including a wider tray insert with side spine guides - Reusable disc designs that can be assigned to either Avery sheet position - Additional image layers - Editable text layers @@ -49,9 +50,13 @@ If a URL stops working later, the image will no longer render. For permanent res - `Import from Nostr` restores the template from a copied event - The Community panel can refresh a relay-backed feed, open a selected template, publish the current design, and interact with selected posts - Disc designs are separate from the printable Avery sheet, so one sheet can print two different designs or two copies of the same design +- CD jewel inserts are a separate template mode, so front/tray insert artwork can be saved and shared apart from disc-label sheets +- Template/design payloads are published as Nostr kind `30078` app data events with `casewrap` tags; ordinary replies, reactions, reposts, follows, and profiles use standard Nostr kinds `1`, `7`, `6`, `3`, and `0` +- Nostr posts can be categorized for filtering: Blu-ray, DVD, PS1, PS2, PS3, Xbox, Xbox 360, PC, CD, Dreamcast, GameCube, Wii, Sega Saturn, Sega CD, and Audio CD ## Notes - The app is static and does not need a backend - Local browser autosave is still available +- Nostr template/design payloads currently use schema version 5 - Older saved projects that contain embedded data URLs may still load, but new work should use remote URLs only diff --git a/src/index.html b/src/index.html index b1fd0e7..e378697 100644 --- a/src/index.html +++ b/src/index.html @@ -330,6 +330,8 @@ body.app-designer .template-only { display: none !important; } body.app-template .designer-only { display: none !important; } + body.app-designer label[for="layerTarget"], + body.app-designer #layerTarget { display: none !important; } /* Layers panel hides in Template tab when in disc-sheet mode — disc layers live in the Designer */ body.app-template.template-disc #layersFieldset { display: none !important; } @@ -597,7 +599,15 @@ display: none !important; } - body.template-cover #discArtworkFieldset { + body.template-jewel .coverOnly, + body.template-jewel #coverArtworkFieldset, + body.template-jewel #discArtworkFieldset { + display: none !important; + } + + body.template-cover #discArtworkFieldset, + body.template-cover #jewelArtworkFieldset, + body.template-disc #jewelArtworkFieldset { display: none !important; } @@ -677,6 +687,73 @@ overflow: hidden; } + .jewelLayer { + position: absolute; + inset: 0; + display: none; + z-index: 10; + } + + body.template-jewel .jewelLayer { + display: block; + } + + .jewelSlot { + position: absolute; + overflow: hidden; + background: #f8fafc; + border: 1px solid rgba(17, 24, 39, .18); + z-index: 10; + } + + .jewelSlot::before { + content: attr(data-label); + position: absolute; + left: 8px; + top: 7px; + background: rgba(255,255,255,.85); + border: 1px solid rgba(17,24,39,.13); + border-radius: 999px; + padding: 3px 7px; + font-size: 10px; + color: #334155; + font-weight: 800; + z-index: 14; + display: var(--label-display, block); + } + + .jewelSlot::after { + content: ""; + position: absolute; + inset: .125in; + border: 1px dashed rgba(37, 99, 235, .85); + z-index: 13; + pointer-events: none; + display: var(--safe-display, block); + } + + .jewelSpineGuide { + position: absolute; + top: 0; + bottom: 0; + width: 0; + border-left: 1px dashed rgba(37, 99, 235, .85); + z-index: 14; + pointer-events: none; + display: var(--safe-display, block); + } + + .designerLayerOverlay { + position: absolute; + inset: 0; + z-index: 11; + pointer-events: none; + } + + .designerLayerOverlay .freeLayer { + pointer-events: auto; + } + .layerOverlay { position: absolute; inset: 0; @@ -1064,6 +1141,7 @@ .feedTypeBtn.active{background:var(--accent);border-color:var(--accent);color:#fff} body.dark .feedTypeBtn{background:#0b1220;color:var(--muted);border-color:var(--line)} body.dark .feedTypeBtn.active{color:#fff} + .feedCategorySelect{width:auto;min-width:130px;padding:5px 8px;font-size:.78rem} .welcomeCard { max-width: 640px; } @media (max-width: 900px) { @@ -1125,11 +1203,11 @@ break-after: avoid; } - .slot, .discSlot { + .slot, .discSlot, .jewelSlot { border-color: transparent !important; } - .placeholder, .slot::after, .slot::before, .discSlot::before, .foldLine, .trimArea, .bleedFill, .spineText, .discSpineStrip { + .placeholder, .slot::after, .slot::before, .discSlot::before, .jewelSlot::before, .jewelSlot::after, .jewelSpineGuide, .foldLine, .trimArea, .bleedFill, .spineText, .discSpineStrip { display: none !important; } @@ -1138,13 +1216,16 @@ } body.print-guides .slot::before, + body.print-guides .jewelSlot::after, + body.print-guides .jewelSpineGuide, body.print-guides .foldLine, body.print-guides .trimArea, body.print-guides .discSpineStrip { display: block !important; } - body.print-guides .discSlot { + body.print-guides .discSlot, + body.print-guides .jewelSlot { border-color: rgba(17, 24, 39, .6) !important; } @@ -1203,8 +1284,9 @@
- - + + +
@@ -1219,15 +1301,17 @@
+
- Size - + Template + @@ -1268,6 +1352,25 @@ Project metadata + +
@@ -1404,6 +1507,16 @@
+
+ Jewel Inserts +
+
+
+ +
+

Avery 8693 prints two jewel-case inserts on one Letter sheet: a front insert and a tray insert.

+
+
Disc Design @@ -1455,13 +1568,34 @@
- -

Designs A–D created here can be assigned to print positions in the Template tab.

+
+
+ Project metadata + + + + + + +
+ + + +
+

Disc designs publish as reusable single-disc designs. Load them into any A-D slot before assigning a print sheet.

+
+
+
Layers @@ -1617,6 +1751,18 @@ +
@@ -1625,6 +1771,7 @@
Load an image URL in the sidebar
+
Design A
@@ -1641,7 +1788,8 @@

Search first — a community template may already exist for your title:

-
+
+
@@ -1670,7 +1818,9 @@ + +
@@ -1680,7 +1830,9 @@ + +
@@ -1688,7 +1840,8 @@
@@ -1716,7 +1871,7 @@