सामग्री पर जाएँ
Blume is now publicly available.
Blume
हिन्दी
Esc
नेविगेटखोलें⌘Jप्रीव्यू
इस पेज पर

चेंजलॉग

रिलीज़ नोट्स को सामान्य कंटेंट फ़ाइलों के रूप में लिखें या उन्हें GitHub Releases से लें, और Blume अपने आप एक टाइमलाइन पेज और एक RSS फ़ीड बना देता है।

Blume बॉक्स से बाहर ही एक चेंजलॉग के साथ आता है। हर रिलीज़ को एक सामान्य कंटेंट फ़ाइल के रूप में लिखें, उसे type: changelog से चिह्नित करें, और Blume हर एंट्री को एक जनरेट किए गए टाइमलाइन पेज और एक RSS फ़ीड में इकट्ठा कर देता है — न कोई लेआउट बनाना है, न कोई सूची बनाए रखनी है। या फ़ाइलों को पूरी तरह छोड़ दें और अपना चेंजलॉग GitHub Releases से लें

एक एंट्री लिखें

एक चेंजलॉग एंट्री एक सामान्य .md या .mdx पेज होती है जिसके फ़्रंटमैटर में type: changelog होता है। परंपरा के अनुसार वे changelog/ के अंतर्गत रहती हैं, लेकिन जो मायने रखता है वह टाइप है — फ़ोल्डर नहीं:

---
title: v1.2.0
type: changelog
date: 2026-06-20
changelog:
  version: 1.2.0
  category: Features
---

A big batch of components landed this release — columns, frames, trees, and tooltips, plus code groups that render as proper language tabs.

- New `Accordion`, `Expandable`, and `Tooltip` components
- `CodeGroup` tabs with flush code blocks

हर एंट्री को एक date दें ताकि टाइमलाइन और फ़ीड नए से पुराने क्रम में सॉर्ट हों। बिना उद्धरण चिह्नों वाली YAML तिथि ठीक है — Blume उसे सामान्यीकृत कर देता है।

changelog ऑब्जेक्ट

वैकल्पिक changelog ऑब्जेक्ट टाइमलाइन और फ़ीड के लिए अधिक समृद्ध मेटाडेटा जोड़ता है:

PropType
changelog.version?string

रिलीज़ संस्करण। जब कोई टाइटल न हो तो v-उपसर्ग वाले लेबल पर वापस चला जाता है।

Typestring
changelog.category?string

एंट्री के बगल में एक टैग के रूप में दिखाया जाता है, जैसे Release, Features, Fixes।

Typestring
changelog.date?string

प्रकाशन तिथि। यह यहाँ या शीर्ष स्तर पर हो सकती है — दोनों टाइमलाइन और RSS फ़ीड को फ़ीड करते हैं।

Typestring

टाइमलाइन पेज

एक बार जब आपके पास कम से कम एक type: changelog एंट्री हो, तो Blume अपने आप एक /changelog पेज जनरेट कर देता है। यह एक केंद्रित, पूर्ण-चौड़ाई वाली टाइमलाइन के रूप में रेंडर होता है — बिना साइडबार या विषय-सूची के — जिसमें हर एंट्री नई से पुरानी क्रम में होती है, और उसके कंटेंट के बगल में बाएँ रेल में उसकी तिथि, लेबल और category टैग दिखाई देते हैं:

  • एंट्री का title उसका लेबल बन जाता है — या जब कोई टाइटल न हो तो v{version}। यह उस एंट्री के अपने पेज से लिंक करता है, इसलिए एक रिलीज़ टाइमलाइन में एक पंक्ति भी है और एक साझा करने योग्य परमालिंक भी।
  • category तिथि के बगल में एक टैग के रूप में रेंडर होता है।
  • ड्राफ़्ट और sidebar.hidden एंट्रियाँ छोड़ दी जाती हैं।

यह पेज केवल तभी दिखाई देता है जब /changelog रूट पर पहले से कुछ न हो। इसे अपने स्वयं के डिज़ाइन से बदलने के लिए, pages/changelog.astro पर एक कस्टम पेज जोड़ें — वह नियंत्रण ले लेता है और Blume डिफ़ॉल्ट टाइमलाइन जनरेट करना बंद कर देता है।

क्योंकि यह पेज लिखा नहीं बल्कि जनरेट किया जाता है, यह कंटेंट ट्री का हिस्सा नहीं होता — इसलिए /changelog की ओर इशारा करने वाला हेडर टैब इसके बजाय नवीनतम एंट्री पर पहुँच जाता है। टैब को एक href दें ताकि वह इंडेक्स पर ही पहुँचे:

navigation: {
  tabs: [
    { label: "Changelog", path: "/changelog", href: "/changelog" },
  ],
}

प्रमुख संस्करण के अनुसार समूहीकृत

जब आपके संस्करण semver का पालन करते हैं और एक से अधिक मेजर तक फैले होते हैं, तो Blume टाइमलाइन को प्रमुख संस्करण के अनुसार पेजिनेट करता है। केवल नवीनतम मेजर लाइन दिखाई जाती है, और नीचे एक Show N.x releases बटन होता है जो एक क्लिक में अगली सबसे पुरानी मेजर लाइन दिखाता है:

  • पहचान स्वचालित है — कोई कॉन्फ़िगरेशन नहीं। यह केवल तभी सक्रिय होती है जब सूचीबद्ध हर रिलीज़ major.minor.patch के रूप में पार्स होती हो और एक से अधिक मेजर हों; अन्यथा टाइमलाइन सपाट रहती है।
  • यह मोनोरेपो द्वारा प्रकाशित स्कोप्ड टैग्स को सहन करता है, इसलिए pkg@2.0.0 2.x के अंतर्गत समूहीकृत होता है और pkg@1.4.0 1.x के अंतर्गत।
  • यह प्रोग्रेसिव एन्हांसमेंट है: हर रिलीज़ अब भी पेज के HTML में (और उसकी RSS फ़ीड तथा सर्च इंडेक्स में) मौजूद रहती है, इसलिए बिना JavaScript वाले पाठक — और क्रॉलर — पूरा इतिहास देखते हैं। बटन पुराने मेजर को केवल तभी संक्षिप्त करता है जब पेज हाइड्रेट हो जाता है।

GitHub Releases से

एंट्रियाँ हाथ से लिखने के बजाय, अंतर्निर्मित github-releases स्रोत को किसी रेपो की ओर इंगित करें और हर रिलीज़ एक type: changelog एंट्री बन जाती है — वही टाइमलाइन और फ़ीड, सीधे उन रिलीज़ों से पोषित जिन्हें आप पहले से प्रकाशित करते हैं। Blume का अपना चेंजलॉग इसी तरह बना है:

content: {
  sources: [
    { type: "filesystem", root: "content" },
    {
      type: "github-releases",
      prefix: "changelog",
      owner: "acme",
      repo: "sdk",
    },
  ],
}

रिलीज़ का नाम टाइटल बन जाता है, उसका टैग changelog.version बन जाता है, और उसकी प्रकाशन तिथि टाइमलाइन को सॉर्ट करती है। हर रिलीज़ पेज को उसके नोट्स से सारांशित एक अद्वितीय मेटा विवरण भी मिलता है — मार्कडाउन हटाकर, सेक्शन हेडिंग्स और चेंजसेट कमिट-हैश उपसर्ग हटाकर, उस सर्च-स्निपेट लंबाई तक काटकर जिसकी जाँच blume audit करता है — बजाय साइट विवरण पर वापस जाने के। एक निजी रेपो GITHUB_TOKEN एनवायरनमेंट वेरिएबल से प्रमाणित होता है। हर विकल्प के लिए कंटेंट स्रोत देखें।

RSS फ़ीड

Blume /changelog/rss.xml पर एक चेंजलॉग फ़ीड भी बनाता है, जो date के अनुसार नए से पुराने क्रम में सॉर्ट होती है। फ़ीड्स को एक निरपेक्ष साइट URL की आवश्यकता होती है, इसलिए deployment.site सेट करें; तब Blume हर पेज पर एक <link rel="alternate"> टैग इंजेक्ट करता है ताकि पाठक इसे अपने आप खोज सकें।

फ़ीड डिफ़ॉल्ट रूप से चालू है। इसे seo.rss के अंतर्गत ट्यून करें:

seo: {
  rss: {
    enabled: true,
    types: ["blog", "changelog"],
    limit: 50,
  },
}

टाइमलाइन को रखते हुए फ़ीड छोड़ने के लिए rss.types से "changelog" हटा दें।

स्ट्रक्चर्ड डेटा

जब स्ट्रक्चर्ड डेटा चालू होता है, तो हर चेंजलॉग एंट्री को उसके विवरण और प्रकाशन तिथि के साथ एक schema.org TechArticle के रूप में उत्सर्जित किया जाता है, ताकि सर्च इंजन रिलीज़ों को तिथि-युक्त लेखों के रूप में इंडेक्स कर सकें।

क्या यह पेज सहायक था?