अवलोकन

Lolly आइकॉन - बड़ी हरी और सफ़ेद लॉलीपॉप कैंडी

यह दस्तावेज़ Lolly प्लेटफ़ॉर्म का उद्देश्य, संरचना और आर्किटेक्चर संबंधी निर्णय दर्ज करता है। यह प्रोडक्ट विज़न और कोडबेस की मौजूदा स्थिति — दोनों को दर्शाता है।

स्थिति: Lolly एक आंतरिक प्रोटोटाइप है, जो एक अभी पूरे नहीं हुए क्लोज़्ड पायलट में है। इंजन डिटर्मिनिस्टिक और आंतरिक रूप से सुसंगत है, लेकिन प्रोडक्ट अभी शुरुआती दौर में है — SUSE ग्राहक नंबर एक है — और इसके क्रिप्टोग्राफ़ी तथा फ़ाइल-पार्सिंग इंजन इस समय SUSE की सख़्त इन्फ्रास्ट्रक्चर हार्डनिंग से गुज़र रहे हैं, ताकि एंटरप्राइज़ पैमाने की तैयारी हो सके (इसमें हम वाक़ई माहिर हैं)। नीचे दिए आर्किटेक्चर को परीक्षणाधीन डिज़ाइन-इरादे के रूप में पढ़ें, न कि किसी तैयार, प्रमाणित प्रोडक्ट के रूप में। पायलट कैसे चलाया और मापा जाता है, इसके लिए अपनाना और गवर्नेंस देखें।


यह क्यों मौजूद है

टीमों के सामने एक बार-बार आने वाली समस्या है: ऐसा दोहराया जाने वाला क्रिएटिव और कंटेंट कार्य जो इतना अनुमानित है कि हर बार कुशल हाथों को लगाना उचित नहीं ठहरता, लेकिन गुणवत्ता के लिहाज़ से इतना संवेदनशील है कि उसे बिना गार्डरेल के सौंपा भी नहीं जा सकता। नतीजा या तो धीमा थ्रूपुट होता है (विशेषज्ञ की अड़चन), या असंगति (लोग जो भी टूल उनके पास हो उसी से काम चलाते हैं), या वेंडर लॉक-इन (एक ऐसा SaaS DAM जो आपके टेम्पलेट्स को नियंत्रित करता है)।

यह प्लेटफ़ॉर्म इसका संरचनात्मक उत्तर है:

बड़े पैमाने पर प्रोग्रामेटिक क्रिएटिव और कंटेंट — शून्य-श्रम ऐसेट निर्माण, जिसमें नियम केंद्रीय नियंत्रण में रहते हैं — कर्मचारियों, वेंडरों और पार्टनरों के लिए।

परिणाम है प्रचुरता: हर इवेंट के पास सही साइनेज है, हर CVE अलर्ट हाउस स्टाइल से मेल खाता है, हर लेबल साफ़ प्रिंट होता है, हर ईमेल सिग्नेचर अद्यतन रहता है — और यह सब बिना किसी डिज़ाइन टिकट के। प्लेटफ़ॉर्म बार-बार दोहराए जाने वाले, ऑपरेशनल बना दिए गए क्रिएटिव को संभालता है। यह जान-बूझकर कोई बीस्पोक क्रिएटिव टूल नहीं है — फ़्लैगशिप काम अब भी डिज़ाइनरों के हाथ में रहता है।

परिदृश्य में यह कहाँ फ़िट बैठता है

Every tool in the library as a card, grouped by category, so a producer picks one and starts

क्षमताCanvaब्रांड पोर्टलIllustratorFigma / PenpotLolly
बड़े पैमाने पर कंटेंट निर्माणआंशिक
पूरी तरह ऑफ़लाइन काम करता हैआंशिक
टेम्पलेट लॉजिक और सख़्त बाधाएँआंशिकआंशिक
डिज़ाइन कौशल की ज़रूरत नहींआंशिक
स्वचालित Content Credentialsआंशिक
टूल दूसरे टूलों को कंपोज़ करते हैं
ओपन इंजन, SaaS-लॉक नहींआंशिक
C2PA कंटेंट क्रेडेंशियल
ऑप्ट-इन फ़ोरेंसिक-स्तर की प्रोवेनेंस
मोबाइल और डेस्कटॉप ऐपआंशिक
कमांड लाइन और TUI

कमी साफ़ है: मौजूदा परिदृश्य में कुछ भी हमें कंस्ट्रेंट-फ़र्स्ट, ऑफ़लाइन-सक्षम, कम-कौशल, आंतरिक रूप से सुलभ आउटपुट नहीं देता। Lolly में एक खुला कैनवास भी शामिल है — Layout Studio — जहाँ रंग, टाइप और ऐसेट ब्रांड ग्लोबल्स के अनुरूप रहते हैं, ताकि मुक्त संयोजन भी कंस्ट्रेंट-फ़र्स्ट बना रहे। जो यह नहीं है, वह है एक अनियंत्रित डिज़ाइन सुइट: बीस्पोक फ़्लैगशिप काम के लिए डिज़ाइनर Illustrator और Figma का ही उपयोग करते रहते हैं। इस टूल से परम्यूटेशन असेंबल किए जा सकते हैं।

इसके लिए इस्तेमाल करें: ऑपरेशनल बनाए गए क्रिएटिव ऐसेट का तेज़ निर्माण — इवेंट टाइलें, नाम बैज, सिग्नेचर, CVE अलर्ट, QR कोड, सोशल कार्ड, कंसाइनमेंट लेबल, संरचित रिपोर्टें।

इसके लिए इस्तेमाल न करें: बीस्पोक हीरो कंटेंट।


एक कैंपेन का जीवनचक्र

A titled stacked area chart, its three series banded in a cool palette with axes, legend and title all placed by the template rather than by hand

Lolly क्या है, यह देखने का सबसे साफ़ तरीक़ा फ़ीचर की सूची नहीं है — बल्कि एक ही ऐसेट का पीछा करना है, जैसे वह एक हाथ से दूसरे हाथ पहुँचता है। एक लोकलाइज़्ड कैंपेन कार्ड को संगठन से गुज़रते हुए देखें:

  1. क्रिएटिव नियम तय करता है। एक डिज़ाइनर Layout Studio में बेस टेम्पलेट लिखता है और उसमें ब्रांड की टाइपोग्राफ़ी तथा रंग वेरिएबल हार्ड-कोड कर देता है। वह एक कार्ड नहीं बना रहा — वह बुनियादी काम एक बार कर रहा है, ताकि उसे फिर कभी हाथ से लोकलाइज़ न करना पड़े।
  2. डेवलपर उसे स्केल करता है। वही टेम्पलेट CLI के ज़रिए एक नाइटली पाइपलाइन में जुड़ जाता है, इसलिए ताज़ा चार्ट या किसी नई भाषा का वेरिएंट अपने-आप बन जाता है — कोई डिज़ाइनर फ़ाइल दोबारा नहीं खोलता।
  3. निर्माता बस उसका इस्तेमाल करता है। हवाई जहाज़ में ऑफ़लाइन बैठा एक सेल्स प्रतिनिधि वही टूल खोलता है और क्लाइंट मीटिंग के लिए बिलकुल ऑन-ब्रांड डेक बना लेता है। कोई डिज़ाइन कौशल नहीं, कोई नेटवर्क नहीं, कोई इंतज़ार नहीं।

चरण दो का वह "ताज़ा चार्ट" ठीक इस तरह का एक रेंडर है, जो एक डेटा स्ट्रिंग और मुट्ठी भर पैरामीटर से बना है, और किसी ने कोई डिज़ाइन फ़ाइल खोली ही नहीं:

बात यह नहीं है कि Lolly डिज़ाइनरों के लिए अच्छा है और डेवलपरों के लिए अच्छा है और सेल्स के लिए अच्छा है, तीनों अलग-अलग खाँचों में। यह एक रिले दौड़ है: क्रिएटिव के शुरुआती काम को डेवलपर स्केल करता है, और वही निर्माता को ताक़त देता है। जहाज़ में बैठे उस ग़ैर-तकनीकी प्रतिनिधि का बिना मेहनत वाला अनुभव संभव ही इसलिए है क्योंकि डिज़ाइनर ने कठोरता तय की और डेवलपर ने उसे तैनात किया।

यही फ़ोर्स मल्टिप्लायर है। Lolly अलग-अलग भूमिकाओं के लिए अलग-अलग टूलों की दराज़ नहीं है — यह एक ही डिटर्मिनिस्टिक ऐसेट जीवनचक्र है जिसे हर भूमिका छूती है, और जिस हर हाथ से यह गुज़रता है, वह पिछले हाथ के मूल्य को कई गुना कर देता है।


एक अनुमोदन, दस हज़ार ऐसेट

Batch mode on a fresh install: one empty row waiting for a tool, with the whole spreadsheet surface and its Render button in place before any data arrives

क्योंकि अनुमोदन फ़ाइल में नहीं, टूल में रहता है (Lolly की तुलना देखें), इसलिए पैमाना समीक्षा की समस्या रहता ही नहीं। एक लोकलाइज़्ड सोशल-कार्ड टूल को एक बार अनुमोदित करें, फिर एक स्प्रेडशीट से 12 भाषाओं में 10,000 ऐसेट बनाएँ — और उनमें से किसी एक को भी लीगल या ब्रांड से नई अनुपालन जाँच की ज़रूरत नहीं, क्योंकि जिस टेम्पलेट से वे सब आए हैं, वह पहले से अनुमोदित था।

वही डिटर्मिनिस्टिक टूल तीन रास्तों से इस पैमाने तक पहुँचता है, और तीनों एक-जैसा, पहले से अनुमोदित आउटपुट देते हैं:

ब्रांड कंस्ट्रेंट का एक सेट, डिज़ाइनर ने एक बार तय किया; उसी पहले से अनुमोदित आउटपुट तक तीन रास्ते — और मशीन का रास्ता सबसे दूर तक जाता है, क्योंकि फ़ाइलें आती रहें तो भी वह थकता नहीं।


बड़ी तस्वीर

                ┌─────────────────────────────────────────────┐
                │              Tools (data, not code)         │
                │   tool.json + template.html + hooks.js?     │
                └─────────────────────────────────────────────┘
                                    ▲
                                    │ talks to via Capability Bridge v1
                                    ▼
                ┌─────────────────────────────────────────────┐
                │                  Engine                     │
                │   loader · validator · runtime · template   │
                │   inputs · url-mode                         │
                │   PLATFORM AGNOSTIC. Knows nothing of DOM,  │
                │   filesystem, or You.                       │
                └─────────────────────────────────────────────┘
                                    ▲
                                    │ implements HostV1
                                    ▼
        ┌──────────────┬──────────────┬──────────────┬──────────────┐
        │  Web Shell   │ Tauri Desktop│ Tauri Mobile │  CLI Shell   │
        │   (PWA)      │              │              │              │
        └──────────────┴──────────────┴──────────────┴──────────────┘
                                    ▲
                                    │ fetches from
                                    ▼
                ┌─────────────────────────────────────────────┐
                │              Catalogs                       │
                │   catalog/tools/index.json + tool dirs      │
                │   catalog/assets/index.json + asset files   │
                └─────────────────────────────────────────────┘

रिपॉज़िटरी लेआउट

lolly/
├── engine/           # Platform-agnostic core. Open source (MPL-2.0).
│   └── src/
│       ├── index.ts          # public surface — loader, runtime, template, inputs, url-mode
│       ├── loader.ts         # fetches and validates tool files
│       ├── runtime.ts        # orchestrates the 5-step lifecycle
│       ├── template.ts       # Handlebars hydration + annotateTemplate
│       ├── inputs.ts         # manifest → runtime input model
│       ├── url-mode.ts       # URL ↔ input state round-trip
│       ├── validate.ts       # JSON Schema validation of manifests
│       ├── compose.ts        # resolve nested tool renders (composes)
│       ├── embed.ts          # parse portable lolly.tools embed URLs
│       └── bridge/
│           └── host-v1.ts    # TypeScript interface — the bridge contract
│
├── shells/
│   ├── web/          # PWA — hosted online; primary distribution
│   │   └── src/
│   │       ├── main.ts           # boot, routing
│   │       ├── theme.ts          # theme apply/persist (FOUC prevention)
│   │       ├── bridge/           # web implementations of HostV1 APIs
│   │       │   ├── index.ts      # compose all bridge pieces
│   │       │   ├── db.ts         # IndexedDB setup
│   │       │   ├── state.ts      # host.state — saved edits
│   │       │   ├── profile.ts    # host.profile — user details
│   │       │   ├── assets.ts     # host.assets — catalog + user uploads
│   │       │   ├── clipboard.ts  # host.clipboard
│   │       │   ├── export.ts     # host.export — rasterise/serialize
│   │       │   ├── net.ts        # host.net — allowlisted fetch
│   │       │   └── media.ts      # host.media — live camera frames (onFrame)
│   │       ├── catalog/
│   │       │   └── sync.ts       # boot-time catalog sync + offline cache
│   │       ├── styles/           # app-wide CSS (app.css, picker.css, tokens.css)
│   │       └── views/
│   │           ├── gallery.ts    # tool library listing + saved-state cards
│   │           ├── tool.ts       # mounts one tool (inputs + canvas + actions)
│   │           ├── picker.ts     # asset picker UI (invoked by host.assets)
│   │           ├── profile.ts    # user details editor
│   │           ├── projects.ts   # /p — folders of saved sessions (nested; folder/selection export)
│   │           └── free-canvas.ts # free-canvas editor overlay for render.layout:"editor" tools
│   │
│   ├── cli/          # Node.js CLI — same engine, headless jsdom
│   │   ├── bin/lolly.ts
│   │   └── src/
│   │       ├── run.ts    # loadTool → createRuntime → export → write file
│   │       └── bridge.ts # CLI implementation of HostV1
│   │
│   ├── tui/          # Interactive terminal shell (Ink) — reuses the CLI bridge
│   │   └── src/
│   │       ├── main.tsx  # full-screen app: Gallery / Projects / Profile / ToolView
│   │       └── bridge.ts # CLI bridge + on-disk state under ~/.lolly
│   │
│   ├── tauri-desktop/ # downloadable desktop app
│   └── tauri-mobile/  # iOS/Android app
│
├── tools/            # profile VIEW (gitignored) — data, not code. Merged from packs:
│                     #   community/ (public, brand-agnostic, MPL) + brands/<active>/tools (brand-owned).
│   ├── qr-code/
│   ├── quotes/
│   ├── email-signature/
│   ├── daily-card/        # "Day Brief" — weather/time/map (fetched by an inline template script)
│   ├── code-canvas/
│   ├── countdown-timer/
│   ├── color-palette/
│   ├── color-block/           # typed/heterogeneous blocks (addMenu discriminator)
│   ├── dynamic-layout/
│   ├── tool-logo/         # "Logo" — auto-switching brand logo
│   ├── street-map/        # offline vector city-block maps
│   ├── url-shot/          # "URL Screenshot" (capture capability)
│   ├── strip-data/        # on-device metadata strip — JPEG/PNG/SVG/PDF (file in → clean file out)
│   ├── compress-pdf/      # on-device PDF compressor — recompresses images (file in → smaller file out)
│   ├── brand-lockup/      # "Brand Lockup" — SUSE logo lockups; HarfBuzz text-to-path (wasm)
│   ├── bag-video/
│   ├── chart-creator/     # SVG charts from structured data
│   ├── filter-duotone/    # two-color photo treatment
│   ├── filter-halftone/   # photo → vector halftone dot grid
│   ├── filter-scanline/   # photo → retro posterised scanline grid (SVG / transparent raster)
│   ├── meeting-planner/   # global timezone meeting scheduler
│   ├── calendar-ics/      # event → .ics calendar file plus a card
│   ├── digi-ad/           # "Animated Ad" — looping banner from scenes
│   ├── event-name-badge/  # conference badges — composes qr-code as an SVG
│   ├── wayfinding-signage/ # event signage; directions blocks auto-fit label text
│   ├── text-helper/       # on-device text workbench (format/decode/hash/de-identify)
│   ├── layout-studio/     # "Layout Studio" — freeform WYSIWYG editor canvas (render.layout: editor)
│   ├── multi-page-pdf/    # multi-page PDF document — cover, flowing content blocks, back page
│   ├── diagram-builder/   # org / layercake / process / cycle / pyramid diagrams
│   ├── logo-wall/         # many logos → auto-packed grid
│   ├── logo-lockup-partner/ # SUSE + partner co-brand lockup
│   ├── web-icon/          # favicon .ico / png / svg from text + colours
│   ├── filter-posterize/  # photo → flat posterised vector separations
│   ├── filter-pixel-stretch/ # photo → pixel-smear effect
│   ├── lottie-digi-ad/    # animated Lottie ad banners
│   └── pose-geeko/        # pose the SUSE Geeko mascot — print-ready stills
│
├── catalog/
│   ├── tools/index.json        # tool registry
│   └── assets/
│       ├── index.json          # asset registry
│       └── suse/...            # logo, palette, etc.
│
├── schemas/          # JSON Schema for tool.json, asset entries, AssetRef
├── scripts/          # build-catalog-index.ts, checksum-assets.ts, validate-catalog.ts
├── tests/            # engine tests
└── docs/             # this file + authoring guides + positioning

प्लेटफ़ॉर्म डिलीवरी मॉडल

यह प्लेटफ़ॉर्म कई सतहों पर चलता है — वेब PWA, Tauri डेस्कटॉप/मोबाइल, स्क्रिप्ट-योग्य CLI और इंटरैक्टिव TUI। ये सभी एक ही इंजन और एक ही टूल फ़ाइलों का उपयोग करते हैं।

वेब (PWA) — प्राथमिक वितरण

The desktop split view - controls generated from the manifest on the left, the live canvas on the right

An audiogram on a 430px-wide screen - the controls sheet above, the finished square artwork below, and the floating render pill

SUSE-नियंत्रित URL पर होस्टेड। सर्विस वर्कर द्वारा टूल और ऐसेट कैश कर लिए जाने के बाद ऑफ़लाइन काम करता है। अधिकांश कर्मचारी, वेंडर और पार्टनर प्लेटफ़ॉर्म का उपयोग यहीं करेंगे। किसी खाते की ज़रूरत नहीं — स्थिति (state) हर डिवाइस पर IndexedDB में संग्रहीत होती है।

वेब शेल एक ही लेआउट से रिस्पॉन्सिव है। डेस्कटॉप पर टूल एक आकार बदलने योग्य कंट्रोल साइडबार होता है, जिसके बगल में प्रीव्यू स्टेज है — ट्रैकपैड-नेटिव कैनवास नेविगेशन के साथ (कर्सर के इर्द-गिर्द ज़ूम के लिए Cmd/Ctrl-व्हील या पिंच, पैन के लिए Space- या मिडल-ड्रैग, 0/1/+/ कुंजियाँ, और एक Fit/% HUD)। मोबाइल (≤640px) पर कंट्रोल ऊपर से जुड़ी एक शीट बन जाते हैं, जिसकी ड्रैग ग्रिप पीक/हाफ़/फ़ुल पर स्नैप होती है (टैप से टॉगल), नीचे स्थिर फ़ुल-स्क्रीन प्रीव्यू रहता है, और एक तैरता Render बटन Export कंट्रोल्स को बॉटम-शीट पॉपअप में खोलता है। टच पर प्रीव्यू में पिंच-ज़ूम और ड्रैग-पैन मिलता है। रेंडर पथ और एक्सपोर्ट कंट्रोल दोनों जगह एक जैसे हैं — केवल UI का ढाँचा (क्रोम) रीफ़्लो होता है।

वही टूल फ़ोन की चौड़ाई पर, और कोई दूसरा लेआउट संभालने की ज़रूरत नहीं: कंट्रोल ऊपर एक शीट बन जाते हैं, प्रीव्यू पूरी स्क्रीन ले लेता है, और रेंडर पिल उसके ऊपर तैरती रहती है।

बैच मोड (/pro)। वेब शेल में एक स्प्रेडशीट-शैली की बैच ग्रिड (shells/web/src/pro/) भी शामिल है, जो एक या कई टूलों में एक साथ कई पंक्तियाँ रेंडर करती है। इसमें है CSV/TSV राउंड-ट्रिप और स्प्रेडशीट पेस्ट, प्रति-पंक्ति टेम्पलेट/फ़ॉर्मैट/आकार/इकाई/dpi, लाइव प्रीव्यू वाला ब्लॉक्स-एडिटर साइड पैनल, समेटे जा सकने वाले एक्सपोर्ट कॉलम, प्रति-पंक्ति "प्रासंगिकता" टैग बार, बाएँ ड्रैग-हैंडल से पंक्ति पुनर्क्रम, दो-चरणीय डिलीट पुष्टि, सहेजे गए बैच सत्र, और .zip डाउनलोड। "बड़े पैमाने पर कंटेंट निर्माण" पोज़िशनिंग के पीछे यही वन-टू-मेनी सतह है।

Tauri डेस्कटॉप / मोबाइल

पैकेज्ड नेटिव ऐप (Tauri की बदौलत छोटा फ़ुटप्रिंट)। पूर्ण ऑफ़लाइन उपलब्धता, CLI-निर्भर टूलों (PDF Smasher, Font Outliner) के लिए फ़ाइलसिस्टम एक्सेस, और कैमरा एक्सेस प्रदान करता है। मध्य-2026 के टूलिंग संवर्धन के लिए निर्धारित।

CLI

lolly <tool-id> [--input=value ...] --output=file.png

डेस्कटॉप उपयोगकर्ता कई टूल टर्मिनल से चला सकते हैं। CLI शेल वही इंजन लोड करता है, एक jsdom DOM बनाता है, वही रेंडर पथ चलाता है और फ़ाइल लिखता है। URL मोड ही ट्रांसपोर्ट है — CLI कोई अलग इम्प्लीमेंटेशन नहीं है। इससे यह गारंटी मिलती है कि CLI और GUI के आउटपुट एक जैसे हों।

lolly qr-code --url=https://suse.com --output=qr.svg
lolly quotes --quote="Ship it." --output=quote.png
lolly                        # lists available tools
lolly qr-code                # lists inputs for that tool

TUI

npm run tui

CLI का इंटरैक्टिव समकक्ष: टूल ब्राउज़ करने, इनपुट भरने, प्रोजेक्ट सहेजने और एक्सपोर्ट करने के लिए एक फ़ुल-स्क्रीन, कीबोर्ड-प्रथम टर्मिनल ऐप (Ink पर बना) — सब कुछ बिना GUI के। इसका होस्ट ब्रिज DOM-रहित फ़ॉर्मैट (SVG/EMF/EPS/HTML + टेक्स्ट/डेटा) के लिए CLI का इम्प्लीमेंटेशन ही दोबारा उपयोग करता है, और ~/.lolly के अंतर्गत ऑन-डिस्क स्थिति तथा एक ऑप्ट-इन इनलाइन प्रीव्यू जोड़ता है। इसके अलावा इसमें एक ब्राउज़र रेंडर स्तर है: एक सीमित-दायरे वाला हेडलेस Chromium (वही जो MCP सर्वर इंस्टॉल करता है), जो माँग पर रास्टर/PDF/वीडियो और लाइव-URL कैप्चर तैयार करता है — वेब शेल की एक बिल्ट कॉपी चलाकर, ताकि आउटपुट एक जैसा रहे, और यह केवल तभी लॉन्च होता है जब आप पहली बार ऐसा कोई फ़ॉर्मैट एक्सपोर्ट करते हैं। इसलिए url-shot (क्रॉप + रीकलर + वेक्टर PDF/SVG सहित) और हर रास्टर/pdf टूल टर्मिनल में भी चलता है। TUI गाइड देखें।

आप जिस भी सतह पर हों, डैशबोर्ड का क्षमताएँ टैब इस बात का पूरा नक़्शा है कि प्लेटफ़ॉर्म क्या-क्या कर सकने का दावा करता है — समूहों में बँटा और एक भी टूल खोले बिना पढ़ने योग्य।


टूल श्रेणियाँ

The Utilities drawer, where every card is a tool that transforms a file you already have

गैलरी में समूहन के लिए टूलों को उनके मैनिफ़ेस्ट में एक category से टैग किया जाता है।

पंक्तियाँ गैलरी सेक्शन के क्रम में सूचीबद्ध हैं। utility सेक्शन गैलरी में हमेशा सबसे अंत में रेंडर होता है (हर दूसरी श्रेणी के बाद, भविष्य की श्रेणियों सहित) — यह ऑन-डिवाइस "ऑफ़लाइन यूटिलिटीज़" दराज़ है।

श्रेणीशिप किए गए टूलनियोजित
everyoneQR Code Generator, Quote Card, Email Signature, Day Brief, Code Canvas, Color Block, Dynamic Layout, Logo, Web Icon MakerEmployee Image Stationery
designerBrand Lockup, Bag Video, Chart Creator, Street Map, Animated Ad, Multi-Page PDF, Diagram Builder, Logo Lockup: Grid (NASCAR), Logo Lockup: Partner, Filter: Duotone, Filter: Halftone, Filter: Scanline, Filter: Posterize Bitmap, Filter: Pixel StretchFont Outliner
eventMeeting Planner, Event Name Badge, Wayfinding Signage, Calendar ICSEvent Stationery, Bulk Name Badges, Room Agenda Cards
productCVE Alert, Product Release Announcement, Blog OG Image
utilityCountdown Timer, Color Palette, URL Screenshot, Strip Hidden Data, Text Helper, Compress PDF, Layout Studioइकाई/फ़ॉर्मैट कन्वर्टर, और ऑन-डिवाइस प्राइवेसी यूटिलिटी

टूलों को स्थिति के आधार पर भी वर्गीकृत किया जाता है: official (ब्रांड-अनुमोदित, कोई वॉटरमार्क नहीं), community (बाहरी योगदान), experimental (एक्सपोर्ट पर वॉटरमार्क)। Dynamic Layout, URL Screenshot, Logo Lockup: Grid (NASCAR), Filter: Posterize Bitmap और Diagram Builder फ़िलहाल experimental स्थिति में हैं; Web Icon Maker और Layout Studio community टूल के रूप में शिप होते हैं।

Layout Studio render.layout: "editor" फ़्री-कैनवास मोड पर बना पहला टूल है — एक क्रोम-रहित, प्रत्यक्ष-हेरफेर सतह, जहाँ आप टेक्स्ट, आकृतियों और छवियों के बॉक्स खींचते, आकार बदलते, घुमाते और स्नैप करते हैं, फिर हर दूसरे टूल की तरह उसी रेंडर पथ से एक्सपोर्ट करते हैं।

Strip Hidden Data पहली ऑन-डिवाइस यूटिलिटी है (privacy: "on-device"): एक कंटेंट-ट्रांसफ़ॉर्म टूल, जो आपकी दी हुई फ़ाइल लेता है, उसे पूरी तरह ब्राउज़र में प्रोसेस करता है और एक साफ़ प्रति लौटा देता है — कभी अपलोड नहीं, कभी वॉटरमार्क नहीं, कोई प्रोवेनेंस स्टैम्प नहीं। Text Helper दूसरी है — रोज़मर्रा के 'किसी वेबसाइट में पेस्ट करने' वाले कामों के लिए ऑन-डिवाइस वर्कबेंच (JSON फ़ॉर्मैट, JWT डिकोड, Base64, URL एनकोड/डिकोड, SHA हैशिंग)। Compress PDF तीसरी है — यह PDF की छवियों को फिर से संपीड़ित करके उसे छोटा करती है, यह भी पूरी तरह ऑन-डिवाइस। तीनों पर बैज टेक्स्ट है "आपके डिवाइस पर चलता है — कुछ भी अपलोड नहीं होता"। यह उस प्राइवेसी-यूटिलिटी श्रेणी की शुरुआत है, जो गोपनीय फ़ाइलों को एकल-उद्देश्य वेबसाइटों को सौंपने की जगह लेती है।

नोट: category और status प्रत्येक tool.json से catalog/tools/index.json (वह रजिस्ट्री जिसे गैलरी पढ़ती है) में डीनॉर्मलाइज़ किए जाते हैं। मैनिफ़ेस्ट ही सत्य का स्रोत है — इंडेक्स npm run build:catalog से जनरेट होता है, और यदि कमिट किया गया इंडेक्स मैनिफ़ेस्ट से भटक जाए तो npm run validate:catalog CI को विफल कर देता है।


आर्किटेक्चर संबंधी प्रतिबद्धताएँ

ये निर्णय तय हो चुके हैं। इनमें से किसी को भी बदलना एक बड़ा काम है — ये कोडबेस के हर दूसरे निर्णय को आकार देते हैं।

1. डिक्लेरेटिव टूल, साथ में एक इम्परेटिव एस्केप हैच

Street Map's control stack - a city dropdown, a theme select, weight sliders and colour triggers, every one of them drawn from a manifest line

एक टूल है: मैनिफ़ेस्ट (tool.json) + टेम्पलेट (template.html) + वैकल्पिक hooks.js

इनपुट मैनिफ़ेस्ट घोषित करता है। टेम्पलेट नहीं। इनपुट Handlebars टोकनों से अनुमानित नहीं किए जाते। मैनिफ़ेस्ट ही अनुबंध है; टेम्पलेट {{id}} के ज़रिए नामित वेरिएबल का उपभोग करता है।

हुक वैकल्पिक हैं। अधिकांश टूल विशुद्ध डिक्लेरेटिव हैं — मैनिफ़ेस्ट + टेम्पलेट पर्याप्त है। जिन टूलों को परिकलित मान चाहिए (QR एनकोडिंग, चार्ट डेटा को आकार देना), वे hooks.js प्रदान करते हैं, जो नामित लाइफ़साइकल फ़ंक्शन उजागर करता है (onInit, onInput, onFrame — मोशन-रिएक्टिव टूलों के लिए प्रति-फ़्रेम लाइव-कैमरा हुक — beforeExport, afterExport, और exportFile — फ़ाइल-इन/फ़ाइल-आउट ट्रांसफ़ॉर्म पथ, जिसका उपयोग Strip Hidden Data जैसी ऑन-डिवाइस यूटिलिटी करती हैं)। (beforeRender हुक अनुबंध में आरक्षित है, लेकिन फ़िलहाल इसे कहीं से बुलाया नहीं जाता — इस पर निर्भर न रहें।) होस्ट हुकों को new Function('host', …) के ज़रिए लोड करता है, जिसमें कैपेबिलिटी ब्रिज क्लोज़र स्कोप के रूप में इंजेक्ट होता है। यह एक पोर्टेबिलिटी अनुबंध है, सुरक्षा सैंडबॉक्स नहीं: हुक अब भी पेज रेल्म में चलते हैं और ब्राउज़र शेल में window/fetch/document तक पहुँच सकते हैंhost. समर्थित, पोर्टेबल सतह है, कोई लागू की गई सीमा नहीं। असिंक्रोनस हुक परिणाम समय-सीमित हैं (onInit 5s, onInput 2s, बाक़ी 5s) और देर से आए परिणाम त्याग दिए जाते हैं; बेक़ाबू सिंक्रोनस* हुक को रोका नहीं जा सकता। इसलिए जब तक Worker आइसोलेशन नहीं आता, अविश्वसनीय थर्ड-पार्टी हुक कोड चलाना सुरक्षित नहीं है।

यह इसलिए मायने रखता है: डिक्लेरेटिव टूल ग़ैर-डेवलपर भी बना सकते हैं। अगर हर टूल एक वेब ऐप होता, तो जोखिम-टिप्पणी "वर्कहॉर्स टेम्पलेट बनाने/बनाए रखने के सीमित कौशल" एक स्थायी अड़चन बन जाती।

2. टूल और ऐसेट डेटा हैं, बंडल किया हुआ कोड नहीं

वेब और Tauri ऐप बूट पर एक ज्ञात URL से टूल और ऐसेट कैटलॉग लाते हैं, उन्हें स्थानीय रूप से कैश करते हैं, और जो भी वहाँ है उसी पर काम करते हैं। नई इवेंट टाइल या सीज़नल ऐसेट जोड़ने के लिए ऐप रिलीज़ की ज़रूरत नहीं पड़ती।

CDN पॉइज़निंग रोकने के लिए ऐसेट बाइट्स का SHA-256 चेकसम रखा जाता है। ऐसेट का id + version कैश अमान्यकरण चलाता है।

3. कैपेबिलिटी ब्रिज ही एकमात्र API है जिसे टूल देखते हैं

टूल अपने टेम्पलेट क्षेत्र के बाहर DOM को कभी नहीं छूते, कभी सीधे fetch नहीं बुलाते, कभी फ़ाइलसिस्टम नहीं पढ़ते। वे वर्शन-बद्ध host.* मेथड बुलाते हैं। ब्रिज engine/src/bridge/host-v1.ts में परिभाषित है:

ब्रिज APIयह क्या करता है
host.profileउपयोगकर्ता का पहला नाम, ईमेल, हेडशॉट, शहर आदि। bindToProfile के ज़रिए इनपुट पहले से भरता है।
host.assetsकैटलॉग क्वेरी, ऐसेट रिज़ॉल्यूशन, होस्ट-प्रदत्त पिकर UI।
host.stateइनपुट स्लॉट सहेजना / लोड करना। वेब पर IndexedDB, Tauri पर फ़ाइलसिस्टम, CLI पर मेमोरी।
host.clipboardक्लिपबोर्ड पर टेक्स्ट या छवि लिखना (प्लेटफ़ॉर्म फ़ॉलबैक सहित)।
host.exportरेंडर लक्ष्य को रास्टराइज़ या सीरियलाइज़ करना। एक्सपेरिमेंटल टूलों पर वॉटरमार्क लगाता है।
host.netअनुमति-सूचीबद्ध fetch — केवल तभी उपलब्ध जब टूल ने "network" क्षमता घोषित की हो। (फ़िलहाल कोई शिपिंग टूल इसका उपयोग नहीं करता।)

वैकल्पिक, जोड़ी जाने वाली सतहें तभी दिखती हैं जब कोई शेल उन्हें प्रदान करे। दो क्षमता-गेटेड हैं — तभी उजागर होती हैं जब टूल मेल खाता फ़्लैग घोषित करे: host.compose (किसी दूसरे टूल का रेंडर एम्बेड करना — compose) और host.capture (URL Screenshot के लिए पेज कैप्चर — capture)। बाक़ी फ़ीचर-डिटेक्टेड हैं — जब भी शेल उन्हें दे सके, मौजूद रहती हैं: host.text (HarfBuzz WASM के ज़रिए टेक्स्ट-टू-पाथ; wasm क्षमता उन टूलों को चिह्नित करती है जो इस पर निर्भर हैं), host.pdf (PDF पार्सिंग/संपीड़न, Strip Hidden Data और Compress PDF द्वारा प्रयुक्त), और host.tokens (DTCG डिज़ाइन टोकन)। घोषणा-योग्य क्षमताएँ हैं: network, filesystem, clipboard, camera, ffmpeg, wasm, capture, compose

वही टूल ब्राउज़र, Tauri और हेडलेस CLI में चलता है, क्योंकि हर शेल इस इंटरफ़ेस को लागू करता है — टूल को कभी पता नहीं चलता कि वह किसमें है।

ब्रिज वर्शन-बद्ध है। मेथड जोड़ना माइनर वर्शन है। सिग्नेचर हटाना या बदलना मेजर वर्शन बंप है। जब v2 आए, तो v1 को काम करते रहना होगा।

4. ऐसेट ID हमेशा के लिए हैं

suse/logo/primary एक अनुबंध है। एक बार प्रकाशित होने पर:

इससे सहेजी गई टूल स्थितियाँ और URL से साझा किए गए लिंक वर्षों तक टिकाऊ रहते हैं।

5. URL मोड प्रथम-श्रेणी का है

That link on its own, with nothing else in it, is the finished asset

Nine steps across four hues, all grown from the single seed colour carried in the link

हर इनपुट को URL पैरामीटर के रूप में व्यक्त किया जा सकना चाहिए:

lolly.tools/#/tool/qr-code?url=https://suse.com&ecl=H

CLI मोड एक अलग ट्रांसपोर्ट के नीचे URL मोड ही है — CLI शेल argv से एक URL-स्टेट ऑब्जेक्ट बनाता है और वही इंजन पाइपलाइन चलाता है। रेंडर पथ एक ही है। CLI, GUI से भटक नहीं सकता, क्योंकि वह कोई अलग इम्प्लीमेंटेशन नहीं है।

url-mode.ts राउंड-ट्रिप (पार्स और सीरियलाइज़) संभालता है। आरक्षित पैरामीटर (कभी इनपुट के रूप में टूल तक नहीं भेजे जाते): format, export, copy, slot, output, filename, _v, z (पैक्ड स्टेट — "सबसे छोटा लिंक" टोकन), width/w, height/h, unit, dpi, profile, password, bleed, marks, full, options, nostage। URL मोड में ऐसेट इनपुट अपनी id से सीरियलाइज़ होते हैं; रनटाइम उन्हें हाइड्रेशन से पहले host.assets.get() के ज़रिए हल करता है। width/height वे मान हैं जो unit में व्यक्त होते हैं (डिफ़ॉल्ट px, साथ ही mm/cm/in/pt/pc); भौतिक इकाई के साथ dpi रास्टर रिज़ॉल्यूशन तय करता है। ये कैनवास दस्तावेज़ का आकार सेट करते हैं और एक्सपोर्ट आयाम पैनल को पहले से भर देते हैं।

चूँकि हर इनपुट लिंक में ही सफ़र करता है, किसी एक पैरामीटर का बदलना एक अलग तैयार ऐसेट है। यह पूरा पैलेट एक सीड रंग, एक हार्मनी और एक स्टेप संख्या से बना है:

6. संग्रहण ब्रिज से होकर जाता है, सीधे नहीं

वेब शेल: IndexedDB। Tauri: फ़ाइलसिस्टम। CLI: इन-मेमोरी। टूल केवल host.state.save(slot, data) और host.state.load(slot) देखते हैं। localStorage का उपयोग नहीं होता — वह बहुत छोटा है और ब्लॉब नहीं रख सकता।

उपयोगकर्ता प्रति टूल कई नामित एडिट स्लॉट सहेज सकते हैं और बाद में हर सत्र पर लौट सकते हैं। खाता बनाने की ज़रूरत नहीं; स्थिति प्रति-डिवाइस है। चूँकि ब्रिज ही एकमात्र सीवन है, वह प्रति-डिवाइस स्थिति पोर्टेबल भी है: shells/web/src/data-transfer.ts सब कुछ host.profile/host.state/host.assets के ज़रिए वापस पढ़कर एक अकेले lolly-backup zip में डाल देता है, जो किसी भी दूसरे इंस्टॉल पर इम्पोर्ट होता है — "नए डिवाइस पर जाने" का ऑफ़लाइन उत्तर, जिसे किसी सर्वर की ज़रूरत नहीं (पूरा विनिर्देश: docs/data-transfer.md)। SUSE ID एकीकरण (मल्टी-डिवाइस सिंक) इसी के ऊपर एक भावी माइलस्टोन है।

7. मैच्योरिटी टैग "ब्रांड-अनुमोदित" जोखिम का संरचनात्मक उत्तर देते हैं

हर टूल अपने मैनिफ़ेस्ट में status: official | community | experimental घोषित करता है। गैलरी स्थिति के अनुसार क्रमबद्ध करती है। एक्सपेरिमेंटल टूल अपने एक्सपोर्ट पर स्वतः वॉटरमार्क लगाते हैं — वॉटरमार्क host.export.render लगाता है, टूल नहीं, इसलिए कोई ग़ैर-आधिकारिक टूल लेखक इससे बच नहीं सकता।

यह उस धारणा-जोखिम का संरचनात्मक उत्तर है कि किसी भी टूल का उपयोग ब्रांड-अनुमोदन का संकेत देता है। प्रक्रिया-आधारित उत्तर (समीक्षा कतार, SUSE ID गेटिंग) इसके ऊपर परत बनते हैं।

8. टूल इनपुट मैनिफ़ेस्ट के ज़रिए टाइप्ड होते हैं, ऐसेट सहित

इनपुट एक type घोषित करते हैं: text, longtext, number, boolean, color, select, asset, date, time, datetime-local, url, profile, blocks, vector, और file। होस्ट मैनिफ़ेस्ट से हर टाइप के लिए एक सामान्य नियंत्रण रेंडर करता है — टूल शून्य कंट्रोल कोड लिखते हैं। तीन बाक़ियों से ज़्यादा वज़न रखते हैं:

9. टेम्पलेट लॉजिक-रहित हैं (Handlebars, EJS नहीं)

EJS की जगह Handlebars जान-बूझकर चुना गया:

लॉजिक hooks.js में रहता है, जहाँ वह स्पष्ट और समीक्षा-योग्य है। उपलब्ध Handlebars हेल्पर: {{default}}, {{upper}}, {{lower}}, {{eq}}, {{markdown}}, {{asset ref}}, {{asset ref "property"}} (साथ ही डेटा-फ़ॉर्मैट हेल्पर icsStamp/rfcText/csvCell, जिन्हें सहोदर .ics/.vcf/.csv टेम्पलेट उपयोग करते हैं)।

10. टूल दूसरे टूलों को कंपोज़ करते हैं

The opening slide of the default deck, whose own subtitle states that every slide can hold another Lolly tool

कोई टूल दूसरे टूल का रेंडर बिना किसी टूल-से-टूल इम्पोर्ट के एम्बेड कर सकता है — कंपोज़िशन इंजन हल करता है, टूल कोड कभी नहीं। इसकी दो सतहें हैं:

Slides टूल उसी दूसरी सतह पर बना है: किसी भी स्लाइड का कोई भी स्लॉट इमेज की जगह कोई दूसरा Lolly टूल रख सकता है।

किसी भी टूल का रेंडर कंपोज़ करें: SVG चाइल्ड तब सच्चा वेक्टर बना रहता है जब पैरेंट SVG या PDF में एक्सपोर्ट करता है, और PNG के लिए साफ़-सुथरा रास्टराइज़ होता है; PNG/JPG/WEBP चाइल्ड छवियों के रूप में एम्बेड होते हैं। इसके लिए compose क्षमता चाहिए। कंपोज़ किए गए चाइल्ड मध्यवर्ती होते हैं — उन पर कभी वॉटरमार्क या प्रोवेनेंस स्टैम्प नहीं लगता — और कंपोज़िशन शालीनता से डिग्रेड होता है: जो शेल किसी चाइल्ड को रेंडर नहीं कर सकता, वह बस उस स्लॉट को छोड़ देता है और पैरेंट फिर भी रेंडर होता है।


जो हमने स्पष्ट रूप से नहीं करना चुना


जीवनचक्र, शुरू से अंत तक

The export panel that <code>?options</code> opens: the filename and format pair, the output size, and the controls that write the file

एक उपयोगकर्ता lolly.tools/#/tool/qr-code?url=https://suse.com&ecl=H खोलता है:

  1. बूट। वेब शेल IndexedDB खोलता है, कैपेबिलिटी ब्रिज बनाता है, टूल और ऐसेट कैटलॉग सिंक करता है (या ऑफ़लाइन होने पर कैश से लोड करता है)।
  2. रूट। URL हैश → tool व्यू, जिसमें qr-code और URL पैरामीटर निकाल लिए जाते हैं।
  3. लोड। loadTool('qr-code', fetchFile) tool.json लाता है, JSON Schema के विरुद्ध सत्यापित करता है, फिर template.html, styles.css और hooks.js का सोर्स लाता है।
  4. URL स्थिति पार्स। parseUrlState URL पैरामीटरों को आरंभिक इनपुट मानों में बदलता है। ऐसेट रेफ़ (?logo=suse/logo/primary) हल्के { id, _unresolved: true } ऑब्जेक्ट के रूप में पार्स होते हैं।
  5. रनटाइम। createRuntime(tool, host, initialValues) इनपुट मॉडल बनाता है (प्रोफ़ाइल डेटा, डिफ़ॉल्ट और आरंभिक मानों को मिलाकर), ऐसेट रेफ़ host.assets.get() से हल करता है, हुक लोड करता है (क्लोज़र-स्कोप्ड host, सैंडबॉक्स नहीं), hooks.onInit बुलाता है।
  6. रेंडर। शेल रनटाइम को सब्सक्राइब करता है; हर स्थिति-परिवर्तन पर उसे { model, hydrated } मिलता है। वह मॉडल से इनपुट नियंत्रण रेंडर करता है और हाइड्रेटेड टेम्पलेट HTML को #tool-canvas में लिखता है।
  7. इंटरैक्ट। उपयोगकर्ता किसी इनपुट में टाइप करता है → runtime.setInput(id, value) → बाधाएँ लागू → hooks.onInput की कॉल → पुनः-हाइड्रेट → पुनः-रेंडर। कैनवास लाइव अपडेट होता है।
  8. एक्सपोर्ट। उपयोगकर्ता Download(PNG) क्लिक करता है → runtime.export(canvasNode, 'png')host.export.render (dom-to-image-more से रास्टराइज़ करता है; SVG/PDF समर्पित DOM-वॉकिंग वेक्टराइज़रों से गुज़रते हैं) → ब्लॉब → host.export.download। टूल जिन फ़ॉर्मैट में ऑप्ट कर सकता है, उनकी रेंज व्यापक है: svg, png, jpg/jpeg, webp, avif, pdf, वेक्टर फ़ॉर्मैट emf, eps, साथ ही प्रिंट/CMYK फ़ॉर्मैट pdf-cmyk, cmyk-tiff, eps-cmyk; वीडियो फ़ॉर्मैट webm, mp4, gif; और डेटा/टेक्स्ट फ़ॉर्मैट html, md, txt, json, csv, ics, vcf, ico, zip। (जो टूल render.export: false सेट करते हैं — जैसे Color Palette, Countdown Timer, Strip Hidden Data, Text Helper, Compress PDF — वे डाउनलोड/फ़ॉर्मैट/आयाम नियंत्रण छिपा देते हैं।) भौतिक इकाइयाँ यहीं प्रति फ़ॉर्मैट रूपांतरित होती हैं (PDF → वास्तविक पेज पॉइंट, रास्टर → DPI पर पिक्सेल, pHYs चंक के साथ)। लेखकत्व/प्रोवेनेंस मेटाडेटा (लेखक, टूल, स्रोत — engine/src/metadata.ts द्वारा निर्मित) प्रति फ़ॉर्मैट एम्बेड होता है: PNG iTXt, JPEG EXIF, PDF इन्फ़ो डिक्ट, SVG <metadata>, GIF टिप्पणी। एक्सपेरिमेंटल टूलों पर वॉटरमार्क होस्ट डालता है, टूल नहीं।

Tauri में वही जीवनचक्र। CLI में वही जीवनचक्र — jsdom हेडलेस DOM देता है; आउटपुट फ़ाइल या stdout में जाता है।


ओपन-सोर्स स्थिति

engine/, shells/, schemas/, और docs/ डायरेक्टरियाँ MPL-2.0 के अंतर्गत ओपन सोर्स हैं — ब्रांड टूलिंग के लिए एक वेंडर-तटस्थ स्कैफ़ोल्डिंग प्लेटफ़ॉर्म, जिसकी हर शिप-योग्य इकाई github.com/lolly-tools के अंतर्गत अपनी अलग रिपॉज़िटरी में विभाजित है। tools/ और catalog/assets/ SUSE-विशिष्ट सामग्री हैं और SUSE की स्वामित्व-सामग्री बनी रहती हैं (सर्वाधिकार सुरक्षित — हर रिपो की NOTICE.md देखें); वे MPL के दायरे में नहीं आतीं।

यह विभाजन लागू किया जाता है — engine/ से tools/ या assets/ में कोई क्रॉस-इम्पोर्ट नहीं है — ताकि प्लेटफ़ॉर्म/कंटेंट की सीमा साफ़ बनी रहे।


रोडमैप

माइलस्टोनलक्ष्यक्या
आरंभिक टूल✅ पूर्णQR Code, Quote Card, Email Signature, Day Brief, Code Canvas, Countdown Timer, Color Palette, Brand Lockup, Bag Video, Chart Creator, Filter: Duotone, Meeting Planner — वेब शेल लाइव
मौजूदा टूलिंग का संवर्धनमध्य 2026 ✅ पूर्णडाउनलोड-योग्य ऑफ़लाइन ऐप (Tauri); अतिरिक्त कर्मचारी और इवेंट टूल; समृद्ध एक्सपोर्ट पाइपलाइन (टेक्स्ट-टू-पाथ स्थिरता, मेटाडेटा, अतिरिक्त फ़ॉर्मैट — plans.md देखें)
इंजन को ओपन सोर्स करना2026 के अंत में ✅ पूर्णइंजन, शेल, स्कीमा, दस्तावेज़ सार्वजनिक होते हैं — ब्रांडेड टूल/ऐसेट नहीं
डिवाइस-से-डिवाइस स्थानांतरण✅ पूर्णपोर्टेबल lolly-backup बंडल प्रोफ़ाइल, सहेजे गए सत्र, अपलोड की गई छवियाँ और प्राथमिकताएँ किन्हीं दो इंस्टॉल के बीच ले जाता है — ऑफ़लाइन या ऑनलाइन, बिना खाते के। फ़ॉरवर्ड-कम्पैटिबल, अखंडता-जाँचा हुआ एनवेलप (विनिर्देश: docs/data-transfer.md)
औपचारिक टूल रोडमैप स्थापित करना2026 के अंत मेंग्राहक रेफ़रेंस किट, AI डिज़ाइन इनजेस्ट, GET/URL अनुरोध मोड
ऑन-डिवाइस प्राइवेसी यूटिलिटी🚧 प्रगति परकंटेंट-ट्रांसफ़ॉर्म टूल जो आपकी अपनी फ़ाइल को स्थानीय रूप से प्रोसेस करते हैं (फ़ाइल अंदर → साफ़ फ़ाइल बाहर), और एकल-उद्देश्य SaaS को डेटा भेजने की जगह लेते हैं। पूर्ण: file इनपुट टाइप + exportFile ट्रांसफ़ॉर्म पथ + privacy:"on-device" परिपाटियाँ (कोई वॉटरमार्क/प्रोवेनेंस नहीं) + Strip Hidden Data (JPEG/PNG/SVG/PDF मेटाडेटा, PDF host.pdf ब्रिज के ज़रिए) और Text Helper (रोज़मर्रा के 'किसी वेबसाइट में पेस्ट करने' वाले कामों का ऑन-डिवाइस वर्कबेंच — JSON फ़ॉर्मैट, JWT डिकोड, Base64, URL एनकोड/डिकोड, SHA हैशिंग, साथ में एक नॉवेल्टी समूह)। आगे: क्रॉप/रीसाइज़, छवि रूपांतरण/संपीड़न; फिर एक host.image कोडेक ब्रिज (विनिर्देश: plans/exfiltration-app-content.md)
डिज़ाइन टोकन (DTCG)🚧 रंग शिप हो चुकेब्रांड प्रिमिटिव कैननिकल W3C डिज़ाइन टोकन (DTCG) के रूप में — वही फ़ॉर्मैट जो Penpot इम्पोर्ट/एक्सपोर्ट करता हैपूर्ण: रंग टोकन (suse/tokens/brand), host.tokens ब्रिज, पिकर स्वैच + संदर्भ-लिंक्ड मान (विनिर्देश: docs/design-tokens.md)। आगे: आयाम/टाइप टोकन, Penpot इम्पोर्ट/एक्सपोर्ट, स्थानांतरण बंडल में उपयोगकर्ता टोकन (tokens.json)
MCP एजेंट एंडपॉइंट (रेंडर)✅ पूर्णएक MCP सर्वर कैटलॉग + रेंडर पथ को कॉल-योग्य टूलों (lolly_list_tools / describe_tool / build_url / render / transform) के रूप में उजागर करता है, ताकि कोई भी एजेंट तैयार, नियम-बद्ध ऐसेट बना सके — इसे किसी भी MCP क्लाइंट में कस्टम कनेक्टर (OAuth 2.1) के रूप में जोड़ें या बियरर टोकन के साथ किसी CLI/HTTP क्लाइंट को इस पर इंगित करें। mcp.lolly.tools (पूर्ण एंडपॉइंट: होस्टेड हेडलेस ब्राउज़र के ज़रिए रास्टर/PDF/एनिमेशन/वीडियो) और lolly.tools/api/mcp (सर्वरलेस, ब्राउज़र-रहित स्तर) पर लाइव। नीचे दिए Penpot ऑथरिंग MCP से अलग, जो टूल निर्माण के बारे में है (विनिर्देश: plans/mcp-server.md; गाइड: docs/mcp.md + docs/ai-agents.md)
Penpot फ़ाइल इनजेस्ट टूल के रूप में2027+कोई Penpot फ़ाइल इम्पोर्ट करें और उसे एक Lolly टूल के रूप में सामने लाएँ (डिक्लेरेटिव, कंस्ट्रेंट-फ़र्स्ट), जिससे Penpot में बनाए गए डिज़ाइन डिटर्मिनिस्टिक जनरेटर बन जाएँ
MCP + Penpot एक्सटेंशन (केवल-ऑनलाइन ऑथरिंग)2027+एक Penpot MCP सर्वर AI के साथ नए टूल गढ़ता है — डिटर्मिनिस्टिक टेम्पलेट बनाने का सबसे विज़ुअल तरीक़ा: ब्रांड-सूचित पहला दौर, लूप में मौजूद इंसान के साथ परिष्कृत, समय के साथ वन-शॉट नए संदर्भों का लक्ष्य। टूल निर्माण केवल-ऑनलाइन है; इससे बने टूल कहीं भी चलते हैं
RBAC + SUSE ID2027+विशिष्ट टूलों को SUSE ID के पीछे गेट करना; मल्टी-डिवाइस सहेजी गई स्थिति; Google Drive इनजेस्ट/एक्सपोर्ट

इंजन कहाँ ख़त्म होता है और होस्ट कहाँ शुरू होता है

अगर आप उसे विशुद्ध डेटा + Handlebars में व्यक्त कर सकते हैं → इंजन। अगर वह DOM, फ़ाइलसिस्टम, नेटवर्क या किसी ब्राउज़र/OS API को छूता है → होस्ट

यह रेखा जान-बूझकर तीखी रखी गई है। इंजन ही ओपन-सोर्स हिस्सा है। जो कुछ भी SUSE, विशिष्ट प्लेटफ़ॉर्म या रनटाइम परिवेशों के बारे में जानता है, वह इससे बाहर रहता है।