جائزہ

signed by Lollyoverview.htmlHTMLAI generatedgenerated by Claudeخود جانچیںGet the signed filepixels, not shapes12 KB

Lolly آئیکن - بڑی سبز اور سفید لالی پاپ کینڈی

یہ دستاویز 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 کیا ہے وہ خصوصیات کی فہرست نہیں ہے - یہ ہے کہ ایک واحد اثاثے کی پیروی کی جائے جیسے یہ ہاتھ سے ہاتھ گزرتا ہے۔ ایک لوکلائزڈ مہم کارڈ کو تنظیم کے ذریعے حرکت کرتے دیکھیں:

  1. تخلیق کار قواعد طے کرتا ہے۔ ایک ڈیزائنر بنیادی ٹیمپلیٹ Design ٹول میں تحریر کرتا ہے، برانڈ کی ٹائپوگرافی اور رنگ متغیرات کو ہارڈ-کوڈ کرتے ہوئے۔ وہ ایک کارڈ نہیں بنا رہے - وہ بنیادی کام ایک بار کر رہے ہیں تاکہ انہیں دوبارہ کبھی اسے دستی طور پر لوکلائز نہ کرنا پڑے۔
  2. ڈیولپر اسے پیمانہ دیتا ہے۔ وہی ٹیمپلیٹ CLI کے ذریعے ایک رات کی پائپ لائن میں تار دیا جاتا ہے، تاکہ ایک تازہ چارٹ یا ایک نئی زبان کا ورژن خودکار طور پر تخلیق ہو - کوئی ڈیزائنر فائل دوبارہ نہیں کھولتا۔
  3. پروڈیوسر بس اسے استعمال کرتا ہے۔ ایک سیلز نمائندہ، ہوائی جہاز میں آف لائن، وہی ٹول کھولتا ہے اور کلائنٹ میٹنگ کے لیے بالکل برانڈ کے مطابق ڈیک تخلیق کرتا ہے۔ کوئی ڈیزائن مہارت نہیں، کوئی نیٹ ورک نہیں، کوئی انتظار نہیں۔

مرحلہ دو میں "تازہ چارٹ" اسی طرح کا ایک رینڈر ہے، جو ایک ڈیٹا اسٹرنگ اور چند پیرامیٹرز سے تیار کیا گیا ہے بغیر کسی کے ڈیزائن فائل کھولے:

ایک عنوان والا stacked area چارٹ، جس کی تین سیریز ایک ٹھنڈی پیلیٹ میں بینڈ کی گئی ہیں، محور، legend اور عنوان سب template نے رکھے ہیں، ہاتھ سے نہیںsigned by Lollyvector SVGخود جانچیںGet the signed file15 paths~1.3k nodes4 groups21 KBایک عنوان والا stacked area چارٹ، جس کی تین سیریز ایک ٹھنڈی پیلیٹ میں بینڈ کی گئی ہیں، محور، legend اور عنوان سب template نے رکھے ہیں، ہاتھ سے نہیںsigned by Lollyvector SVGخود جانچیںGet the signed file15 paths~1.3k nodes4 groups21 KB

نکتہ یہ نہیں ہے کہ Lolly ڈیزائنرز کے لیے اچھا ہے اور ڈیولپرز کے لیے اچھا ہے اور سیلز کے لیے اچھا ہے، ہر ایک الگ الگ۔ یہ ایک ریلے ریس ہے: تخلیق کار کا ابتدائی کام ڈیولپر کے ذریعے پیمانہ بنایا جاتا ہے، جو بدلے میں پروڈیوسر کو بااختیار بناتا ہے۔ ہوائی جہاز میں غیر تکنیکی نمائندے کے لیے بے تکلف تجربہ صرف اس لیے ممکن ہے کیونکہ ڈیزائنر نے سختی طے کی اور ڈیولپر نے اسے تعینات کیا۔

یہی طاقت کا ضارب ہے۔ Lolly الگ کرداروں کے لیے الگ ٹولز کی دراز نہیں ہے - یہ ایک ڈیٹرمنسٹک اثاثہ زندگی کا سفر ہے جسے ہر کردار چھوتا ہے، اور جس ہاتھ سے یہ گزرتا ہے وہ پچھلے کی قدر کو ضرب دیتا ہے۔


ایک منظوری، دس ہزار اثاثے

چونکہ منظوری ٹول میں رہتی ہے فائل میں نہیں (دیکھیں Lolly کیسے موازنہ کرتا ہے)، پیمانہ ایک جائزے کا مسئلہ نہیں رہتا۔ ایک لوکلائزڈ سوشل-کارڈ ٹول کو ایک بار منظور کریں، پھر ایک اسپریڈشیٹ سے 12 زبانوں میں 10,000 اثاثے تخلیق کریں - اور ان میں سے کسی کو بھی قانونی یا برانڈ سے تازہ تعمیل چیک کی ضرورت نہیں، کیونکہ وہ ٹیمپلیٹ جس سے وہ سب آتے ہیں پہلے ہی منظور کیا جا چکا تھا۔

وہی ڈیٹرمنسٹک ٹول تین طریقوں سے اس پیمانے تک پہنچتا ہے، سب یکساں، پہلے سے منظور شدہ آؤٹ پٹ تیار کرتے ہوئے:

ایک تازہ install پر Batch موڈ: ایک خالی row کسی tool کا انتظار کر رہی ہے، جس میں پوری spreadsheet سطح اور اس کا Render بٹن کسی بھی ڈیٹا کے آنے سے پہلے ہی موجود ہےsigned by Lollyvector SVGخود جانچیںGet the signed file348 paths~77k nodes537 groups7 images3,100 KBایک تازہ install پر Batch موڈ: ایک خالی row کسی tool کا انتظار کر رہی ہے، جس میں پوری spreadsheet سطح اور اس کا Render بٹن کسی بھی ڈیٹا کے آنے سے پہلے ہی موجود ہے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

فون کی چوڑائی پر وہی ٹول، بغیر کسی دوسرے لے آؤٹ کو برقرار رکھے: کنٹرولز اوپر ایک شیٹ بن جاتے ہیں، پیش نظارہ پوری اسکرین پر ہوتا ہے اور رینڈر پِل اس کے اوپر تیرتی ہے۔

430px چوڑی اسکرین پر ایک audiogram - اوپر controls کی شیٹ، نیچے مکمل شدہ مربع آرٹ ورک اور فلوٹنگ render pillsigned by Lollyvector SVGخود جانچیںGet the signed file47 paths~1.9k nodes84 groups1 image212 KB430px چوڑی اسکرین پر ایک audiogram - اوپر controls کی شیٹ، نیچے مکمل شدہ مربع آرٹ ورک اور فلوٹنگ render pillsigned 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" دراز ہے۔

قسممثالیںمنصوبہ بند
everyoneQR Code Generator, Quote Card, Email Signature, Logo, Wordmark, Audiogram, Battlecards, Sequence Studio, RecordEmployee Image Stationery
designerBrand Lockup, Design, Chart, Darkroom, Filter, Pose Geeko, Multi-Page PDFFont Outliner
eventMeeting Planner, Event Name Badge, Wayfinding Signage, Calendar ICS, Booth StudioEvent Stationery, Bulk Name Badges, Room Agenda Cards
product-CVE Alert, Product Release Announcement, Blog OG Image
utilityStrip Hidden Data, Text Helper, Compress PDF, Convert Image, Convert Font, Redact, Run Web Code, Screen Capture, URL ScreenshotUnit/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:catalog CI کو ناکام کر دیتا ہے۔


آرکیٹیکچرل وعدے

یہ فیصلے طے شدہ ہیں۔ ان میں سے کسی کو تبدیل کرنا ایک بڑا کام ہے - یہ کوڈ بیس میں ہر دوسرے فیصلے کو تشکیل دیتے ہیں۔

1۔ اعلانیہ ٹولز، ایک امری فرار کے راستے کے ساتھ

ایک ٹول ایک مینی فیسٹ (tool.json) + ایک ٹیمپلیٹ (template.html) + اختیاری hooks.js پر مشتمل ہوتا ہے۔

مینی فیسٹ ان پٹس کا اعلان کرتا ہے۔ ٹیمپلیٹ نہیں۔ ان پٹس کا اندازہ Handlebars ٹوکنز سے نہیں لگایا جاتا۔ مینی فیسٹ ہی معاہدہ ہے؛ ٹیمپلیٹ {{id}} کے ذریعے نام شدہ ویری ایبلز استعمال کرتا ہے۔

Street Map کا کنٹرول اسٹیک - ایک شہر ڈراپ ڈاؤن، ایک تھیم سلیکٹ، ویٹ سلائیڈرز اور کلر ٹریگرز، ان میں سے ہر ایک مینی فیسٹ کی ایک لائن سے کھینچا گیاsigned by Lollyvector SVGخود جانچیںGet the signed file39 paths~3.4k nodes70 groups2 images50 KBStreet Map کا کنٹرول اسٹیک - ایک شہر ڈراپ ڈاؤن، ایک تھیم سلیکٹ، ویٹ سلائیڈرز اور کلر ٹریگرز، ان میں سے ہر ایک مینی فیسٹ کی ایک لائن سے کھینچا گیا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 (دوسرے ٹول کا رینڈر ایمبیڈ کرنا - composehost.capture (URL Screenshot کے لیے پیج کیپچر - capture) اور host.recorder (ریکارڈنگ ٹولز کے لیے مائیک/کیمرہ/ڈسپلے کیپچر - microphone / camera / screen)۔ باقی فیچر-ڈیٹیکٹڈ ہیں - جب بھی شیل انہیں فراہم کر سکے موجود ہوتی ہیں، اور ٹول ان شیلز کے لیے ایک فال بیک رکھتا ہے جو ایسا نہیں کر سکتیں۔

یہ ظاہر کرنے کے لیے کہ اس کا احاطہ کیا ہے، چند نمایاں سطحیں - Host API ہر ایک کو دستاویزی شکل دیتا ہے، اور packages/core/src/host-v1.ts خود معاہدہ ہے:

سطح (Surface)کب سےیہ کیا شامل کرتا ہے
host.tokens1.0DTCG ڈیزائن ٹوکنز - برانڈ کے اپنے primitives
host.text1.0HarfBuzz WASM کے ذریعے text-to-path (wasm capability فلیگ ان tools کو نشان زد کرتا ہے جو اس پر انحصار کرتے ہیں)
host.media1.4onFrame ہک کو چلانے والے لائیو کیمرہ فریمز۔ Progressive enhancement، جان بوجھ کر camera فلیگ سے مشروط نہیں - ایسا tool بدستور ایک عام still-image tool کے طور پر کام کرتا ہے
host.color1.40Perceptual رنگ ریاضی: Δ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.images1.60آلے پر bytes کو decode / resize / re-encode کرنا - convert راستہ (HEIC → JPEG، WebP میں compress، downscale)۔ ویب shell میں ایک lazy facade کے طور پر شپ کیا گیا، اس لیے HEIC decoder کبھی boot chunk میں داخل نہیں ہوتا
host.geom1.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 ایک معاہدہ ہے۔ ایک بار شائع ہو جانے کے بعد:

یہ محفوظ شدہ ٹول اسٹیٹس اور 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 رکھ سکتا ہے۔) تین باقیوں سے زیادہ اہم ہیں:

9۔ ٹیمپلیٹس منطق سے خالی ہیں (Handlebars، EJS نہیں)

Handlebars کو EJS پر جان بوجھ کر منتخب کیا گیا:

منطق hooks.js میں رہتی ہے جہاں یہ واضح اور جائزہ لینے کے قابل ہے۔ دستیاب Handlebars ہیلپرز: {{default}}، {{upper}}، {{lower}}، {{eq}}، {{markdown}}، {{asset ref}}، {{asset ref "property"}} (نیز ڈیٹا فارمیٹ ہیلپرز icsStamp/rfcText/csvCell جو ساتھی .ics/.vcf/.csv ٹیمپلیٹس میں استعمال ہوتے ہیں)۔

10۔ ٹولز ٹولز کو compose کرتے ہیں

ایک ٹول کسی دوسرے ٹول کے رینڈر کو کسی ٹول سے ٹول امپورٹ کے بغیر ایمبیڈ کر سکتا ہے - compose انجن کے ذریعے حل ہوتا ہے، کبھی ٹول کے کوڈ کے ذریعے نہیں۔ اس کی دو سطحیں ہیں:

کسی بھی ٹول کے رینڈر کو compose کریں: ایک SVG چائلڈ سچا ویکٹر رہتا ہے جب پیرنٹ SVG یا PDF میں ایکسپورٹ کرے اور PNG کے لیے صاف طور پر ریسٹرائز ہوتا ہے؛ PNG/JPG/WEBP چائلڈز تصاویر کے طور پر ایمبیڈ ہوتے ہیں۔ اس کے لیے compose صلاحیت درکار ہے۔ compose شدہ چائلڈز درمیانی (intermediate) ہوتے ہیں - کبھی واٹرمارک یا پروونینس اسٹیمپ شدہ نہیں ہوتے - اور compose نرمی سے تنزل کرتا ہے: جو شیل کسی چائلڈ کو رینڈر نہیں کر سکتا وہ محض اس سلاٹ کو چھوڑ دیتا ہے اور پیرنٹ پھر بھی رینڈر ہوتا ہے۔


ہم نے واضح طور پر کیا نہیں کرنے کا انتخاب کیا


لائف سائیکل، سرے سے سرے تک

ایک صارف 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 اسکیما کے خلاف تصدیق کرتا ہے، 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() کے ذریعے اثاثہ حوالہ جات حل کرتا ہے، ہکس لوڈ کرتا ہے (closure-scoped host، سینڈ باکسڈ نہیں)، hooks.onInit کو کال کرتا ہے۔
  6. رینڈر۔ شیل رن ٹائم کو سبسکرائب کرتا ہے؛ ہر حالت کی تبدیلی پر اسے { model, hydrated } موصول ہوتا ہے۔ یہ ماڈل سے ان پٹ کنٹرولز رینڈر کرتا ہے اور hydrated ٹیمپلیٹ HTML کو #tool-canvas میں لکھتا ہے۔
  7. تعامل۔ صارف ایک ان پٹ میں ٹائپ کرتا ہے → runtime.setInput(id, value) → پابندیاں لاگو ہوتی ہیں → hooks.onInput کال ہوتا ہے → دوبارہ hydrate → دوبارہ رینڈر۔ کینوس فوری اپ ڈیٹ ہوتا ہے۔
  8. ایکسپورٹ۔ صارف 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.formats enum اس کی مصدقہ فہرست ہے - رَاسٹرز اور فلوٹ رَاسٹرز، ویکٹرز اور کٹ فائلز، پرنٹ/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 پر پکسلز بمع ایک pHYs chunk)۔ تصنیف/پروونینس میٹا ڈیٹا (مصنف، ٹول، ماخذ - engine/src/metadata.ts کے ذریعے تعمیر شدہ) فی فارمیٹ ایمبیڈ کیا جاتا ہے: PNG iTXt، JPEG EXIF، PDF info dict، SVG <metadata>، GIF comment۔ تجرباتی ٹولز کو ہوسٹ کی طرف سے واٹرمارک ملتا ہے، ٹول کی طرف سے نہیں۔

وہ ایکسپورٹ پینل جو ?options کھولتا ہے: فائل نام اور فارمیٹ کا جوڑا، آؤٹ پٹ سائز اور فائل لکھنے والے کنٹرولزsigned by Lollyvector SVGخود جانچیںGet the signed file49 paths~3.3k nodes61 groups3 images74 KBوہ ایکسپورٹ پینل جو ?options کھولتا ہے: فائل نام اور فارمیٹ کا جوڑا، آؤٹ پٹ سائز اور فائل لکھنے والے کنٹرولز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 ہر انجن ماڈیول اور اس کی ذمہ داری کی فہرست دیتا ہے، اور تھریٹ ماڈل اور ٹرسٹ باؤنڈریز یہ ریکارڈ کرتا ہے کہ یہی لکیر کہاں ایک ٹرسٹ باؤنڈری کے طور پر بھی کام کرتی ہے۔