mirror of
https://github.com/screentinker/screentinker.git
synced 2026-06-15 02:33:15 -06:00
A prompt now produces a full sign: the LLM writes the design AND image prompts, the server generates the images and composites them with the crisp text layer. - lib/image-gen.js: text-to-image with 3 BYO/self-hostable backends, all behind the SSRF guard: 'sdcpp' (local stable-diffusion.cpp OpenAI-compatible server, exact small sizes that fit VRAM), 'openai' (cloud / OpenAI-compatible, snapped sizes), 'comfyui' (prompt/history/view API). - ai.js: prompt asks for a background_prompt (preferred — full-bleed atmosphere) and an optional foreground image element; after the design is normalized, the bg + fg images are generated best-effort (a failed image never fails the sign) and returned as data URLs. New image_* settings (provider/base_url/model), image_provider whitelist, schema column + migration. - designer.js: AI-images section in settings; generate applies the background image; publish bakes the background image into the HTML so it survives. - server.js: raise JSON body limit to 12mb for embedded image data URLs. Verified end-to-end on local Vulkan SDXL (RTX 5090): prompt -> bg+fg images on the canvas -> publish creates a widget with the images embedded. 63/63. Note: prod (not self-hosted) requires a PUBLIC image endpoint (e.g. OpenAI); the SSRF guard blocks localhost there. Follow-up: upload generated images to the content store and reference by URL to avoid multi-MB widget configs. |
||
|---|---|---|
| .. | ||
| database.js | ||
| schema.sql | ||