← back to Homesonspec
HomesOnSpec: 6.7in + 13in-iPad screenshot sets; submitted v1.0 (build 2) to App Review (Waiting for Review 2026-08-10)
f1fb64b6ce1062e9ab0be76122999ce4447b69e7 · 2026-08-10 10:30:58 -0700 · Steve Abrams
Files touched
M apps/mobile/scripts/vshots/frame-and-caption.py
Diff
commit f1fb64b6ce1062e9ab0be76122999ce4447b69e7
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Aug 10 10:30:58 2026 -0700
HomesOnSpec: 6.7in + 13in-iPad screenshot sets; submitted v1.0 (build 2) to App Review (Waiting for Review 2026-08-10)
---
apps/mobile/scripts/vshots/frame-and-caption.py | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/apps/mobile/scripts/vshots/frame-and-caption.py b/apps/mobile/scripts/vshots/frame-and-caption.py
index 32c6511b..7217ea0b 100644
--- a/apps/mobile/scripts/vshots/frame-and-caption.py
+++ b/apps/mobile/scripts/vshots/frame-and-caption.py
@@ -4,17 +4,20 @@ the raw app screenshot framed (rounded corners + soft shadow) below.
No app chrome is occluded. Output = 1320x2868 (6.9").
Usage: frame-and-caption.py <raw.png> <out.png> "<caption>"
"""
-import sys
+import sys, os
from PIL import Image, ImageDraw, ImageFont, ImageFilter
-W, H = 1320, 2868
+# Output canvas — override via OUT_W/OUT_H env (default 6.9" 1320x2868; ASC 6.7" slot = 1284x2778).
+W = int(os.environ.get("OUT_W", 1320))
+H = int(os.environ.get("OUT_H", 2868))
+_s = H / 2868.0 # scale all proportional constants off the design height
NAVY = (20, 44, 84) # slightly deeper than app navy for contrast
NAVY2 = (12, 28, 56)
WHITE = (255, 255, 255)
-CAP_TOP, CAP_BOT = 150, 470 # headline band (text region)
-SHOT_W = 1072 # framed screenshot width
-RADIUS = 66
-PAD_X = 96
+CAP_TOP, CAP_BOT = int(150*_s), int(470*_s) # headline band (text region)
+SHOT_W = int(W * 0.812) # framed screenshot width
+RADIUS = int(66*_s)
+PAD_X = int(96 * (W/1320.0))
def font(px, bold=True):
paths = ([
@@ -60,7 +63,7 @@ def main():
draw = ImageDraw.Draw(canvas)
# headline
- fnt = font(78)
+ fnt = font(int(78*_s))
lines = wrap(draw, caption, fnt, W - 2*PAD_X)
lh = int(fnt.size * 1.16)
total = lh * len(lines)
← ecb8061c auto-data-snapshot: 2026-08-10T10:27:30 (6 data files) — app
·
back to Homesonspec
·
auto-data-snapshot: 2026-08-10T21:49:05 (6 data files) — col 03e75060 →