প্রকল্প সম্পর্কে

Zinnia হলো 7-Zip আর্কাইভ হ্যান্ডলিংয়ের জন্য একটি গ্রাফিক্যাল ফ্রন্ট এন্ড, যা Tauri দিয়ে তৈরি এবং Windows, macOS এবং Linux-এর জন্য ডিস্ট্রিবিউটেড। README-তে এটিকে একটি ডেস্কটপ আর্কাইভার হিসেবে উপস্থাপন করা হয়েছে যা কমান্ড লাইনের পরিবর্তে একটি নেটিভ GUI-এর মাধ্যমে পরিচালিত হয়, এবং এর প্যাকেজিং ও ইনস্টলারের লক্ষ্য হলো অপারেটিং সিস্টেম থেকেই আর্কাইভ অপারেশনগুলোকে সহজলভ্য করা। README-তে উল্লিখিত প্ল্যাটফর্ম সাপোর্ট: macOS ২৬ বা তার পরবর্তী সংস্করণ, যার একটি ইউনিভার্সাল বিল্ড Intel এবং Apple সিলিকন উভয় মেশিনে চলবে; Windows ১০ ভার্সন ২০ ০৪ (বিল্ড ১৯০৪১) বা তার পরবর্তী x64 অথবা ARM64; এবং Linux x64-এর জন্য Ubuntu ২৪.০৪+, Debian ১৩+ অথবা Fedora ৪৩+ (অথবা প্রয়োজনীয় WebKitGTK রানটাইম সহ সামঞ্জস্যপূর্ণ ডিস্ট্রিবিউশন)। পাবলিক লিনাক্স রিলিজগুলোতে x64 AppImage, DEB, RPM এবং সাইডলোডেড Flatpak বান্ডেল সরবরাহ করা হয়, তবে ARM64 AppImage/DEB/RPM শুধুমাত্র রিলিজের জন্য স্পষ্টভাবে বিল্ড করা হলেই প্রকাশিত হয় এবং Flatpak শুধুমাত্র x64-এ সীমাবদ্ধ থাকে। অপারেটিং সিস্টেম ইন্টিগ্রেশনের ওপর বিশেষ গুরুত্ব দেওয়া হয়েছে। প্যাকেজড বিল্ডগুলো সাধারণ আর্কাইভ ফাইল টাইপগুলো রেজিস্টার করে। Windows-এ, NSIS বিল্ডগুলো প্রতি-ব্যবহারকারীর জন্য Explorer ভার্ব হিসেবে "Open with Zinnia", "Extract with Zinnia" এবং "Compress with Zinnia" যোগ করে, যার মধ্যে Explorer-এর "Show more options"-এর মাধ্যমে অ্যাক্সেস করার সুযোগ থাকে। সাইন করা Windows NSIS বিল্ডগুলো একটি স্পার্স আইডেন্টিটি MSIX এবং zinnia_shell.dll-এর মাধ্যমে Windows ১১-এর মডার্ন কনটেক্সট মেনু রেজিস্টার করে, যা আর্কাইভের ওপর একটি Zinnia সাবমেনু এবং একটি টপ-লেভেল Extract এন্ট্রি প্রদান করে; একবার মডার্ন রেজিস্ট্রেশন সফল হলে স্ট্যাকিং এড়াতে ক্লাসিক ভার্বগুলো সরিয়ে ফেলা হয়, তবে প্যাকেজ রেজিস্ট্রেশন ব্যর্থ হলে সেগুলোই ফলব্যাক হিসেবে থাকে। README-তে উল্লেখ করা হয়েছে যে Zinnia একটি সাধারণ প্রতি-ব্যবহারকারী NSIS Win32 ইনস্টলেশন হিসেবে থাকে এবং MSIX কোনো Store/AppX অ্যাপ প্যাকেজ নয়, বরং এটি শুধুমাত্র প্যাকেজ আইডেন্টিটি প্রদান করে যাতে Explorer শেল DLL লোড করতে পারে। Linux-এ, deb, rpm এবং Flatpak বান্ডেলগুলোতে ডেস্কটপ Open, Extract এবং Compress অ্যাকশন অন্তর্ভুক্ত থাকে। macOS-এ, ব্যবহারকারীরা Finder-এর Open With/Get Info ডিফল্ট-অ্যাপ ফ্লো-এর মাধ্যমে Zinnia বেছে নিতে পারেন এবং আর্কাইভ লঞ্চগুলো একটি কুইক এক্সট্রাক্ট উইন্ডোতে পাঠানো হয়। প্যাকেজড বিল্ডগুলো Finder Sync কনটেক্সট-মেনু আইটেম এবং Finder Services-এর মাধ্যমে "Extract with Zinnia" এবং "Compress with Zinnia" সুবিধা প্রদান করে; Finder Sync শুধুমাত্র ডেস্কটপ, ডকুমেন্টস, ডাউনলোডস, মুভিস, মিউজিক, পিকচারস এবং বর্তমানে মাউন্ট করা ভলিউমগুলো মনিটর করে, অন্য জায়গার ফাইলের জন্য Finder Services ব্যবহারের পরামর্শ দেওয়া হয়েছে। ডেভলপমেন্ট নির্দেশাবলী একটি Tauri প্রজেক্টের জন্য প্রচলিত নিয়ম অনুযায়ী: npm install, npm run tauri:dev, এবং src-tauri/Cargo.toml-এর বিপরীতে cargo doc। সরাসরি Cargo কমান্ডগুলো কোনো আলাদা প্রস্তুতি ধাপ ছাড়াই কাজ করে কারণ Tauri বিল্ড স্ক্রিপ্ট নেটিভ বিল্ড চলার আগে ট্র্যাক করা অ্যাসেট থেকে ইগনোরড সাইডকার বাইনারিগুলো রিফ্রেশ করে। বিল্ড স্ক্রিপ্টগুলো প্ল্যাটফর্ম অনুযায়ী নামকরণ করা হয়েছে: build:win, build:mac:universal এবং এরপর build:mac:zip, build:linux (অথবা build:linux:x64), নেটিভ ARM64 এনভায়রনমেন্টের জন্য build:linux:arm64, এবং flatpak:bundle। GPG স্ক্রিপ্টের মাধ্যমে রিলিজ সাইনিং উপলব্ধ। README-তে আপডেট এবং রিলিজ প্রক্রিয়া বিস্তারিতভাবে নথিভুক্ত করা হয়েছে: আপডেটার src-tauri/tauri.conf.json-এ কনফিগার করা থাকে; CI লিনাক্স, উইন্ডোজ এবং ম্যাকওএস-এ টেস্ট এবং চেক চালায় কিন্তু কখনোই রিলিজ বাইনারি বিল্ড করে না, রিলিজ পাবলিশ করে না বা রিলিজ সাইনিং সিক্রেট ব্যবহার করে না। সাইন করা রিলিজগুলো ইচ্ছাকৃতভাবে এক্সপ্লিসিট রাখা হয়েছে, যেখানে প্ল্যাটফর্ম-নির্দিষ্ট রিলিজ স্ক্রিপ্টগুলো একই ভার্সনের একটি ড্রাফট GitHub রিলিজ-এ আপডেটার ম্যানিফেস্ট, আর্টিফ্যাক্ট, চেকসাম ফাইল এবং ডিটাচড সিগনেচারগুলো স্টেজ করে। বিটা কন্টিনিউয়েশন স্ক্রিপ্টগুলো একটি VM-এর বিটা ম্যানিফেস্টগুলোকে লেটেস্ট স্টেবল রিলিজ ফিডে অটো-সিঙ্ক করে, এমনকি যখন একটি ট্যাগ ড্রাফট হিসেবে থাকে তখনও, কারণ বিটা ক্লায়েন্টগুলো লাইভ ফিড পোল করে; রিকভারির জন্য একটি আলাদা সিঙ্ক স্ক্রিপ্ট রয়েছে। ড্রাফট এবং পাবলিশড রিলিজের জন্য ভেরিফিকেশন ধাপ দেওয়া হয়েছে, যা প্রত্যাশিত টার্গেট ম্যাট্রিক্স, ভার্সন এবং আপডেটার আর্টিফ্যাক্ট সিগনেচার ও চেকসাম পরীক্ষা করে। GitHub-এর সাময়িক আনট্যাগড ড্রাফট আইডেন্টিফায়ার হ্যান্ডলিং, নির্দিষ্ট কমিট, লকফাইল, প্ল্যাটফর্ম, আর্কিটেকচার এবং টুলচেইনের সাথে যুক্ত বিদ্যমান রিলিজ প্রিপারেশন সেশন পুনরায় শুরু করা এবং ভার্সন প্রপাগেশন স্ক্রিপ্ট (যা প্যাকেজ ভার্সনকে নেটিভ ম্যানিফেস্ট, চেঞ্জলগ ডাউনলোড URL এবং AppStream মেটাডেটাতে কপি করে) সম্পর্কে নির্দেশনা অন্তর্ভুক্ত করা হয়েছে। README-তে সতর্ক করা হয়েছে যে প্রতিটি প্ল্যাটফর্মের আর্টিফ্যাক্ট উপস্থিত থাকার এবং এর আপডেটার সিগনেচার ও চেকসাম যাচাই করার আগে রিলিজ ট্যাগ পুশ করা উচিত নয়। প্রজেক্টের অতিরিক্ত ডকুমেন্টেশন ARCHITECTURE.md, CONTRIBUTING.md এবং SECURITY.md-এর মাধ্যমে রেফারেন্স করা হয়েছে, সেই সাথে রিপোজিটরিতে Windows শেল এবং QA কনটেক্সট-মেনু নোটস দেওয়া হয়েছে।