یہ دستاویز Lolly پلیٹ فارم کے مقصد، ڈھانچے اور تعمیراتی فیصلوں کو قید کرتی ہے۔ یہ پروڈکٹ وژن اور کوڈبیس کی موجودہ حالت دونوں کی عکاسی کرتی ہے۔
حیثیت: Lolly ایک اندرونی پروٹوٹائپ ہے جو ایک بند پائلٹ میں ہے جو ابھی مکمل نہیں ہوا۔ انجن ڈیٹرمنسٹک اور اندرونی طور پر مستقل ہے، لیکن پروڈکٹ ابھی ابتدائی مرحلے میں ہے - SUSE پہلا گاہک ہے - اور اس کے کرپٹوگرافی اور فائل-پارسنگ انجن فی الحال SUSE کی سخت انفراسٹرکچر ہارڈننگ سے گزر رہے ہیں، انٹرپرائز پیمانے کی تیاری میں (ہم اس میں واقعی اچھے ہیں)۔ نیچے دی گئی آرکیٹیکچر کو زیرِ آزمائش ڈیزائن ارادے کے طور پر پڑھیں، نہ کہ ایک مکمل، تصدیق شدہ پروڈکٹ کے طور پر۔ دیکھیں اپنانا اور نگرانی کہ پائلٹ کیسے چلایا اور ناپا جاتا ہے۔
یہ صفحہ کیسے پڑھیں۔ اس میں ترتیب سے دو قسم کا مواد ہے۔ پہلا نصف ہے یہ کیوں موجود ہے: مسئلہ، پوزیشننگ اور وہ زندگی کا سفر جو ایک اثاثہ طے کرتا ہے۔ بڑی تصویر سے آگے یہ ہے پرتیں کیسے فٹ ہوتی ہیں: تعاون کاروں کے لیے آرکیٹیکچر دستاویز، جس میں انجن/شیل/پیک علیحدگی، ریپوزٹری لے آؤٹ، ڈیلیوری اہداف اور وہ عہد شامل ہیں جو پلیٹ فارم میں ہر تبدیلی کو محدود کرتے ہیں۔ اگر آپ یہاں پروڈکٹ سمجھنے کے بجائے کوڈبیس تبدیل کرنے کے لیے ہیں، تو بڑی تصویر سے شروع کریں۔
دو ساتھی دستاویزات اس صفحے سے زیادہ گہرائی میں جاتی ہیں۔ ریپوزٹری میں
engine/README.mdانجن کا ماڈیول-بہ-ماڈیول نقشہ ہے، جس میں ہر ماڈیول اور یہ کیا پارس یا لکھتا ہے اس کی ایک تیار شدہ جدول ہے۔ خطرے کا ماڈل اور اعتماد کی حدود وہی آرکیٹیکچر ہے جو اعتماد کی حدود کے طور پر پڑھی گئی ہے، اور یہ کسی بھی سوال کے لیے صحیح صفحہ ہے کہ انجن کیا غیر معتبر سمجھتا ہے۔
یہ کیوں موجود ہے
ٹیموں کو ایک بار بار پیش آنے والا مسئلہ درپیش ہوتا ہے: قابلِ تکرار تخلیقی اور مواد کا کام جو ہر بار ماہر ہاتھوں کو جواز دینے کے لیے بہت زیادہ متوقع ہے، لیکن بغیر حفاظتی اقدامات کے سونپنے کے لیے بہت زیادہ معیار-حساس ہے۔ نتیجہ یا تو سست تھروپٹ (ماہر بوٹل نیک)، عدم مطابقت (لوگ جو بھی ٹول ان کے پاس ہو استعمال کرتے ہیں) یا وینڈر لاک-اِن (ایک SaaS DAM جو آپ کے ٹیمپلیٹس کو کنٹرول کرتا ہے) کی صورت میں نکلتا ہے۔
یہ پلیٹ فارم اس کا براہ راست جواب ہے:
بڑے پیمانے پر پروگرام ایبل تخلیقی اور مواد - صفر-محنت اثاثہ تخلیق، جس کے قواعد مرکزی کنٹرول میں ہیں، ملازمین، وینڈرز اور شراکت داروں کے لیے۔
Lolly وہ جگہ نہیں جہاں ڈیزائن سسٹم ایجاد ہوتا ہے - یہ وہ جگہ ہے جہاں وہ تیار ہوتا ہے۔ اسے ڈیزائن کے لیے ایک وینڈنگ مشین کی طرح سمجھیں: انتخاب کریں، نتیجہ حاصل کریں۔ ہر بار۔ انجن آپ کے سامنے موجود ہارڈویئر پر ہر فارمیٹ کی زیادہ سے زیادہ ممکنہ کوالٹی کے لیے کام کرتا ہے، اور وہی انجن ہر اُس سطح پر وہی فائل بناتا ہے جہاں یہ چلتا ہے۔
نتیجہ ہے کثرت: ہر تقریب کے پاس درست سائنیج ہے، ہر CVE الرٹ گھریلو انداز سے میچ کرتا ہے، ہر لیبل صاف پرنٹ ہوتا ہے، ہر ای میل دستخط تازہ ہے - یہ سب ایک ڈیزائن ٹکٹ کے بغیر۔ پلیٹ فارم بار بار پیش آنے والے آپریشنلائزڈ تخلیقی کام کو سنبھالتا ہے۔ یہ جان بوجھ کر ایک مخصوص تخلیقی ٹول نہیں ہے - ڈیزائنرز اب بھی فلیگ شپ کام کے مالک رہتے ہیں۔
امکانی طور پر ایجاد کریں، ڈیٹرمنسٹک طور پر پیمانہ بنائیں
تخلیقی پائپ لائن میں AI کے بارے میں ہر بحث ایک ہی سوال پر رک جاتی ہے: اس میں کون سا حصہ مشین کا کام ہے؟ یہ ایک پرانا سوال ہے جس کا جواب طے شدہ ہے۔ کاتب اور مصور پہلے ہی دو آلات کے درمیان کام کرتے تھے - ڈھیلا خاکہ، جہاں کچھ بھی طے نہیں تھا اور ہر چیز آزمائی جا سکتی تھی، اور پرنٹنگ پریس، جو بالکل اس لیے خوفناک تھی کہ یہ عزم کرتی تھی۔ خاکے وہ جگہ تھے جہاں فن ہوتا تھا۔ پریس وہ طریقہ تھی جس سے یہ کسی تک پہنچتا تھا۔ کسی نے بھی ان دونوں کو الجھایا نہیں، اور دونوں آگے بڑھتے رہے - نئی سیاہی، نئے حروف، نئے پریسز - ہر ایک ہنر اور اس ارادے کے ساتھ ہم آہنگی میں بہتر ہوتا گیا جس کی وہ خدمت کرتا تھا۔
Lolly وہی حد کھینچتا ہے۔ امکانی طور پر تلاش کریں: ایک ماڈل، ایک ڈیزائنر، ایک کچا خیال، ایک پرامپٹ جو کہیں ایسی جگہ جاتا ہے جس کی کسی نے منصوبہ بندی نہیں کی تھی۔ پھر ڈیٹرمنسٹک طور پر پیمانہ بنائیں - جو چیز دس ہزار آؤٹ پٹس تک پہنچتی ہے وہ ایک ٹول ہے، اور ایک ٹول ہر بار انہی ان پٹس سے یکساں رینڈر ہوتا ہے جنہیں آپ پڑھ سکتے ہیں۔ تلاش آزاد رہتی ہے کیونکہ اس کے بعد کچھ بھی اس پر منحصر نہیں ہوتا کہ یہ دو بار یکساں طور پر اترے۔ آؤٹ پٹ اعتماد کماتا ہے کیونکہ یہ اندازہ نہیں ہے۔ AI تجربے کو پیشین گوئی، دوبارہ پیدا کیے جانے کے قابل نتائج میں لانا کوئی نیا نظم و ضبط نہیں ہے؛ یہ وہی محنت کی تقسیم ہے جس نے پرنٹ شدہ کام کو پہلی جگہ قابلِ اعتماد بنایا۔
تخلیقی عمل پر اعتماد کریں، سختی کے ساتھ پیمانہ بنائیں۔
متبادلات کے مقابلے میں
| Capability | Lollyconstraint-first | Penpotopen design | CanvaAffinity Cavalry |
Adobedesktop pro | Brand DAMFrontify Bynder |
Cloudinarymedia pipeline | Figmaonline pro | Render APIsBannerbear Placid Creatomate |
|---|---|---|---|---|---|---|---|---|
| Overall completenessunweighted mean - weight rows for your own context · columns are sorted by this row | 84 | 70 | 57 | 48 | 41 | 41 | 41 | 34 |
Production maturity & track recordCanva, Adobe, Figma, Bynder/Frontify: a decade-plus at massive scale. Render APIs: years in production pipelines. Penpot: shipping, large community, younger at enterprise scale. Lolly: closed pilot, security hardening underway, no public case studies. Cloudinary: 2012, enterprise media infrastructure at global scale. |
25 | 75 | 100 | 100 | 100 | 100 | 100 | 75 |
Mass generation from data (CSV / API)Lolly: batch grid + CLI, one file per row. Canva: Bulk Create + Autofill API - real, but Enterprise-gated, async, text/image fields only; Affinity Publisher adds desktop data merge. Adobe: InDesign data merge and scripting. Figma: Buzz fills templates from CSV or XLSX, free in beta (Aug 2026) - cloud- and account-gated, 50. Penpot: open API/MCP, not purpose-built. Render APIs: this is their entire product - account- and cloud-gated, so 75 under the method rule. DAM: Studio-style batch create and resize. Cloudinary: URL-driven overlays and named transforms derive variants at scale - account-gated, 75. |
100 | 50 | 50 | 50 | 75 | 75 | 50 | 75 |
Offline & air-gap operationLolly: static deploy, no server in the render path, MDM/air-gap. The Canva column is scored on its best family member: Affinity (free since Oct 2025) runs offline as a desktop suite once a verified account activates it - 75, the same deduction Adobe takes. Canva's own Offline (2026) still edits pre-synced designs only, per device, in a 14-day window. Adobe: desktop apps run offline; licensing phones home. Figma: cached-file viewing and limited editing. Penpot: self-host on your infra behind a firewall (server required). Cloud APIs and DAM: none. |
100 | 75 | 75 | 75 | 0 | 0 | 25 | 0 |
On-device rendering - data never leavesLolly: renders and converts in-browser or CLI, locally; zero upload. Adobe: local desktop rendering, but cloud services and telemetry in the suite. Figma: canvas renders locally, files live in Figma's cloud. Penpot: 90 - rendering happens in the browser and the save target is a server that can be your own sovereign private cloud, even your own laptop, with private export throughout; only the server hop separates it from Lolly. Canva itself is server-side by design; the column's 75 is Affinity - local desktop rendering, account activation and telemetry, the same shape as Adobe. Render APIs, DAM: server-side by design. |
100 | 90 | 75 | 75 | 0 | 0 | 25 | 0 |
Hard brand constraints (structural)Lolly: rules compiled into template code - off-brand output is impossible, not just discouraged. Canva: element locks - permission-based, admin-set and static: no template logic such as conditional logo switching or responsive recomposition at fill time, and Canva AI does not yet respect Brand Controls - 50. Render APIs: templates are fixed (only declared fields vary) but no governance layer. DAM: locked templates with restrictions. Figma: Buzz templates hold locked guidelines at fill time; the design surface stays review-enforced - 50. Penpot: tokens and systems enforced by review, not runtime. Adobe: libraries, little enforcement. Cloudinary: presets and Enterprise-gated transformation templates fix operations, not brand layout - 50. |
100 | 50 | 50 | 25 | 75 | 50 | 50 | 75 |
C2PA provenance, signed at creationAdobe: the broadest shipped implementation (Photoshop, Lightroom, Premiere, Firefly) - signing happens locally in the desktop apps and in the cloud for the Content Authenticity web app, and nothing signs without an Adobe account and an Adobe-provisioned identity, so it is account-gated end to end: 75 under the method rule. Lolly: on-device key generation, offline signing, plus pixel imprint - no account anywhere; the on-device key reads as unverified in stock validators (the interim trust list froze Jan 2026) until an identity or an organization's own CA vouches for it, and the stack is pilot-stage and unaudited, so 75. Penpot: 50 via the official Lolly Export plugin - the same on-device engine signing Lolly uses, opt-in rather than default (and disclosed plainly: it is Lolly's own plugin). No evidence of C2PA writing in Canva, Figma, render APIs or DAM as of Aug 2026. Cloudinary: 50 - signs images on delivery (fl_c2pa, CAI member since 2020), attesting delivery by Cloudinary rather than creation by you. |
75 | 50 | 0 | 75 | 0 | 50 | 0 | 0 |
CLI, pipeline & AI-agent automationLolly: CLI, TUI, MCP server, URL mode - one engine everywhere. Render APIs: API-first, webhooks, integrations - account- and cloud-gated, so 75 under the method rule. Penpot: open API, plugins, official MCP server. Canva: Connect API - Enterprise-gated, async, rate-limited. Adobe: UXP/ExtendScript plus Firefly APIs. Figma: strong REST/plugin API, no render pipeline. DAM: asset-management APIs. Cloudinary: API-first media pipeline - account-gated, 75. |
100 | 75 | 50 | 50 | 50 | 75 | 50 | 75 |
Live collaboration (real-time co-editing)The capability that trades most directly against offline. Figma: the scale benchmark - 200 simultaneous editors, up to 500 people in a file - account and cloud required. Canva: mature real-time editing across the product, same precondition. Penpot: real-time multiplayer with live cursors; self-hosting lifts the vendor-account precondition, but a server is still required. Lolly: pairwise P2P shipped - an invite/accept ceremony (QR, link or code), LAN-first, zero server, no account, works fully air-gapped - no large rooms, so Partial; the only column that collaborates with no internet at all. Adobe: Live Co-Editing in beta, cloud documents only. Render APIs: no editing surface. DAM: comments and approvals, not canvas co-editing. Cloudinary: DAM comments and workflows, no canvas co-editing. |
50 | 75 | 75 | 25 | 25 | 25 | 75 | 0 |
No design skill requiredCanva: the category benchmark for ease. DAM: fill a locked template. Lolly: fill in fields - but someone technical must author tools first (the cold-start cost sits with builders, not producers). Render APIs: swaps design skill for developer skill. Adobe, Figma, Penpot: professional tools. Cloudinary: the media library is easy; transformations are developer territory. |
100 | 25 | 100 | 25 | 100 | 50 | 25 | 50 |
Open source, self-hosted, no lock-inPenpot: MPL-licensed, 51k+ stars, self-host via Docker/K8s - fully verifiable today. Lolly: MPL-2.0, the repository is public (github.com/lolly-tools/lolly), OBS builds, no contributor agreement - and it is young: months in public, no external audit, a community still forming, with SUSE maintaining it as a user of its own systems. 75 while youth is the honest deduction. Everything else is proprietary SaaS or proprietary desktop. |
75 | 100 | 0 | 0 | 0 | 0 | 0 | 0 |
Cost at production scaleLolly and Penpot: zero marginal cost on your own hardware. Render APIs: metered - roughly $0.005–0.049 per image, credits often expiring monthly. Canva/Figma: per-seat; Canva's automation needs Enterprise, though Affinity itself is free since Oct 2025. Adobe: premium per-seat suite. DAM: sales-led enterprise quotes, MAU or seat models. Cloudinary: credit-metered across transforms, storage and bandwidth - 25. |
100 | 100 | 50 | 25 | 25 | 25 | 50 | 25 |
Annual medium enterprise spendIndicative list-price arithmetic for a medium enterprise - think 500-5000 people - August 2026: a guess range, not a quote; deals vary and the seat mix dominates. Ring = how much of the board's largest annual spend (US$500k) you keep; the number in the ring is each range's upper bound. Canva (US$75k-400k; Affinity free since Oct 2025 pulls the design-seat share down), Adobe (US$100k-500k) and Figma (US$30k-250k) assume the realistic creative-seat share of an organisation this size - tens to hundreds of seats, not a licence for every employee. Render APIs price by usage (US$5k-60k). DAM is quote-only, commonly US$50k-250k and up. Penpot is hand-set at 99: "your server" can be your own laptop - a small technical hurdle at well under 1% of an Adobe-scale spend. Lolly: US$0 by licence - the apps ship free, run offline and keep working in perpetuity; works on devices immediately, config optional; hosting an instance is an organisation's choice, not a cost of entry. Cloudinary: US$30k-150k, credit-based; enterprise contracts commonly sit near US$82k. |
$0 | $0 | $400k | $500k | $250k+ | $150k | $250k | $60k |
آج کے تخلیقی ٹولز میں صلاحیت کی مکملیت، اگست 2026 میں تحقیق شدہ۔ اسکورنگ: 0 غیر موجود، 25 حل جیسا معیار، 50 حقیقی لیکن محدود یا جزوی، 75 مضبوط لیکن احتیاط کے ساتھ، 100 بنیادی مہارت۔
signed by Lollypositioning-comparison.htmlHTMLAI generatedgenerated by Claudeخود جانچیںGet the signed filepixels, not shapes38 KBفرق واضح ہے: آج کوئی بھی شپ ہونے والی چیز ہمیں پابندی-پہلے، آف لائن-قابل، کم-مہارت، اندرونی طور پر قابلِ رسائی آؤٹ پٹ نہیں دیتی۔ Lolly میں ایک کھلا کینوس بھی شامل ہے - Design - جہاں رنگ، ٹائپ اور اثاثے برانڈ گلوبلز کے مطابق ہوتے ہیں، تو آزاد ترتیب پابندی-پہلے رہتی ہے۔ یہ جو نہیں ہے وہ ایک غیر محدود ڈیزائن سوٹ ہے: ڈیزائنرز مخصوص فلیگ شپ کام کے لیے Illustrator اور Figma استعمال کرتے رہتے ہیں۔ اس ٹول سے ترتیبات جمع کی جا سکتی ہیں۔
signed by Lollyvector SVGخود جانچیںGet the signed file281 paths~38k nodes443 groups6 images2,269 KB
signed by Lollyvector SVGخود جانچیںGet the signed file281 paths~38k nodes443 groups6 images2,270 KB
اس کے لیے استعمال کریں: آپریشنلائزڈ تخلیقی اثاثوں کی تیز تخلیق - ایونٹ ٹائلز، نام بیجز، دستخط، CVE الرٹس، QR کوڈز، سوشل کارڈز، کنسائنمنٹ لیبلز، منظم رپورٹس۔
اس کے لیے استعمال نہ کریں: مخصوص ہیرو مواد۔
ایک مہم کی زندگی کا سفر
یہ دیکھنے کا سب سے واضح طریقہ کہ Lolly کیا ہے وہ خصوصیات کی فہرست نہیں ہے - یہ ہے کہ ایک واحد اثاثے کی پیروی کی جائے جیسے یہ ہاتھ سے ہاتھ گزرتا ہے۔ ایک لوکلائزڈ مہم کارڈ کو تنظیم کے ذریعے حرکت کرتے دیکھیں:
- تخلیق کار قواعد طے کرتا ہے۔ ایک ڈیزائنر بنیادی ٹیمپلیٹ Design ٹول میں تحریر کرتا ہے، برانڈ کی ٹائپوگرافی اور رنگ متغیرات کو ہارڈ-کوڈ کرتے ہوئے۔ وہ ایک کارڈ نہیں بنا رہے - وہ بنیادی کام ایک بار کر رہے ہیں تاکہ انہیں دوبارہ کبھی اسے دستی طور پر لوکلائز نہ کرنا پڑے۔
- ڈیولپر اسے پیمانہ دیتا ہے۔ وہی ٹیمپلیٹ CLI کے ذریعے ایک رات کی پائپ لائن میں تار دیا جاتا ہے، تاکہ ایک تازہ چارٹ یا ایک نئی زبان کا ورژن خودکار طور پر تخلیق ہو - کوئی ڈیزائنر فائل دوبارہ نہیں کھولتا۔
- پروڈیوسر بس اسے استعمال کرتا ہے۔ ایک سیلز نمائندہ، ہوائی جہاز میں آف لائن، وہی ٹول کھولتا ہے اور کلائنٹ میٹنگ کے لیے بالکل برانڈ کے مطابق ڈیک تخلیق کرتا ہے۔ کوئی ڈیزائن مہارت نہیں، کوئی نیٹ ورک نہیں، کوئی انتظار نہیں۔
مرحلہ دو میں "تازہ چارٹ" اسی طرح کا ایک رینڈر ہے، جو ایک ڈیٹا اسٹرنگ اور چند پیرامیٹرز سے تیار کیا گیا ہے بغیر کسی کے ڈیزائن فائل کھولے:
signed by Lollyvector SVGخود جانچیںGet the signed file15 paths~1.3k nodes4 groups21 KB
signed by Lollyvector SVGخود جانچیںGet the signed file15 paths~1.3k nodes4 groups21 KB
نکتہ یہ نہیں ہے کہ Lolly ڈیزائنرز کے لیے اچھا ہے اور ڈیولپرز کے لیے اچھا ہے اور سیلز کے لیے اچھا ہے، ہر ایک الگ الگ۔ یہ ایک ریلے ریس ہے: تخلیق کار کا ابتدائی کام ڈیولپر کے ذریعے پیمانہ بنایا جاتا ہے، جو بدلے میں پروڈیوسر کو بااختیار بناتا ہے۔ ہوائی جہاز میں غیر تکنیکی نمائندے کے لیے بے تکلف تجربہ صرف اس لیے ممکن ہے کیونکہ ڈیزائنر نے سختی طے کی اور ڈیولپر نے اسے تعینات کیا۔
یہی طاقت کا ضارب ہے۔ Lolly الگ کرداروں کے لیے الگ ٹولز کی دراز نہیں ہے - یہ ایک ڈیٹرمنسٹک اثاثہ زندگی کا سفر ہے جسے ہر کردار چھوتا ہے، اور جس ہاتھ سے یہ گزرتا ہے وہ پچھلے کی قدر کو ضرب دیتا ہے۔
ایک منظوری، دس ہزار اثاثے
چونکہ منظوری ٹول میں رہتی ہے فائل میں نہیں (دیکھیں Lolly کیسے موازنہ کرتا ہے)، پیمانہ ایک جائزے کا مسئلہ نہیں رہتا۔ ایک لوکلائزڈ سوشل-کارڈ ٹول کو ایک بار منظور کریں، پھر ایک اسپریڈشیٹ سے 12 زبانوں میں 10,000 اثاثے تخلیق کریں - اور ان میں سے کسی کو بھی قانونی یا برانڈ سے تازہ تعمیل چیک کی ضرورت نہیں، کیونکہ وہ ٹیمپلیٹ جس سے وہ سب آتے ہیں پہلے ہی منظور کیا جا چکا تھا۔
وہی ڈیٹرمنسٹک ٹول تین طریقوں سے اس پیمانے تک پہنچتا ہے، سب یکساں، پہلے سے منظور شدہ آؤٹ پٹ تیار کرتے ہوئے:
- ایک شخص، ایپ میں۔
/proبیچ گرڈ: قطاریں پیسٹ یا درآمد کریں، ہر قطار کے لیے ایک مکمل اثاثہ حاصل کریں، زپ ڈاؤن لوڈ کریں۔ کوئی ڈیزائن مہارت نہیں، کوئی ٹکٹ نہیں، کوئی انتظار نہیں۔ - ایک ڈیولپر، کمانڈ لائن سے۔ CLI وہی انجن اور وہی رینڈر پاتھ ہیڈ لیس چلاتا ہے، تو ٹول کو ایک اسکرپٹ یا رات کی پائپ لائن میں تمام 10,000 قطاروں پر ترتیب دیا جا سکتا ہے۔ ایک لوپ میں
lolly <tool> --field=…کال پوری انٹیگریشن ہے۔ - ایک سسٹم یا AI ایجنٹ، MCP کے ذریعے۔ وہی ٹول پروگرام کے ذریعے چلایا گیا، اسی وفاداری اور یہاں تک کہ زیادہ پیمانے پر - کیونکہ ایک مشین بور نہیں ہو گی جبکہ ہزاروں فائلیں آتی رہیں گی۔
signed by Lollyvector SVGخود جانچیںGet the signed file348 paths~77k nodes537 groups7 images3,100 KB
signed by Lollyvector SVGخود جانچیںGet the signed file348 paths~77k nodes544 groups7 images3,103 KB
برانڈ پابندیوں کا ایک سیٹ، ایک ڈیزائنر نے ایک بار طے کیا؛ یکساں پہلے سے منظور شدہ آؤٹ پٹ کے تین راستے - اور مشین کا راستہ سب سے زیادہ آگے تک پیمانہ بناتا ہے، کیونکہ یہ کبھی نہیں تھکتا جبکہ فائلیں آتی رہتی ہیں۔
بڑی تصویر: پرتیں کیسے فٹ ہوتی ہیں
یہاں سے نیچے سب کچھ آرکیٹیکچر ہے۔ خاکہ پورے سسٹم کو ایک نظر میں دکھاتا ہے: ٹولز اوپر ڈیٹا ہیں، درمیان میں انجن کسی پلیٹ فارم کے بارے میں کچھ نہیں جانتا، اس کے نیچے شیلز ایک معاہدہ نافذ کرتے ہیں، اور کیٹلاگز مواد فراہم کرتے ہیں۔
┌─────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────┘
ریپوزٹری لے آؤٹ
مواد پیکس کے طور پر ماؤنٹ کیا جاتا ہے: community/، docs/، ہر shells/، دونوں services/ اور brands/suse ہر ایک اپنی الگ ریپوزٹری ہیں، اس ایک کے git سب موڈیولز کے طور پر چیک آؤٹ کی گئی ہیں۔ پیرنٹ engine/، schemas/، scripts/، tests/، api/، brands/lolly-start/ اور profiles.json کا مالک ہے۔ دیکھیں بلڈ گائیڈ » سورس حاصل کرنا چیک آؤٹ کمانڈ اور کراس-ریپو ورک فلو کے لیے۔
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 # type re-export of the @lolly-tools/core 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).
│ # A SELECTION follows - the mounted set depends on the profile.
│ ├── qr-code/
│ ├── quotes/
│ ├── email-signature/
│ ├── snippet/
│ ├── 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)
│ ├── chart-creator/ # SVG charts from structured data
│ ├── filter/ # photo effects in one tool - halftone/scanline/posterize/voronoi (vector), duotone/pixel-stretch/imperfections (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)
│ ├── design/ # "Design" - 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
│ ├── icon/ # favicon .ico / png / svg from text + colours
│ ├── 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) - بنیادی تقسیم
ایک SUSE-کنٹرول شدہ URL پر ہوسٹ کیا گیا۔ سروس ورکر کے ٹولز اور اثاثوں کو کیش کر لینے کے بعد آف لائن کام کرتا ہے۔ یہاں زیادہ تر ملازمین، وینڈرز اور شراکت دار پلیٹ فارم استعمال کریں گے۔ کسی اکاؤنٹ کی ضرورت نہیں - حالت فی ڈیوائس IndexedDB میں محفوظ ہوتی ہے۔
ویب شیل ایک لے آؤٹ سے ریسپانسیو ہے۔ ڈیسک ٹاپ پر ایک ٹول ٹریک پیڈ-مقامی کینوس نیویگیشن (کرسر کے گرد زوم کے لیے Cmd/Ctrl-وہیل یا پنچ، پین کے لیے اسپیس- یا مڈل-ڈریگ، 0/1/+/− کیز اور ایک Fit/% HUD) کے ساتھ پیش نظارہ اسٹیج کے ساتھ ایک قابلِ ری سائز کنٹرولز سائیڈبار ہے۔ موبائل (≤640px) پر کنٹرولز ایک ٹاپ-اینکرڈ شیٹ بن جاتے ہیں جس میں ایک ڈریگ گرِپ peek/half/full پر اسنیپ کرتی ہے (ٹیپ ٹوگل کرتا ہے) ایک جامد فل-اسکرین پیش نظارے کے اوپر، اور ایک فلوٹنگ Render بٹن ایک نیچے کی شیٹ پاپ اپ میں Export کنٹرولز کھولتا ہے۔ موبائل پر پیش نظارے پر پنچ-زوم اور ڈریگ-پین ملتا ہے۔ رینڈر پاتھ اور ایکسپورٹ کنٹرولز دونوں میں یکساں ہیں - صرف کروم دوبارہ بہتا ہے۔
signed by Lollyvector SVGخود جانچیںGet the signed file5 paths989 nodes11 groups14 KB
signed by Lollyvector SVGخود جانچیںGet the signed file5 paths989 nodes11 groups14 KB
فون کی چوڑائی پر وہی ٹول، بغیر کسی دوسرے لے آؤٹ کو برقرار رکھے: کنٹرولز اوپر ایک شیٹ بن جاتے ہیں، پیش نظارہ پوری اسکرین پر ہوتا ہے اور رینڈر پِل اس کے اوپر تیرتی ہے۔
signed by Lollyvector SVGخود جانچیںGet the signed file47 paths~1.9k nodes84 groups1 image212 KB
signed by Lollyvector SVGخود جانچیںGet the signed file47 paths~1.9k nodes84 groups1 image211 KB
بیچ موڈ (/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 + text/data) کے لیے CLI کے نفاذ کو دوبارہ استعمال کرتا ہے، اور ~/.lolly کے تحت ڈسک پر موجود اسٹیٹ کے ساتھ ایک اختیاری ان لائن پیش نظارہ بھی شامل کرتا ہے۔ اس کے علاوہ اس کے پاس ایک براؤزر رینڈر ٹیئر بھی ہے: ایک محدود دائرہ کار کا ہیڈ لیس Chromium (وہی جو MCP سرور انسٹال کرتا ہے) جو مانگ پر raster/PDF/ویڈیو اور لائیو-URL کیپچر تیار کرتا ہے - یہ ویب شیل کی ایک بنی ہوئی کاپی چلاتا ہے تاکہ آؤٹ پٹ یکساں رہے، اور صرف اس وقت شروع ہوتا ہے جب آپ پہلی بار ایسا فارمیٹ ایکسپورٹ کریں۔ اس طرح url-shot (crop + recolor + vector PDF/SVG کے ساتھ) اور ہر raster/pdf ٹول بھی ٹرمینل میں چلتا ہے۔ TUI رہنما دیکھیں۔
آپ چاہے کسی بھی سطح پر ہوں، ڈیش بورڈ کا Capabilities ٹیب اس بات کا مکمل نقشہ ہے کہ پلیٹ فارم کیا کچھ کر سکنے کا اعلان کرتا ہے، جو گروپ شدہ اور کسی بھی ٹول کو کھولے بغیر پڑھنے کے قابل ہے۔
ٹول کیٹیگریز
گیلری گروپنگ کے لیے ٹولز کو ان کے مینی فیسٹ میں ایک category سے ٹیگ کیا جاتا ہے۔
قطاریں گیلری سیکشن کی ترتیب میں درج ہوتی ہیں۔ utility سیکشن گیلری میں ہمیشہ آخر میں رینڈر ہوتا ہے (ہر دوسری کیٹیگری کے بعد، بشمول مستقبل کی کیٹیگریز) - یہ آن-ڈیوائس "Offline Utilities" دراز ہے۔
| قسم | مثالیں | منصوبہ بند |
|---|---|---|
everyone | QR Code Generator, Quote Card, Email Signature, Logo, Wordmark, Audiogram, Battlecards, Sequence Studio, Record | Employee Image Stationery |
designer | Brand Lockup, Design, Chart, Darkroom, Filter, Pose Geeko, Multi-Page PDF | Font Outliner |
event | Meeting Planner, Event Name Badge, Wayfinding Signage, Calendar ICS, Booth Studio | Event Stationery, Bulk Name Badges, Room Agenda Cards |
product | - | CVE Alert, Product Release Announcement, Blog OG Image |
utility | Strip Hidden Data, Text Helper, Compress PDF, Convert Image, Convert Font, Redact, Run Web Code, Screen Capture, URL Screenshot | Unit/format converters, more on-device privacy utilities |
یہ خانے مثالیں ہیں، مکمل فہرست نہیں۔ کون سے ٹولز موجود ہیں یہ اس پروفائل کی خاصیت ہے جو آپ نے ماؤنٹ کیا ہے، اس صفحے کی نہیں: ایک برانڈ پیک اپنے ٹولز شامل کرتا ہے، اور کسی کمیونٹی ٹول کو خارج بھی کر سکتا ہے جسے وہ شپ نہ کرنا چاہے۔ catalog/tools/index.json - جو مینی فیسٹس سے تیار ہوتی ہے اور وہ رجسٹری ہے جسے گیلری واقعی پڑھتی ہے - مستند فہرست ہے؛ کوئی پروفائل کیا ماؤنٹ کرتا ہے یہ گننے کے لیے، یہاں لکھے کسی عدد پر بھروسہ کرنے کے بجائے مینی فیسٹس گنیں (ls community//tool.json brands//tools/*/tool.json)۔ (اگر کوئی ٹول id دو پیکس میں موجود ہو تو یہ صرف ایک بار، جیتنے والے پیک سے ماؤنٹ ہوتا ہے۔)
ٹولز کو حیثیت (status) کے لحاظ سے بھی درجہ بندی کیا جاتا ہے: official (برانڈ سے منظور شدہ، بغیر واٹرمارک کے)، community (بیرونی تعاون)، experimental (واٹرمارک شدہ ایکسپورٹس)۔ لائبریری کا بیشتر حصہ official ہے؛ نئے اسٹوڈیوز اور کیپچر ٹولز مستحکم ہونے تک عموماً community یا experimental میں رہتے ہیں۔ ہر سطح بیج دکھاتی ہے، تاکہ قاری کھولنے سے پہلے جان لے کہ وہ کیا لے رہا ہے - اور، اوپر دیے گئے کیٹیگری خانوں کی طرح، فی-حیثیت رکنیت اتنی تیزی سے بدلتی ہے کہ یہاں شمار کرنا ممکن نہیں۔ اسے گیلری یا تیار شدہ انڈیکس سے پڑھیں۔
Design پہلا ٹول ہے جو render.layout: "editor" فری کینوس موڈ پر بنایا گیا ہے - ایک کروم لیس، براہ راست ہیرا پھیری کی سطح جہاں آپ متن، اشکال اور تصاویر کے باکسز کو گھسیٹ، سائز تبدیل، گھما اور اسنیپ کر سکتے ہیں، اور پھر ہر دوسرے ٹول کی طرح اسی رینڈر پاتھ کے ذریعے ایکسپورٹ کر سکتے ہیں۔
Strip Hidden Data پہلی آن-ڈیوائس یوٹیلیٹی ہے (privacy: "on-device"): ایک مواد-تبدیل کرنے والا ٹول جو آپ کی فراہم کردہ فائل لیتا ہے، اسے مکمل طور پر براؤزر میں پراسیس کرتا ہے اور ایک صاف کاپی واپس دیتا ہے - نہ کبھی اپ لوڈ کی جاتی ہے، نہ واٹرمارک لگتا ہے، نہ کوئی پروونینس اسٹیمپ لگتا ہے۔ Text Helper دوسری ہے - روزمرہ کی پیسٹ-اِنٹو-ویب سائٹ کے کاموں (JSON format، JWT decode، Base64، URL encode/decode، SHA hashing) کے لیے ایک آن-ڈیوائس ورک بینچ۔ Compress PDF تیسری ہے - یہ PDF کی تصاویر کو دوبارہ کمپریس کر کے اسے چھوٹا کرتی ہے، وہ بھی مکمل طور پر آن-ڈیوائس۔ یہ نشان اور اس کا بیج متن "Runs on your device - nothing is uploaded" (آپ کے ڈیوائس پر چلتا ہے - کچھ بھی اپ لوڈ نہیں ہوتا) اب پورے ٹرانسفارم سیٹ کا احاطہ کرتا ہے: Strip Hidden Data، Text Helper، Compress PDF، Convert Image (HEIC/TIFF/AVIF → WebP/JPG/PNG)، Convert Font، Redact (کسی تصویر، SVG یا PDF کے حصوں کو مٹانا)، Prompt to Image اور Rebrand a Deck (جہاں پروفائل اسے ماؤنٹ کرے، .pptx کو اسی جگہ ری-تھیم کرنا)۔ یہ ایک پرائیویسی-یوٹیلیٹی کیٹیگری ہے جو خفیہ فائلیں سنگل-پرپز ویب سائٹس کے حوالے کرنے کی جگہ لیتی ہے۔
signed by Lollyvector SVGخود جانچیںGet the signed file154 paths~40k nodes234 groups802 KB
signed by Lollyvector SVGخود جانچیںGet the signed file154 paths~40k nodes234 groups803 KB
نوٹ:
categoryاورstatusکو ہرtool.jsonسےcatalog/tools/index.json(وہ رجسٹری جسے گیلری پڑھتی ہے) میں ڈی نارملائز کیا جاتا ہے۔ مینی فیسٹ ہی ماخذِ حق ہے - انڈیکسnpm run build:catalogکے ذریعے تیار ہوتی ہے اور اگر کمٹ شدہ انڈیکس مینی فیسٹس سے مختلف ہو جائے توnpm run validate:catalogCI کو ناکام کر دیتا ہے۔
آرکیٹیکچرل وعدے
یہ فیصلے طے شدہ ہیں۔ ان میں سے کسی کو تبدیل کرنا ایک بڑا کام ہے - یہ کوڈ بیس میں ہر دوسرے فیصلے کو تشکیل دیتے ہیں۔
1۔ اعلانیہ ٹولز، ایک امری فرار کے راستے کے ساتھ
ایک ٹول ایک مینی فیسٹ (tool.json) + ایک ٹیمپلیٹ (template.html) + اختیاری hooks.js پر مشتمل ہوتا ہے۔
مینی فیسٹ ان پٹس کا اعلان کرتا ہے۔ ٹیمپلیٹ نہیں۔ ان پٹس کا اندازہ Handlebars ٹوکنز سے نہیں لگایا جاتا۔ مینی فیسٹ ہی معاہدہ ہے؛ ٹیمپلیٹ {{id}} کے ذریعے نام شدہ ویری ایبلز استعمال کرتا ہے۔
signed by Lollyvector SVGخود جانچیںGet the signed file39 paths~3.4k nodes70 groups2 images50 KB
signed by Lollyvector SVGخود جانچیںGet the signed file39 paths~3.4k nodes70 groups2 images50 KB
Hooks اختیاری ہیں۔ زیادہ تر ٹولز خالص اعلانیہ ہوتے ہیں - مینی فیسٹ + ٹیمپلیٹ کافی ہے۔ جن ٹولز کو محسوب شدہ اقدار کی ضرورت ہو (QR encoding، چارٹ ڈیٹا کی تشکیل) وہ hooks.js فراہم کرتے ہیں جو نام شدہ لائف سائیکل فنکشنز ظاہر کرتا ہے (onInit، onInput، onFrame - موشن-ری ایکٹو ٹولز کے لیے فی-فریم لائیو کیمرہ ہک - onLevel، beforeExport، afterExport، exportFile - وہ فائل-اِن/فائل-آؤٹ ٹرانسفارم پاتھ جو Strip Hidden Data جیسی آن-ڈیوائس یوٹیلیٹیز استعمال کرتی ہیں - اور exportStill، اس ٹول کے لیے جو اپنا خود کا ڈیپ raster رکھتا ہو)۔ ہوسٹ ہکس کو new Function('host', …) کے ذریعے لوڈ کرتا ہے، جس میں کیپبیلٹی برج کلوژر اسکوپ کے طور پر شامل کیا جاتا ہے۔ یہ ایک پورٹیبلٹی معاہدہ ہے، سیکیورٹی سینڈ باکس نہیں: ہکس اب بھی پیج ریلم میں چلتے ہیں اور براؤزر شیل میں window/fetch/document تک پہنچ سکتے ہیں - host. معاون، پورٹیبل سطح ہے، کوئی نافذ کردہ حد نہیں۔ اے سنک ہک نتائج کا وقت مقرر ہے (onInit 5s، onInput 2s، beforeExport/afterExport 5s، exportFile/exportStill 10s) اور دیر سے آنے والے نتائج رد کر دیے جاتے ہیں؛ ایک بے قابو سنکرونس* ہک کو روکا نہیں جا سکتا۔ اسی لیے غیر معتبر تھرڈ پارٹی ہک کوڈ کو Worker isolation آنے تک چلانا محفوظ نہیں ہے۔
یہ اس لیے اہم ہے کہ: اعلانیہ ٹولز غیر ڈویلپرز بھی تخلیق کر سکتے ہیں۔ اگر ہر ٹول ایک ویب ایپ ہوتا، تو خطرے کا نوٹ "ورک ہارس ٹیمپلیٹس بنانے/برقرار رکھنے کی محدود مہارتیں" ایک مستقل رکاوٹ بن جاتا۔
2۔ ٹولز اور اثاثے ڈیٹا ہیں، بنڈل شدہ کوڈ نہیں
ویب اور Tauri ایپس بوٹ کے وقت ایک معلوم URL سے ٹول اور اثاثہ کیٹلاگس حاصل کرتی ہیں، انہیں مقامی طور پر کیش کرتی ہیں اور جو کچھ بھی وہاں موجود ہو اس پر کام کرتی ہیں۔ نیا ایونٹ ٹائل یا موسمی اثاثہ شامل کرنے کے لیے ایپ ریلیز کی ضرورت نہیں ہوتی۔
اثاثے کے بائٹس کو CDN پوائزننگ سے بچانے کے لیے SHA-256 چیک سم کیا جاتا ہے۔ اثاثے کی id + version کیش انویلیڈیشن چلاتی ہے۔
3۔ کیپبیلٹی برج واحد API ہے جو ٹولز دیکھتے ہیں
ٹولز اپنے ٹیمپلیٹ ایریا سے باہر کبھی DOM کو نہیں چھوتے، کبھی براہ راست fetch کو کال نہیں کرتے، کبھی فائل سسٹم نہیں پڑھتے۔ وہ ورژن شدہ host.* میتھڈز کو کال کرتے ہیں۔ معاہدے کی معیاری تعریف packages/core/src/host-v1.ts میں ہے - ٹول-مصنف SDK @lolly-tools/core، تاکہ کوئی تھرڈ پارٹی انجن پر انحصار کیے بغیر اس پر تعمیر کر سکے؛ 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.recorder (ریکارڈنگ ٹولز کے لیے مائیک/کیمرہ/ڈسپلے کیپچر - microphone / camera / screen)۔ باقی فیچر-ڈیٹیکٹڈ ہیں - جب بھی شیل انہیں فراہم کر سکے موجود ہوتی ہیں، اور ٹول ان شیلز کے لیے ایک فال بیک رکھتا ہے جو ایسا نہیں کر سکتیں۔
یہ ظاہر کرنے کے لیے کہ اس کا احاطہ کیا ہے، چند نمایاں سطحیں - Host API ہر ایک کو دستاویزی شکل دیتا ہے، اور packages/core/src/host-v1.ts خود معاہدہ ہے:
| سطح (Surface) | کب سے | یہ کیا شامل کرتا ہے |
|---|---|---|
host.tokens | 1.0 | DTCG ڈیزائن ٹوکنز - برانڈ کے اپنے primitives |
host.text | 1.0 | HarfBuzz WASM کے ذریعے text-to-path (wasm capability فلیگ ان tools کو نشان زد کرتا ہے جو اس پر انحصار کرتے ہیں) |
host.media | 1.4 | onFrame ہک کو چلانے والے لائیو کیمرہ فریمز۔ Progressive enhancement، جان بوجھ کر camera فلیگ سے مشروط نہیں - ایسا tool بدستور ایک عام still-image tool کے طور پر کام کرتا ہے |
host.color | 1.40 | Perceptual رنگ ریاضی: ΔEOK، WCAG + APCA تضاد، OKLab ramps، class-breaks، categorical palettes، harmony schemes (1.60)، CSS Color 4 mixing اور gradient baking (1.68)۔ خالص اور synchronous - shells کچھ بھی خود نافذ کرنے کے بجائے engine کا اپنا makeColorApi() منسلک کرتی ہیں، اس لیے یہ ہرگز مختلف نہیں ہو سکتا |
host.images | 1.60 | آلے پر bytes کو decode / resize / re-encode کرنا - convert راستہ (HEIC → JPEG، WebP میں compress، downscale)۔ ویب shell میں ایک lazy facade کے طور پر شپ کیا گیا، اس لیے HEIC decoder کبھی boot chunk میں داخل نہیں ہوتا |
host.geom | 1.64 | درست vector جیومیٹری: path booleans، offsetting، stroke-to-fill، spline lowering، simplification، hit testing۔ یہ بھی خالص، synchronous اور engine سے منسلک ہے (makeGeomApi())؛ ناکامیاں واپس کی جاتی ہیں، کبھی throw نہیں کی جاتیں |
باقی سب انہی اصولوں کی پیروی کرتے ہیں اور انہی کے ساتھ دستاویزی ہیں: آن-ڈیوائس دستاویز سرجری کے لیے pdf (1.8) اور pptx (1.58)، کلپ تجزیے اور آن-ڈیوائس TTS/ٹرانسکرپشن کے لیے audio (1.71) اور speech (1.96)، MilkDrop پلیس ہولڈر معاہدے کے لیے viz (1.72)، ڈیپ-بٹ اور لیئرڈ-بٹ میپ آؤٹ پٹ کے لیے codec (1.100) اور layers (1.102)، آن-ڈیوائس ماڈلز کے لیے upscale (1.101) اور matte (1.103)، اپنا خود کا پکسل کام کرنے والے ہکس کے لیے raster (1.105)، ایکسپورٹ-سیف تیروں کے لیے connectors (1.106) اور مکمل شدہ بائٹس پر دستخط کرنے کے لیے c2pa (1.85)۔ گنتی بڑھتی ہے؛ اصول نہیں بدلتے۔
قابلِ اعلان کیپبیلٹیز یہ ہیں: network، filesystem، clipboard، camera، microphone، screen، ffmpeg، wasm، capture، compose۔ (screen، جو 1.54 میں شامل کی گئی، host.recorder کے ذریعے ڈسپلے کیپچر ہے - صارف براؤزر-نیٹو UI میں ایک اسکرین/ونڈو/ٹیب منتخب کرتا ہے؛ یہ capture سے مختلف ہے، جو خود ٹول کے بتائے ہوئے URL کو ریسٹرائز کرتا ہے۔)
وہی ٹول براؤزر، Tauri اور ہیڈ لیس CLI میں چلتا ہے کیونکہ ہر شیل اس انٹرفیس کو نافذ کرتی ہے - ٹول کو کبھی معلوم نہیں ہوتا کہ وہ کس میں چل رہا ہے۔
برج ورژن شدہ ہے۔ میتھڈز شامل کرنا ایک مائنر ورژن ہے۔ ہٹانا یا سگنیچرز بدلنا ایک میجر ورژن بمپ ہے۔ جب v2 شپ ہوتا ہے، v1 کا کام کرتے رہنا لازمی ہے۔
4۔ اثاثہ IDs ہمیشہ کے لیے ہیں
suse/logo/primary ایک معاہدہ ہے۔ ایک بار شائع ہو جانے کے بعد:
- ID کبھی نہیں بدلتی، کبھی دوبارہ استعمال نہیں ہوتی۔
- بائٹ تبدیلیاں → مینی فیسٹ میں
versionبڑھائیں۔ - کسی نئے اثاثے سے تبدیل ہو جائے →
deprecated: trueسیٹ کریں اور اختیاری طور پرreplacedBy۔ - موجودہ حوالہ جات ہمیشہ حل ہوتے ہیں۔
یہ محفوظ شدہ ٹول اسٹیٹس اور URL کے ذریعے شیئر کیے گئے لنکس کو برسوں تک پائیدار بناتا ہے۔
5۔ URL موڈ فرسٹ-کلاس ہے
ہر ان پٹ کو URL پیرامیٹر کے طور پر ظاہر کیا جا سکنا چاہیے:
lolly.tools/#/tool/qr-code?url=https://suse.com&ecl=H
signed by Lollyvector SVGخود جانچیںGet the signed file17 paths~2.0k nodes39 groups24 KB
signed by Lollyvector SVGخود جانچیںGet the signed file17 paths~2.0k nodes39 groups24 KB
CLI موڈ ایک مختلف ٹرانسپورٹ کے تحت URL موڈ ہے - CLI شیل argv سے ایک URL-اسٹیٹ آبجیکٹ بناتا ہے اور وہی انجن پائپ لائن چلاتا ہے۔ صرف ایک رینڈر پاتھ موجود ہے۔ CLI GUI سے ڈرفٹ نہیں کر سکتا کیونکہ یہ کوئی الگ نفاذ نہیں ہے۔
url-mode.ts راؤنڈ ٹرپ (پارس اور سیریلائز) کو سنبھالتا ہے۔ محفوظ شدہ پیرامیٹرز کا ایک سیٹ کبھی ٹول کو بطور ان پٹس فارورڈ نہیں کیا جاتا: آؤٹ پٹ کنٹرولز (format، export، copy، filename، width/w، height/h، unit، dpi)، پرنٹ اور پروونینس ڈائلز (bleed، marks، profile، password، c2pa، imprint، durable، meta، hdr، depth، cuts) اور اسٹیٹ کیریئرز (template، z - وہ "Shortest link" پیک شدہ ٹوکن - اور zx، وہی پاس ورڈ کے تحت خفیہ کاری شدہ)۔ engine/src/url-mode.ts میں RESERVED سیٹ مستند ہے اور ایک ٹیسٹ کے ذریعے پن کیا گیا ہے؛ URL Mode ان سب کو دستاویزی شکل دیتا ہے، بشمول وہ چند جو یہاں درج نہیں ہیں۔ URL موڈ میں اثاثے کے ان پٹس ان کی id کے ذریعے سیریلائز ہوتے ہیں؛ رن ٹائم انہیں ہائیڈریشن سے پہلے host.assets.get() کے ذریعے حل کرتا ہے۔ width/height کی قدریں unit میں ہوتی ہیں (ڈیفالٹ px، نیز mm/cm/in/pt/pc)؛ کسی طبعی یونٹ کے ساتھ dpi ریسٹر ریزولوشن سیٹ کرتا ہے۔ یہ کینوس دستاویز کا سائز طے کرتے ہیں اور ایکسپورٹ ڈائمینشنز پینل کو پہلے سے بھر دیتے ہیں۔
چونکہ ہر ان پٹ لنک میں سفر کرتا ہے، ایک پیرامیٹر کی تبدیلی ایک مختلف مکمل شدہ اثاثہ بنا دیتی ہے۔ یہ پورا پیلیٹ ایک سیڈ رنگ، ایک ہارمونی اور ایک اسٹیپ کاؤنٹ ہے:
signed by Lollyvector SVGخود جانچیںGet the signed file10 groups24 KB
signed by Lollyvector SVGخود جانچیںGet the signed file10 groups24 KB
6۔ اسٹوریج براہ راست نہیں بلکہ برج کے ذریعے ہوتی ہے
ویب شیل: IndexedDB۔ Tauri: فائل سسٹم۔ CLI: ان میموری۔ ٹولز صرف host.state.save(slot, data) اور host.state.load(slot) دیکھتے ہیں۔ localStorage استعمال نہیں ہوتا - یہ بہت چھوٹا ہے اور blobs کو محفوظ نہیں کر سکتا۔
صارفین ہر ٹول کے لیے متعدد نام شدہ ایڈٹ سلاٹ محفوظ کر سکتے ہیں اور بعد میں ہر سیشن پر واپس آ سکتے ہیں۔ کسی اکاؤنٹ کی تخلیق ضروری نہیں؛ حالت فی ڈیوائس ہوتی ہے۔ چونکہ برج ہی واحد جوڑ ہے، اس لیے یہ فی ڈیوائس حالت پورٹیبل بھی ہے: shells/web/src/data-transfer.ts سب کچھ host.profile/host.state/host.assets کے ذریعے واپس پڑھ کر ایک واحد lolly-backup زپ میں ڈال دیتا ہے جو کسی بھی دوسری تنصیب پر امپورٹ ہو جاتا ہے - "نئی ڈیوائس پر منتقل ہونے" کا آف لائن جواب جسے کسی سرور کی ضرورت نہیں (مکمل تفصیل: docs/data-transfer.md)۔ SUSE ID انضمام (ملٹی ڈیوائس سنک) اس کے اوپر ایک مستقبل کا سنگ میل ہے۔
7۔ میچورٹی ٹیگز ڈیزائن کے ذریعے "برانڈ سے منظور شدہ" کے خطرے کا جواب دیتے ہیں
ہر ٹول اپنے مینی فیسٹ میں status: official | community | experimental بیان کرتا ہے۔ گیلری اسٹیٹس کے مطابق ترتیب دیتی ہے۔ تجرباتی (experimental) ٹولز اپنے ایکسپورٹس پر خودکار طور پر واٹرمارک لگاتے ہیں - واٹرمارک host.export.render کے ذریعے لگایا جاتا ہے، ٹول کے ذریعے نہیں، اس لیے کوئی غیر سرکاری ٹول مصنف اسے غیر فعال نہیں کر سکتا۔
یہ اس تاثراتی خطرے کا ساختی جواب ہے کہ کسی بھی ٹول کا استعمال برانڈ کی منظوری کو ظاہر کرتا ہے۔ عملی جوابات (ایک ریویو قطار، SUSE ID گیٹنگ) اس کے اوپر تہہ در تہہ آتے ہیں۔
8۔ ٹول ان پٹس مینی فیسٹ کے ذریعے ٹائپڈ ہوتے ہیں، بشمول اثاثہ جات (assets)
ان پٹس ایک type بیان کرتے ہیں: text، longtext، number، boolean، color، select، asset، date، time، datetime-local، url، blocks، vector، table اور file۔ ہوسٹ مینی فیسٹ سے ہر ٹائپ کے لیے ایک عمومی کنٹرول رینڈر کرتا ہے - ٹولز کوئی کنٹرول کوڈ نہیں لکھتے۔ (صارف کے پروفائل سے پیشگی بھرنا کوئی ٹائپ نہیں ہے - کوئی بھی ان پٹ bindToProfile رکھ سکتا ہے۔) تین باقیوں سے زیادہ اہم ہیں:
asset(بمعfilterاورallowUpload) عالمی اثاثہ نظام کا برج ہے؛allowUpload: falseبرانڈ کے نفاذ کا لیور ہے، مثلاً اسپانسرشپ ٹائل لوگوز کے لیے جہاں صرف لائبریری اثاثوں کی اجازت ہو۔ صارف کی اپ لوڈز وہیAssetRefشکل استعمال کرتی ہیں جو لائبریری اثاثے کرتے ہیں، اس لیے ٹولز انہیں یکساں طریقے سے ہینڈل کرتے ہیں۔blocksایک بار بار آنے والا فیلڈ گروپ ہے - ایک ان پٹ کے اندر ایک منی ٹیبل، جو سائیڈ پینل میں ایڈٹ ہوتا ہے، ایک ٹائپڈ/امتیازی ایڈ مینو اور فی بلاک اثاثہ فیلڈز کے ساتھ۔ کینوس پر رینڈر شدہ بلاک پر کلک کرنے سے اس بلاک کی قطار فوکس ہو جاتی ہے۔meeting-planner،chart-creator،event-name-badge،wayfinding-signage،color-blockاورdigi-adمیں استعمال ہوتا ہے۔vectorاعداد کے ایک مقررہ سیٹ (مثلاً ایک ٹرانسفارم) کو ایک مرکب کنٹرول میں گروپ کرتا ہے؛fileآن ڈیوائس ٹرانسفارم یوٹیلیٹیز (مثلاًstrip-dataاورcompress-pdf) کے لیے صارف کی اپنی فائل کو بائٹس کی صورت میموری میں رکھتا ہے۔
9۔ ٹیمپلیٹس منطق سے خالی ہیں (Handlebars، EJS نہیں)
Handlebars کو EJS پر جان بوجھ کر منتخب کیا گیا:
- منطق سے خالی۔ ٹیمپلیٹس غیر ڈیویلپرز کے ذریعے بھی تحریر کیے جا سکتے ہیں۔
- بذات خود محفوظ۔
{{x}}HTML-ایسکیپ کرتا ہے؛{{{x}}}رضاکارانہ خام (raw) ہے۔ - ٹیمپلیٹس میں کوئی من مانا JS نہ ہونے کا مطلب ہے کہ فی ٹیمپلیٹ XSS آڈٹ کی کوئی سطح نہیں۔
منطق hooks.js میں رہتی ہے جہاں یہ واضح اور جائزہ لینے کے قابل ہے۔ دستیاب Handlebars ہیلپرز: {{default}}، {{upper}}، {{lower}}، {{eq}}، {{markdown}}، {{asset ref}}، {{asset ref "property"}} (نیز ڈیٹا فارمیٹ ہیلپرز icsStamp/rfcText/csvCell جو ساتھی .ics/.vcf/.csv ٹیمپلیٹس میں استعمال ہوتے ہیں)۔
10۔ ٹولز ٹولز کو compose کرتے ہیں
ایک ٹول کسی دوسرے ٹول کے رینڈر کو کسی ٹول سے ٹول امپورٹ کے بغیر ایمبیڈ کر سکتا ہے - compose انجن کے ذریعے حل ہوتا ہے، کبھی ٹول کے کوڈ کے ذریعے نہیں۔ اس کی دو سطحیں ہیں:
- اعلانیہ مینی فیسٹ (Declarative manifest) -
composes: [{ id, tool, inputs, format?, width?, height? }]۔ انجن نامزد چائلڈ کو رینڈر کرتا ہے اور نتیجے کو منطق سے خالی ٹیمپلیٹ میں{{asset <id>}}کے طور پر رکھتا ہے۔event-name-badgeآجqr-codeکو ایک SVG کے طور پر compose کرتا ہے۔ - پورٹیبل ایمبیڈ یو آر ایل -
<img src="https://lolly.tools/tool/<id>.<ext>?<inputs>">۔ شیل اس چائلڈ کو مقامی طور پر رینڈر کرتا ہے (جب تک مقامی رینڈر حل نہ ہو ایک placeholder پکسل دکھتا ہے)؛lolly.toolsسے کبھی کچھ فیچ نہیں کیا جاتا۔
کسی بھی ٹول کے رینڈر کو compose کریں: ایک SVG چائلڈ سچا ویکٹر رہتا ہے جب پیرنٹ SVG یا PDF میں ایکسپورٹ کرے اور PNG کے لیے صاف طور پر ریسٹرائز ہوتا ہے؛ PNG/JPG/WEBP چائلڈز تصاویر کے طور پر ایمبیڈ ہوتے ہیں۔ اس کے لیے compose صلاحیت درکار ہے۔ compose شدہ چائلڈز درمیانی (intermediate) ہوتے ہیں - کبھی واٹرمارک یا پروونینس اسٹیمپ شدہ نہیں ہوتے - اور compose نرمی سے تنزل کرتا ہے: جو شیل کسی چائلڈ کو رینڈر نہیں کر سکتا وہ محض اس سلاٹ کو چھوڑ دیتا ہے اور پیرنٹ پھر بھی رینڈر ہوتا ہے۔
ہم نے واضح طور پر کیا نہیں کرنے کا انتخاب کیا
- کوئی EJS نہیں / ٹیمپلیٹس میں کوئی صوابدیدی JS نہیں۔ XSS کا دائرہ صفر ہے۔ منطق
hooks.jsمیں رہتی ہے۔ - کوئی لازمی اثاثہ CMS نہیں۔ افراد اپنی تخلیقی فائلیں براہِ راست ایپ کے اندر اپنے کیٹلاگ میں شامل کرتے ہیں (Catalogue ویو اور برانڈ اسٹوڈیو کے ذریعے) - نہ کوئی سرور، نہ ایڈمن کنسول۔ کام ایک سیشن کے طور پر آگے بڑھایا جاتا ہے: ایک شیئر لنک پوری حالت اپنے ساتھ رکھتا ہے، اور وہی سیشن بیک اپ یا کولیب سیشن کے ذریعے سفر کرتا ہے۔ ڈیپلائمنٹ کو کنٹرول کرنے والا کوئی بھی کسی شیئر شدہ سیشن کو ایک ٹیمپلیٹ کے طور پر مقفل کر سکتا ہے - لنک کھولیں، اُس کی اقدار کو برانڈ پیک میں اُس ٹول کی ڈائرکٹری میں ایک ٹیمپلیٹ اندراج کے طور پر ریکارڈ کریں اور کمٹ کریں - جس کے بعد یہ ٹول کے "New from template" چوزر میں ظاہر ہوتا ہے اور
?template=<id>کے طور پر ڈیپ لنک کے قابل ہوتا ہے۔ Git ڈیپلائمنٹ کے مالک کا مقفل کرنے کا مرحلہ ہے، تخلیق کار کا کبھی نہیں۔ مشترکہ، زیرِ نگرانی کیٹلاگ کے لیے، کوئی تنظیم اثاثہ ڈائرکٹری کو اُسی طرح منظم کر سکتی ہے اور PR جائزے کے ذریعے اپ ڈیٹس کو مشروط کر سکتی ہے - یہ ایک دستیاب گورننس ماڈل ہے، ایپ کی کوئی لازمی شرط نہیں۔ - کوئی جبری RBAC نہیں۔ اوپن ایپ بطور ڈیفالٹ عوامی رسائی کی حامل ہے؛ برانڈ رسک کو میچورٹی ٹیگز + واٹر مارکس کے ذریعے سنبھالا جاتا ہے۔ جو تنظیم زیادہ سخت کنٹرول چاہتی ہے وہ اپنی خود کی auth اور اوپر دیے گئے git-reviewed کیٹلاگ کو تہہ کے طور پر شامل کرتی ہے۔
- کوئی مرکزی ڈیٹا بیس نہیں۔ تمام یوزر اسٹیٹ فی آلہ ہے۔ SUSE ID انضمام روڈ میپ پر ہے مگر لانچ کی رکاوٹ نہیں۔
- کوئی مشترکہ tools/engine کوڈ پاتھ نہیں۔ انجن اوپن سورس ہے اور
community/کے برانڈ سے غیر متعلق ٹولز بھی؛ نجیbrands/suse/جیسا کوئی برانڈ پیک اپنے ٹولز اور کیٹلاگ اپنی شرائط کے تحت رکھتا ہے۔ ہر صورت میں یہ علیحدگی نافذ ہے (engine/سے ٹول کے مواد میں کوئی کراس اِمپورٹس نہیں) تاکہ تقسیم صاف رہے۔
لائف سائیکل، سرے سے سرے تک
ایک صارف lolly.tools/#/tool/qr-code?url=https://suse.com&ecl=H کھولتا ہے:
- بوٹ۔ ویب شیل IndexedDB کھولتا ہے، صلاحیت برج تعمیر کرتا ہے، ٹول اور اثاثہ کیٹلاگز سنک کرتا ہے (یا آف لائن ہونے پر کیش سے لوڈ کرتا ہے)۔
- روٹ۔ URL ہیش →
toolویو، جس میںqr-codeاور URL پیرامیٹرز نکالے جاتے ہیں۔ - لوڈ۔
loadTool('qr-code', fetchFile)tool.jsonفیچ کرتا ہے، JSON اسکیما کے خلاف تصدیق کرتا ہے،template.html،styles.cssاورhooks.jsسورس فیچ کرتا ہے۔ - URL حالت پارس کریں۔
parseUrlStateURL پیرامیٹرز کو ابتدائی ان پٹ اقدار میں تبدیل کرتا ہے۔ اثاثہ حوالہ جات (?logo=suse/logo/primary) کو ہلکے پھلکے{ id, _unresolved: true }آبجیکٹس کے طور پر پارس کیا جاتا ہے۔ - رن ٹائم۔
createRuntime(tool, host, initialValues)ان پٹ ماڈل تعمیر کرتا ہے (پروفائل ڈیٹا، ڈیفالٹس اور ابتدائی اقدار کو ملا کر)،host.assets.get()کے ذریعے اثاثہ حوالہ جات حل کرتا ہے، ہکس لوڈ کرتا ہے (closure-scopedhost، سینڈ باکسڈ نہیں)،hooks.onInitکو کال کرتا ہے۔ - رینڈر۔ شیل رن ٹائم کو سبسکرائب کرتا ہے؛ ہر حالت کی تبدیلی پر اسے
{ model, hydrated }موصول ہوتا ہے۔ یہ ماڈل سے ان پٹ کنٹرولز رینڈر کرتا ہے اور hydrated ٹیمپلیٹ HTML کو#tool-canvasمیں لکھتا ہے۔ - تعامل۔ صارف ایک ان پٹ میں ٹائپ کرتا ہے →
runtime.setInput(id, value)→ پابندیاں لاگو ہوتی ہیں →hooks.onInputکال ہوتا ہے → دوبارہ hydrate → دوبارہ رینڈر۔ کینوس فوری اپ ڈیٹ ہوتا ہے۔ - ایکسپورٹ۔ صارف Download(PNG) پر کلک کرتا ہے →
runtime.export(canvasNode, 'png')→host.export.render(dom-to-image-more کے ذریعے ریسٹرائز کرتا ہے؛ SVG/PDF مخصوص DOM-واکنگ ویکٹرائزرز سے گزرتے ہیں) → blob →host.export.download۔ کسی ٹول کے اختیار کردہ فارمیٹس کی حد وسیع ہے، اورschemas/tool.schema.jsonمیںrender.formatsenum اس کی مصدقہ فہرست ہے - رَاسٹرز اور فلوٹ رَاسٹرز، ویکٹرز اور کٹ فائلز، پرنٹ/CMYK، موشن، قابلِ ترمیم دستاویزات (pptx،docx،odt)، پیلیٹ اور ڈیٹا/ٹیکسٹ آؤٹ پٹس، آڈیو اور فونٹ فائلیں۔ یو آر ایل موڈ ہر آئی ڈی اور اس کے پیدا کردہ نتیجے کا نام دیتا ہے۔ آڈیو اس enum میں کسی اور چیز کی طرح شامل ہے (wav،mp3،m4a،opus، آڈیوگرام اور ریکارڈنگ ٹولز کے ذریعے بیان کردہ)؛ الگ سے، ایک ریکارڈنگ ٹول کاrender.captureموڈhost.recorderکو چلاتا ہے، جس کی ٹیک ایک مکمل Blob کے طور پر پہنچتی ہے جس کنٹینر میں بھی براؤزر نے ریکارڈ کیا ہو۔ (وہ ٹولز جوrender.export: falseسیٹ کرتے ہیں - مثلاً Color Palette، Countdown Timer، Strip Hidden Data، Text Helper، Compress PDF - ڈاؤن لوڈ/فارمیٹ/طول و عرض کنٹرولز چھپاتے ہیں۔) فزیکل یونٹس یہاں فی فارمیٹ تبدیل ہوتی ہیں (PDF → حقیقی صفحہ پوائنٹس، رَاسٹر → DPI پر پکسلز بمع ایکpHYschunk)۔ تصنیف/پروونینس میٹا ڈیٹا (مصنف، ٹول، ماخذ -engine/src/metadata.tsکے ذریعے تعمیر شدہ) فی فارمیٹ ایمبیڈ کیا جاتا ہے: PNG iTXt، JPEG EXIF، PDF info dict، SVG<metadata>، GIF comment۔ تجرباتی ٹولز کو ہوسٹ کی طرف سے واٹرمارک ملتا ہے، ٹول کی طرف سے نہیں۔
signed by Lollyvector SVGخود جانچیںGet the signed file49 paths~3.3k nodes61 groups3 images74 KB
signed by Lollyvector SVGخود جانچیںGet the signed file49 paths~3.3k nodes61 groups3 images74 KB
Tauri میں وہی لائف سائیکل۔ CLI میں وہی لائف سائیکل - jsdom ہیڈ لیس DOM فراہم کرتا ہے؛ آؤٹ پٹ ایک فائل یا stdout میں جاتا ہے۔
اوپن سورس حیثیت
کوڈ MPL-2.0 ہے۔ engine/، shells/، services/، schemas/ اور docs/ MPL-2.0 کے تحت اوپن سورس ہیں - برانڈ ٹولنگ کے لیے ایک وینڈر-غیر جانبدار اسکیفولڈنگ پلیٹ فارم، جس کی ہر قابلِ ترسیل اکائی github.com/lolly-tools کے تحت اپنے علیحدہ ریپوزٹری میں موجود ہے۔
ٹول کا مواد برانڈ پیکس کی صورت میں فراہم کیا جاتا ہے، ہر ایک اپنی شرائط کے ساتھ (پیک کی NOTICE.md دیکھیں)۔ community/ عوامی lolly-tools ریپوزٹری ہے اور اس کے برانڈ سے غیر متعلق ٹولز بھی MPL-2.0 ہیں۔ brands/suse/ نجی suse-lolly پیک ہے: SUSE ٹولز اور SUSE کیٹلاگ، SUSE کی ملکیت، بشمول اس کی لائسنس یافتہ PremiumBeat موسیقی۔ brands/lolly-start/ وہ خالی اسٹارٹر برانڈ ہے جس کی مالک یہ ریپوزٹری خود ہے۔ فونٹس کسی پیک کے اندر SIL Open Font License 1.1 کے تحت شامل کیے جاتے ہیں - SUSE پیک SUSE اور SUSE Mono ٹائپ فیسز رکھتا ہے۔
ریپو کی جڑ میں موجود tools/ اور catalog/ gitignored ویوز ہیں: ایک پروفائل انہیں community/ اور فعال برانڈ پیک سے مل کر تشکیل دیتا ہے، یہی وجہ ہے کہ ہر اسکرپٹ اور شیل یہ دو راستے پڑھتے ہیں اور کبھی براہِ راست کسی پیک کو نہیں۔
یہ تقسیم نافذ ہے - engine/ سے ٹول کے مواد میں کوئی کراس اِمپورٹس نہیں ہیں - تاکہ پلیٹ فارم/مواد کی حد صاف رہے۔
جہاں انجن ختم ہوتا ہے اور ہوسٹ شروع ہوتا ہے
اگر آپ اسے خالص ڈیٹا + Handlebars میں بیان کر سکتے ہیں → انجن۔ اگر یہ DOM، فائل سسٹم، نیٹ ورک یا کسی براؤزر/OS API کو چھوتا ہے → ہوسٹ۔
یہ لکیر جان بوجھ کر واضح ہے۔ انجن اوپن سورس حصہ ہے۔ ہر وہ چیز جو SUSE، مخصوص پلیٹ فارمز یا رن ٹائم ماحول کے بارے میں جانتی ہے اس سے باہر رہتی ہے۔
مزید تفصیل کے لیے، engine/README.md ہر انجن ماڈیول اور اس کی ذمہ داری کی فہرست دیتا ہے، اور تھریٹ ماڈل اور ٹرسٹ باؤنڈریز یہ ریکارڈ کرتا ہے کہ یہی لکیر کہاں ایک ٹرسٹ باؤنڈری کے طور پر بھی کام کرتی ہے۔