Lolly
অ্যাপ চালু করুন

Data Transfer - lolly-backup বান্ডেল

একজন Lolly ব্যবহারকারী যা কিছু সঞ্চয় করেন তা তাদের ডিভাইসেই থাকে - কোনো অ্যাকাউন্ট নেই, কোনো ক্লাউড নেই। data-transfer বান্ডেল হলো সেই মূল্য স্থানান্তরের উপায়: এটি একটি ইনস্টলে এক্সপোর্ট করুন, যেকোনো মাধ্যমে ফাইলটি বহন করুন (USB, AirDrop, ইমেইল-টু-সেলফ, একটি নেটওয়ার্ক শেয়ার) এবং অন্যটিতে ইমপোর্ট করুন। ফাইলটিই পরিবহন। টার্গেট অফলাইন বা অনলাইন হতে পারে। এতে কোনো পার্থক্য হয় না, কারণ কখনো কোনো সার্ভারের সাথে যোগাযোগ হয় না।

পুরো একটি ইনস্টল সরিয়ে নেওয়ার দুটি বোতাম: Export my data একটি zip লেখে, Import data সেটি আবার পড়ে signed by Lollyvector SVG৯ paths~4.9k nodes১১ groups৫৬ KBনিজেই যাচাই করুনস্বাক্ষরিত ফাইলটি নিনপুরো একটি ইনস্টল সরিয়ে নেওয়ার দুটি বোতাম: Export my data একটি zip লেখে, Import data সেটি আবার পড়ে signed by Lollyvector SVG৯ paths~4.9k nodes১১ groups৫৬ KBনিজেই যাচাই করুনস্বাক্ষরিত ফাইলটি নিন

এই পৃষ্ঠাটি ফরম্যাট স্পেক। এন্ড-ইউজার ওয়াকথ্রুর জন্য দেখুন আপনার কাজ খুঁজুন ও ফিরে পান → আপনার কাজ অন্য ডিভাইসে নিয়ে যান। ইমপ্লিমেন্টেশনটি হলো shells/web/src/data-transfer.ts, এবং tests/data-transfer.test.ts round-trip কন্ট্র্যাক্টকে পিন করে।

Scope. একটি বান্ডেল ব্যবহারকারীর ডেটা বহন করে, ক্যাটালগ টুল নয়। ক্যাটালগ টুল এবং ক্যাটালগ অ্যাসেট আলাদাভাবে সিঙ্ক করা হয় এবং ধরে নেওয়া হয় যে সেগুলো টার্গেটে ইতিমধ্যে উপস্থিত (সবচেয়ে খারাপ ক্ষেত্রে উচ্চতর ভার্সনে); ব্যবহারকারীর নিজের বানানো টুল profile.json-এর ভেতরে ভ্রমণ করে। ইমপোর্ট করা কখনো কোনো ক্যাটালগ টুল ইনস্টল বা আপগ্রেড করে না।

লক্ষ্য

এনভেলপ

একটি বান্ডেল একটি সাধারণ .zip। ডাউনলোডটির নাম যার জন্য এটি তার নামে - LollyTools-<First>-<Last>-<YYYY-MM-DD>-<n>.zip (উদাহরণস্বরূপ LollyTools-Ada-Lovelace-2026-06-26-1.zip) - যাতে ব্যাকআপের Downloads ফোল্ডার সুপাঠ্য থাকে। First এবং Last অংশ প্রোফাইল থেকে আসে এবং সেট না থাকলে বাদ দেওয়া হয়। কোনো প্রোফাইল না থাকলে LollyTools-2026-06-26-1.zip পাওয়া যায়, এবং শুধু একটি প্রথম নাম থাকলে LollyTools-Ada-2026-06-26-1.zip পাওয়া যায়। প্রতিটি অংশ একটি ফাইলনেম-সেফ টোকেনে স্যানিটাইজ করা হয় (ইউনিকোড অক্ষর/সংখ্যা রাখা হয়, স্পেস/যতিচিহ্ন সরানো হয়, 32 অক্ষরে সীমাবদ্ধ)। <n> একটি প্রতি-দিন, প্রতি-ডিভাইস সিকোয়েন্স, তাই একই দিনে বারবার এক্সপোর্ট করলে সংঘর্ষ হয় না এবং ক্রম বজায় থাকে। shells/web/src/data-transfer.ts-এর backupFilename() নামটি তৈরি করে। নাম যাই হোক না কেন, zip-এর বিষয়বস্তু অভিন্ন থাকে। ভেতরে:

পাথআবশ্যকবিষয়বস্তু
manifest.jsonহ্যাঁফরম্যাট id, ভার্সন, গণনা এবং প্রতি-অংশ integrity। রিডার সর্বপ্রথম যা দেখে।
profile.jsonসেট থাকলেব্যবহারকারীর সম্পূর্ণ me রেকর্ড: নাম, যোগাযোগ, হেডশট রেফ ও ফ্ল্যাগ, সাথে ফোল্ডার, Trash, প্রজেক্ট ব্লুপ্রিন্ট, ইউজার টেমপ্লেট ও ইউজার-নির্মিত টুল, ফেভারিট, লুকানো টুল, ভাষা ও ইমোজি বাছাই। host.profile দিয়ে পড়া হয়।
sessions.jsonহ্যাঁপ্রতিটি সেভ করা সেশন: স্লট, টুল id/ভার্সন, লেবেল, থাম্বনেইল (data-URL) এবং সম্পূর্ণ ইনপুট ডেটা। host.state দিয়ে পড়া হয়।
assets.jsonহ্যাঁপ্রতিটি আপলোড করা অ্যাসেটের (ইমেজ, ফন্ট, ব্র্যান্ড টোকেন, লোগো, ডাউনলোডের সেভ করা কপি) মেটাডেটা, যেগুলো assets/blobs/-এর অধীনে তাদের বাইট নির্দেশ করে।
assets/blobs/<n>.<ext>প্রতি অ্যাসেটেকাঁচা অ্যাসেট বাইট (ইমেজ এবং ফন্ট ফাইল)। আনকমপ্রেসড অবস্থায় সংরক্ষিত (ইতিমধ্যে-কমপ্রেসড ফরম্যাট)। এক্সটেনশনটি নান্দনিক। assets.json-এর MIME-ই কর্তৃত্বপূর্ণ।
assets/blobs/<n>.c2paউপস্থিত থাকলেঅ্যাসেট রেকর্ডে _credentialFile দ্বারা রেফারেন্স করা, প্রকৃত বাইনারি বাইট হিসেবে এক্সট্র্যাক্ট করা Content Credentials। এগুলো ডিভাইস সাইনিং কী নয়।
design-systems.jsonউপস্থিত থাকলেএই ইনস্টলে বানানো বা যোগ করা ডিজাইন সিস্টেম, { active, records } হিসেবে। ইমপোর্টে id দিয়ে মার্জ করা হয়; বান্ডেলের সক্রিয় পছন্দ তখনই প্রযোজ্য যখন টার্গেটের নিজস্ব কোনো ডিজাইন সিস্টেম নেই।
file-history.jsonঐচ্ছিকভার্সনযুক্ত অ্যাসেট স্ন্যাপশট, টার্মিনাল ফাইল-অপারেশন রিপোর্ট এবং সম্পূর্ণ ব্যাচ ম্যানিফেস্ট। হিস্ট্রি অংশের নিজস্ব ভার্সন আছে; শেলের অভ্যন্তরীণ fileHistory ব্যাকআপ অ্যাডাপ্টার দিয়ে সরবরাহ করা হয়।
revision-history.jsonঐচ্ছিক, ম্যানুয়াল ব্যাকআপস্থায়ী creation ID, ধরে রাখা চেকপয়েন্ট, থাম্বনেইল এবং চলমান রিকভারি ড্রাফট। সমর্থিত হলে host.state.history.backup দিয়ে সরবরাহ করা হয়।
file-history/versions/প্রতি স্ন্যাপশটেআগের অ্যাসেট বাইট এবং এক্সট্র্যাক্ট করা ক্রেডেনশিয়াল, বর্তমান অ্যাসেটটি এখনও আছে কিনা তা নির্বিশেষে।
file-history/results/প্রতি সম্পন্ন অপারেশনেপ্রকৃত আউটপুট বাইট। কনভার্শনের জন্য নির্বাচিত কোনো মূল ফাইল রাখা বা অন্তর্ভুক্ত করা হয় না।
prefs.jsonহ্যাঁব্যবহারকারীর-মালিকানাধীন লোকাল পছন্দ: theme, sidebarWidth এবং ct-metrics কার্যকলাপ গণনা।
lolly.txtহ্যাঁLolly ছাড়া zip খোলা যেকারো জন্য বান্ডেলের একটি মানুষ-পাঠযোগ্য সারসংক্ষেপ (গণনা, প্রোফাইল, ফাইলনাম)। প্রতিটি এক্সপোর্টে পুনরায় তৈরি হয় এবং ইমপোর্টে স্বীকৃত হয়, তাই এটি কখনো একটি বাদ পড়া অংশ হিসেবে গণ্য হয় না। এটি integrity ম্যাপের পরে লেখা হয়, তাই এটি তার বাইরে থাকে।

বান্ডেলটি ইচ্ছাকৃতভাবে একটি সাধারণ zip: এটি যেকোনো পরিবহনে অক্ষত থাকে, এবং যেকোনো unzip টুল এটি পরিদর্শন করতে পারে।

profile.json সবচেয়ে ছোট অংশ এবং অ্যাপে রিডার প্রথমে যা দেখে: একজন প্রযোজক একবার যা পূরণ করেন তার বিবরণ, এবং টুলগুলোকে সেগুলো ব্যবহার করতে দেওয়ার অপ্ট-ইন।

যে Profile ডিটেইল ফর্ম profile.json হয়ে যায়: নাম, যোগাযোগের বিবরণ এবং হেডশট signed by Lollyvector SVG১৫ paths~1.2k nodes৩০ groups১ image৪০ KBনিজেই যাচাই করুনস্বাক্ষরিত ফাইলটি নিন

manifest.json

{
  "format": "lolly-backup",
  "formatVersion": 3,
  "minReader": 1,
  "app": "lolly",
  "exportedAt": "2026-06-22T09:30:00.000Z",
  "counts": { "profile": true, "sessions": 2, "userAssets": 4, "prefs": 3, "assetVersions": 1, "fileOperations": 1 },
  "integrity": {
    "profile.json": "sha256-…",
    "sessions.json": "sha256-…",
    "assets.json": "sha256-…",
    "assets/blobs/0.bin": "sha256-…",
    "file-history.json": "sha256-…",
    "file-history/versions/0.bin": "sha256-…",
    "file-history/results/0.bin": "sha256-…",
    "prefs.json": "sha256-…"
  }
}
ফিল্ডঅর্থ
formatসবসময় lolly-backup। এটি ছাড়া একটি ফাইল "not a Lolly backup" হিসেবে প্রত্যাখ্যাত হয়।
formatVersionএই বান্ডেলটি যে লেআউট দিয়ে লেখা হয়েছিল। অংশের সেট বা আকার পরিবর্তনে বৃদ্ধি পায়। রিডাররা এর উপর নির্ভর করে গেট করে না।
minReaderএই বান্ডেলটি নিরাপদে ইমপোর্ট করার জন্য প্রয়োজনীয় সর্বনিম্ন রিডার ভার্সন। এই ফিল্ডের উপরই রিডাররা গেট করে।
appপ্রস্তুতকারী অ্যাপ id, ডায়াগনস্টিকসের জন্য।
exportedAtবান্ডেলটি তৈরির ISO টাইমস্ট্যাম্প।
countsরাইটার যা যোগ করেছে, প্রদর্শন এবং sanity-checking-এর জন্য।
integrityঐচ্ছিক। manifest.json ছাড়া প্রতিটি অংশকে তার আনকমপ্রেসড বাইটের একটি SRI-স্টাইল sha256-<base64> ডাইজেস্টের সাথে ম্যাপ করে।

ভার্সন নীতি (forward compatibility)

formatVersion এবং minReader-এর মধ্যে এই বিভাজনটিই পুরনো ইনস্টলগুলোকে অনাথ না করে ফরম্যাটটিকে বাড়তে দেয়:

লেখকদের জন্য সাধারণ নিয়ম: যদি প্রতিটি বিদ্যমান রিডার আপনার সংযোজন উপেক্ষা করেও সঠিক কাজ করে, তাহলে এটি additive - formatVersion বাড়ান, minReader অপরিবর্তিত রাখুন। অন্যথায় minReader বাড়ান।

অখণ্ডতা

যখন manifest.integrity উপস্থিত থাকে, একটি রিডার কিছু লেখার আগে তালিকাভুক্ত প্রতিটি অংশের SHA-256 যাচাই করে। একটি অমিল ("failed its integrity check") বা একটি অনুপস্থিত অংশ ("incomplete") সম্পূর্ণ ইমপোর্ট বাতিল করে দেয় - কোনো আংশিক পুনরুদ্ধার নেই। এটি ফাইল পরিবহনে সৃষ্ট বিকৃতি ধরে ফেলে (একটি ছেঁটে যাওয়া AirDrop, একটি ইমেইল গেটওয়ে যা অ্যাটাচমেন্ট পুনরায়-এনকোড করেছে, একটি খারাপ USB সেক্টর)।

Integrity ইচ্ছাকৃতভাবে best-effort: এটি শুধুমাত্র সেখানে লেখা হয় যেখানে Web Crypto উপলব্ধ (প্রতিটি সিকিউর ব্রাউজার কনটেক্সট এবং আধুনিক Node), এবং শুধুমাত্র তখনই যাচাই করা হয় যখন ম্যাপ এবং Web Crypto উভয়ই উপস্থিত। ম্যাপ ছাড়া একটি বান্ডেল - উদাহরণস্বরূপ integrity চালু হওয়ার আগের একটি - অপরিবর্তিতভাবে ইমপোর্ট হয়। "Cannot verify"-কে কখনো "corrupt" হিসেবে গণ্য করা হয় না।

ম্যানিফেস্টটি নিজেকে বা পুনরায় তৈরি করা lolly.txt README-কে তালিকাভুক্ত করে না। ডাইজেস্টগুলো শুধু সেই অংশগুলো কভার করে যেগুলোর জন্য ম্যানিফেস্ট নিশ্চয়তা দেয়।

ইমপোর্ট সিমান্টিক্স

ইমপোর্ট একটি merge, কখনো replace-all নয়:

সেভ করা সেশনগুলো স্বয়ংক্রিয়ভাবে তাদের ইমেজের সাথে পুনরায়-লিংক হয়: অ্যাসেট রেফারেন্সগুলো id দিয়ে রাখা হয়, এবং আপলোড করা ইমেজগুলো পুনরুদ্ধার হওয়ার পর bridge সেগুলো পুনরায়-রিজলভ করে (যেভাবেই হোক এটি করতেই হবে, কারণ blob: URL রিলোডে টিকে থাকে না)।

ইমপোর্ট সারসংক্ষেপ রিপোর্ট করে { profile, sessions, userAssets, prefs, skipped, failedAssets }। failedAssets সেইসব আপলোড করা অ্যাসেট গণনা করে যেগুলো পুনরুদ্ধার করা যায়নি (যেমন ডিভাইসের স্টোরেজ পূর্ণ)। এটি skipped-এর থেকে আলাদা, যা একটি forward-compatible নতুন রাইটারের সেই অংশগুলো গণনা করে যা এই বিল্ড চিনতে পারেনি। UI skipped-কে প্রকাশ করে ("… · N newer items skipped"), যাতে পুনরুদ্ধারটি কী রেখে গেছে সে বিষয়ে সৎ থাকে।

যখন file history উপস্থিত থাকে, সারসংক্ষেপ assetVersions, fileOperations এবং failedHistory-ও বহন করে। স্টোরেজ শেষ হয়ে যাওয়া বা অপরিবর্তনীয়-ID সংঘর্ষ আংশিক পুনরুদ্ধারের কারণ হতে পারে; UI ব্যবহারকারীকে সোর্স ব্যাকআপ ধরে রাখতে বলে। আংশিক বা অসমর্থিত পুনরুদ্ধারের পর Cloud sync তার প্রযুক্ত রিভিশন এগিয়ে নেয় না, তাই স্ন্যাপশটটি পুনরায় চেষ্টার জন্য উপলব্ধ থাকে। পুনরুদ্ধার সব প্রোফাইল/সেশন/অ্যাসেট/হিস্ট্রি স্টোরে একটিমাত্র transaction নয়।

Creation history (v3)

একটি history-সক্ষম ওয়েব হোস্ট থেকে ম্যানুয়াল ব্যাকআপে নিজস্ব { version: 1, documents, revisions, recoveries } স্কিমাসহ revision-history.json অন্তর্ভুক্ত থাকে। এটি ধরে রাখা ID, ক্যানোনিক্যাল ইনপুট স্ন্যাপশট, ভার্সন স্ট্যাম্প, রাস্টার প্রিভিউ এবং আলাদা রাইটার ড্রাফট বহন করে। হিস্ট্রি অ্যাডাপ্টার বর্তমান সেশন এবং তাদের head একটি রিড transaction-এ ক্যাপচার করে; sessions.json পুরনো রিডারের জন্য একই বর্তমান স্ন্যাপশট ব্যবহার করে।

পুনরুদ্ধার আর্কাইভটিকে একটি transaction-এ কমিট করার আগে payload SHA-256 এবং বাইট গণনা, ইউনিক পরিচয়, ডকুমেন্ট/head সম্পর্ক, বংশপরিচয়, টাইমস্ট্যাম্প, প্রিভিউ ধরন ও সীমা যাচাই করে। কম্প্যাক্ট করা parent রেফারেন্স অনুপস্থিত থাকতে পারে। বিদ্যমান বর্তমান কাজ কখনো নীরবে প্রতিস্থাপিত হয় না: কোনো creation দুই দিকেই থাকলে, যে দিকটি বর্তমান হিসেবে রাখা হয় না সেটি একটি protected draft হয়ে যায়। আর্কাইভের 384 MiB transfer সীমা স্পষ্টভাবে যাচাই করা হয়, এবং স্টোরেজ সীমা ধরে রাখা চেকপয়েন্ট না কেটেই প্রয়োগ করা হয়। সম্পূর্ণ ব্যাকআপ এখনও একটি ইন-মেমরি ZIP ইমপ্লিমেন্টেশন ব্যবহার করে এবং এটি কোনো স্ট্রিমিং আর্কাইভ নয়।

সারসংক্ষেপে revisions এবং recoveryDrafts যুক্ত হয়, যা শুধু গণনা করে এই ইমপোর্ট কী যোগ করেছে, আর added, kept, replaced, copies ও hidden জানায় প্রতিটি creation কীভাবে merge হয়েছে। এই সক্ষমতা ছাড়া একটি শেল সাধারণ সেশন পুনরুদ্ধার করে এবং history অংশটি skipped হিসেবে রিপোর্ট করে। নেটিভ ফাইলসিস্টেম history তখনই সমর্থিত হবে যখন এর অ্যাডাপ্টার টিকসই history transaction দেবে। P2P গেস্ট স্টেটে কোনো টিকসই history বা recovery আর্কাইভ নেই।

ব্যক্তিগত স্ন্যাপশট sync স্পষ্টভাবে creation history বাদ রাখে। history-ধারী একটি লোকাল ডকুমেন্টে স্ন্যাপশট প্রয়োগ করলে তার আগের কার্যরত অবস্থা একটি আলাদা recovery draft হিসেবে সংরক্ষিত থাকে এবং কোনো খোলা এডিটরের write token বাতিল হয়ে যায়। এর অপরিবর্তনীয় চেকপয়েন্ট ডিভাইসেই থেকে যায়। এটি স্ন্যাপশট প্রতিস্থাপনের সময় লোকাল history রক্ষা করে; এটি একইসাথে চলা ডিভাইস history মার্জ করে না।

পুরনো অ্যাসেট রেফারেন্স ধরে রাখা হয়, যদিও রেন্ডারিং এখনও গন্তব্যের বিদ্যমান লাইব্রেরির মাধ্যমে অ্যাসেট রিজলভ করে। এই আর্কাইভ এখনও প্রকৃত পুরনো অ্যাসেট বাইট বা পুরনো টুল রেন্ডারের নিশ্চয়তা দেয় না। অ্যাসেট-ভার্সন এবং file-result বাইট তাদের বিদ্যমান আলাদা ব্যাকআপ অংশের মাধ্যমে ভ্রমণ চালিয়ে যায়।

সেভ করা ভার্সন এবং ফাইল রিজাল্ট (v2)

ঐচ্ছিক history অংশে থাকে { version: 2, assetVersions: [...], operations: [...], batches: [...] }; রিডাররা batches ছাড়া আগের history-v1 আকৃতিও গ্রহণ করে। প্রতিটি স্ন্যাপশট স্থায়ী অ্যাসেট ID এবং প্রকৃত ভার্সন, তার সেভের সময়, বাইট দৈর্ঘ্য ও hex SHA-256 চিহ্নিত করে, সাথে একটি অ্যাসেট রেকর্ড যার _file এবং ঐচ্ছিক _credentialFile বাইনারি অংশের দিকে নির্দেশ করে। অপারেশন মূল ফাইল ফ্যাক্ট, রিকোয়েস্ট, রিপোর্ট, টাইমস্ট্যাম্প এবং ঐচ্ছিক রিজাল্ট _file বহন করে; স্টোরেজ ব্যাকএন্ড নাম, OPFS হ্যান্ডেল এবং execution lease ভ্রমণ করে না। পুরনো কেবল-history-v1 রিডার ইমপোর্টের আগে নতুন history ভার্সন প্রত্যাখ্যান করে, নীরবে batch সদস্যতা ফেলে দেওয়ার বদলে।

প্রসেসিংয়ের আগে ব্যাচ ম্যানিফেস্ট প্রতিটি নির্বাচিত সোর্স রেকর্ড করে, যার মধ্যে আছে কখনো না-পড়া ফাইল, বাতিল হওয়া সদস্য, রিজাল্ট স্পেস reserve করতে ব্যর্থতা এবং বাধাগ্রস্ত কাজ। প্রতিটি সদস্যের একটি স্থায়ী operation ID, সোর্স রেফারেন্স/ফ্যাক্ট, চাওয়া আউটপুট নাম এবং টার্মিনাল রিপোর্ট থাকে। একটি না-পড়া সোর্সের ঘোষিত ফ্যাক্ট থাকে, কোনো বানানো digest নয়। ইমপোর্ট সদস্যের পরিচয় এবং বহন করা কোনো অপারেশন রিপোর্টের সাথে সামঞ্জস্য যাচাই করে। ব্যাচ রিপোর্ট তখনও উপলব্ধ থাকে যখন পৃথক রিজাল্ট স্পষ্টভাবে সরানো হয়েছে, কিন্তু একটি রসিদ এই বোঝায় না যে তার আউটপুট বাইট এখনও সংরক্ষিত।

পুরনো রিডাররা এখনও v2 এনভেলপ (minReader: 1) গ্রহণ করে এবং পরিচিত অংশ পুনরুদ্ধার করে, অসমর্থিত history অংশকে skipped হিসেবে গণনা করে। সম্পূর্ণ history পুনরুদ্ধারের জন্য fileHistory অ্যাডাপ্টারসহ একটি শেল প্রয়োজন; এটি একটি শেল-অভ্যন্তরীণ সংযোগ, কোনো নতুন টুল-মুখী HostV1 সক্ষমতা নয়। বাস্তব দুই-ডিভাইস পুনরুদ্ধার লোকাল Chromium গেট দ্বারা কভার করা; ইনস্টল করা Tauri/iOS/Android পুনরুদ্ধারের গ্রহণযোগ্যতা আলাদা থেকে যায়।

কী ভ্রমণ করে না

স্টোরেজ মিটার একই বিভাজনটি আইটেমাইজ করে। Saved sessions, My images এবং File results ও versions একটি বান্ডেলে থাকে। তাদের নিচের asset cache, tool previews এবং offline pins সবই পুনরায়-উদ্ভূতযোগ্য, তাই সেগুলো পেছনে থেকে যায়।

স্টোরেজ মিটার এই ডিভাইসের ডেটাকে নামযুক্ত ক্যাটাগরিতে ভাগ করছে, যেখানে Saved sessions এবং My images আলাদাভাবে Asset cache থেকে ট্র্যাক করা হয়, এখানে একটি নতুন ইনস্টলে যেখানে প্রতিটি ক্যাটাগরি এখনও খালি signed by Lollyvector SVG৩৭ paths~4.9k nodes৮৫ groups৬৫ KBনিজেই যাচাই করুনস্বাক্ষরিত ফাইলটি নিনস্টোরেজ মিটার এই ডিভাইসের ডেটাকে নামযুক্ত ক্যাটাগরিতে ভাগ করছে, যেখানে Saved sessions এবং My images আলাদাভাবে Asset cache থেকে ট্র্যাক করা হয়, এখানে একটি নতুন ইনস্টলে যেখানে প্রতিটি ক্যাটাগরি এখনও খালি signed by Lollyvector SVG৩৭ paths~4.9k nodes৮৫ groups৬৫ KBনিজেই যাচাই করুনস্বাক্ষরিত ফাইলটি নিন

ক্রস-শেল গ্যারান্টি

data-transfer.ts শুধুমাত্র ক্যাপাবিলিটি ব্রিজের (host.profile, host.state, host.assets) মাধ্যমে এবং শেয়ার্ড localStorage prefs-এর মাধ্যমে পড়ে ও লেখে। একই মডিউল ওয়েব ও Tauri-তে সাধারণ এনভেলপ পড়ে ও লেখে, IndexedDB বা ফাইল সিস্টেম স্টোরেজের উপরে। ঐচ্ছিক history অংশ শুধু তখনই দেখা যায় যখন সংশ্লিষ্ট অ্যাডাপ্টার উপলব্ধ; ইমপোর্টে একটি অসমর্থিত অংশ skipped হিসেবে রিপোর্ট করা হয়। হেডলেস স্যুট সাধারণ অংশগুলো একটি ইন-মেমরি ব্রিজের বিপরীতে চালায়, যেখানে history transaction-এর জন্য real-browser টেস্টও আছে।

দুটি শেল ভিন্ন কারণে এই গ্যারান্টির বাইরে থাকে:

সংরক্ষিত এক্সটেনশন পয়েন্ট

এনভেলপটি ডিজাইন অনুযায়ী একটি ম্যানিফেস্ট এবং নামযুক্ত পার্টের একটি সেট, যাতে পরবর্তীতে নতুন ধরনের পোর্টেবল ডেটা এতে কোনো ব্রেকিং চেঞ্জ ছাড়াই যুক্ত হতে পারে। এগুলো অতিরিক্ত পার্ট হিসেবে যুক্ত হয় (নতুন formatVersion, একই minReader), এবং আজকের রিডার যা চেনে না তা এড়িয়ে যায়। এগুলো এখনও বানানো হয়নি। নামগুলো এখানে সংরক্ষিত রাখা হয়েছে যাতে এগুলো চালু হলে ফরম্যাটটি সংগতিপূর্ণ থাকে।

এই সংরক্ষিত নাম এবং উপরের পার্টগুলোর বাইরের যেকোনো কিছু একটি রিডারের কাছে অজানা পার্ট: অপরিবর্তিত রেখে দেওয়া হয় এবং skipped-এ গণনা করা হয়।

রেফারেন্স