# Oleafly रिलीज़ करना

एक वर्शन टैग से पूरा ड्राफ़्ट बनाएँ, हर प्लेटफ़ॉर्म आर्टिफ़ैक्ट की समीक्षा करें, फिर सुरक्षित रिलीज़ वर्कफ़्लो से प्रकाशित करें।

Oleafly रिलीज़ के दो जानबूझकर रखे गए चरण हैं। एक वर्शन टैग ड्राफ़्ट बनाकर जाँचता है। कोई मेंटेनर उसी ड्राफ़्ट को अलग वर्कफ़्लो रन से प्रकाशित करता है।

`main` पर पुश करना CI चलाता है लेकिन रिलीज़ नहीं बनाता।

## ड्राफ़्ट बनाएँ

हाल की हुई `main` ब्रांच और हरी CI से शुरू करें।

```sh
git switch main
git pull --ff-only
./scripts/bump-version.sh 0.3.6
git commit -am "chore: release v0.3.6"
git push origin main
git tag v0.3.6
git push origin v0.3.6
```

टैग `.github/workflows/release.yml` चालू करता है। वह ये टार्गेट बनाता है:

| टार्गेट | इंस्टॉलर |
|---|---|
| macOS Apple Silicon | `.dmg` |
| Windows x64 | `.msi` और `-setup.exe` |
| Linux x64 | `.AppImage` और `.deb` |
| Linux ARM64 | `.AppImage` और `.deb` |

हर टार्गेट अपने पिन किए हुए कंपाइलर साइडकार फ़ेच करके सत्यापित करता है। फिर वर्कफ़्लो चारों अपडेटर फ़्रैगमेंट को एक `latest.json` में मर्ज करता है। ड्राफ़्ट तभी तैयार माना जाता है जब हर ज़रूरी इंस्टॉलर और अपडेटर एंट्री मौजूद हो।

## ड्राफ़्ट की समीक्षा करें

ड्राफ़्ट को [GitHub Releases पेज](https://github.com/Oleafly/Oleafly/releases) पर खोलें। रिलीज़ नोट्स, इंस्टॉलर नाम, checksum, सिग्नेचर और `latest.json` जाँचें। अधूरा ड्राफ़्ट प्रकाशित न करें।

## प्रकाशित करें

**Actions → Release → Run workflow** खोलें। वही टैग दर्ज करें और **Publish the release** चुनें।

प्रकाशन रन बिल्ड और आर्टिफ़ैक्ट जाँच दोहराता है। वह रिलीज़ कैंडिडेट का उपयोग करके Anthropic और Google के साथ लाइव कॉन्ट्रैक्ट टेस्ट भी चलाता है। आख़िरी जॉब तब तक प्रकाशित करने से मना करती है जब तक हर समर्थित प्लेटफ़ॉर्म और पूरा अपडेटर फ़ीड मौजूद न हो।

प्रकाशित करने से `latest.json` इंस्टॉल किए हुए ऐप्स को दिखने लगता है। इसे अपरिवर्तनीय प्रोडक्शन कार्रवाई मानें। अगर प्रकाशन रन विफल हो जाए, तो रिलीज़ को ड्राफ़्ट पर छोड़ दें, कारण ठीक करें, और उसे फिर से चलाएँ।

## वर्शन नंबर

Oleafly सिमेंटिक वर्शनिंग का पालन करता है:

- **Patch**, जैसे `0.3.5` से `0.3.6`, संगत फ़िक्स के लिए।
- **Minor**, जैसे `0.3.5` से `0.4.0`, संगत फ़ीचर के लिए।
- **Major**, जैसे `0.3.5` से `1.0.0`, ब्रेकिंग बदलावों या पहली स्टेबल रिलीज़ के लिए।

## महत्वपूर्ण जाँचें

- टैग `package.json`, `src-tauri/tauri.conf.json`, `src-tauri/Cargo.toml` और `src-tauri/Cargo.lock` से मेल खाना चाहिए। उन्हें अलग-अलग एडिट करने के बजाय `scripts/bump-version.sh` उपयोग करें।
- रिलीज़ नोट्स `CHANGELOG.md` के मिलते-जुलते वर्शन सेक्शन से आते हैं।
- प्रकाशित हुए टैग का पुनः उपयोग न करें। विफल ड्राफ़्ट के लिए ब्रांच ठीक करें और नया वर्शन बनाएँ, जब तक कि अप्रकाशित टैग बदलने का कोई स्पष्ट कारण न हो।
- macOS साइनिंग और नोटराइज़ेशन Apple रिलीज़ सीक्रेट्स उपयोग करते हैं। Windows Authenticode, Azure Artifact Signing उपयोग करता है जब उसके सीक्रेट्स कॉन्फ़िगर किए गए हों। अपडेटर सिग्नेचर अलग Tauri साइनिंग कुंजी उपयोग करते हैं।

अपडेटर साइनिंग और रोलबैक व्यवहार के लिए [ऑटो-अपडेट](/docs/engineering/updates/) देखें। यूज़र इंस्टॉलेशन निर्देश [डाउनलोड और इंस्टॉल करें](/docs/install/) में हैं।
