screentinker/frontend/js
ScreenTinker 4cc8ccb67e fix(ai): keep generated designs inside the canvas (#41)
Text could run off the edge (long/large headlines, nowrap) and shapes placed at
the far edge (e.g. a bottom band at y=100) spilled over.

- Server-side fit pass on every generated element: shrink text fontSize so it
  fits the canvas width (chars*fontSize*0.075, tuned for bold/uppercase
  headlines) and height (incl. line-height), then nudge x/y within 4% margins;
  clamp shapes so x+width<=100 and y+height<=100. Deterministic - doesn't rely on
  the model getting layout right.
- Designer preview: vw -> cqw (+ container-type on the canvas) so text scales to
  the canvas, not the browser window. The preview was overstating size vs what
  actually publishes; now it matches. Published widget keeps vw (scales on the
  player).

Verified: Playwright DOM check shows zero elements overflowing the canvas after
generation; unit test asserts long text is shrunk + repositioned in-bounds. 62/62.
2026-06-09 12:51:23 -05:00
..
components feat(admin): Delete Organization + Workspace with cascade (#36) 2026-06-09 09:22:21 -05:00
i18n feat(ai): model dropdown + longer generate timeout (#41) 2026-06-09 12:36:29 -05:00
views fix(ai): keep generated designs inside the canvas (#41) 2026-06-09 12:51:23 -05:00
api.js feat(ai): model dropdown + longer generate timeout (#41) 2026-06-09 12:36:29 -05:00
app.js feat(signup): optional org-on-create for self-service signups (#12) 2026-06-05 11:16:27 -05:00
brand-prime.js fix(branding): no ScreenTinker default flash on load/switch (#38) 2026-06-09 11:43:42 -05:00
branding.js fix(branding): no ScreenTinker default flash on load/switch (#38) 2026-06-09 11:43:42 -05:00
i18n.js i18n: register Italian locale in language registry (followup to PR #2) 2026-05-11 20:05:09 -05:00
socket.js feat(debug): live per-device debug logging toggle on the device screen 2026-06-08 21:49:03 -05:00
utils.js Phase 2.1: tenancy middleware, permission helpers, JWT workspace context, frontend + backend role-rename compat 2026-05-11 20:02:00 -05:00