सामग्री पर जाएँ
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 ऑब्जेक्ट इंडेक्स और फ़ीड के लिए अधिक समृद्ध मेटाडेटा जोड़ता है:

प्रॉपटाइप
changelog.version?string

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

टाइपstring
changelog.category?string

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

टाइपstring
changelog.date?string

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

टाइपstring

इंडेक्स पेज

एक बार जब आपके पास कम से कम एक type: changelog एंट्री हो, तो Blume अपने आप एक /changelog पेज जनरेट कर देता है। यह एक केंद्रित, पूर्ण-चौड़ाई वाला इंडेक्स है — बिना साइडबार या विषय-सूची के — जो हर रिलीज़ को एक पंक्ति के रूप में सूचीबद्ध करता है, नई से पुरानी क्रम में और वर्ष के अनुसार समूहीकृत, ताकि एक लंबा इतिहास भी एक छोटा पेज बना रहे (उस आकार से काफ़ी कम जिसे एक एजेंट एक ही कॉन्टेक्स्ट विंडो में पढ़ सकता है):

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

पेज का शीर्षक Changelog (अंग्रेज़ी में) होता है, जिसके नीचे एक पंक्ति का विवरण होता है। अपने कॉन्फ़िग में changelog के साथ अपना स्वयं का शीर्षक और विवरण सेट करें; ये पेज का <title>, मेटा विवरण और OG कार्ड भी बन जाते हैं, और /changelog.md पर उसके Markdown मिरर का शीर्ष भाग भी:

changelog: {
  title: "Release notes",
  description: "Every Acme SDK release, newest first.",
},

दोनों ही, एक हेडर टैब लेबल की तरह, लोकेल कोड से टेक्स्ट का एक मैप भी स्वीकार करते हैं। इंडेक्स डिफ़ॉल्ट लोकेल में रेंडर होता है, इसलिए यह उसी लोकेल की प्रविष्टि दिखाता है। यदि आप इनमें से किसी को सेट नहीं करते, तो वह अंतर्निर्मित टेक्स्ट ही बनाए रखता है, जिसे एक UI स्ट्रिंग ओवरराइड (i18n.ui के अंतर्गत changelog.title और changelog.description) बदल देता है।

यह पेज केवल तभी दिखाई देता है जब /changelog रूट पर पहले से कुछ न हो।

अपना स्वयं का इंडेक्स लिखना

सूची के ऊपर कुछ रखने के लिए — एक परिचय, फ़ीड का एक लिंक, आपकी रिलीज़ की आवृत्ति के बारे में एक नोट — पेज स्वयं लिखें और जहाँ सूची होनी चाहिए वहाँ <Changelog /> रखें। सूची पर नियंत्रण अब भी Blume का रहता है, इसलिए आपको केवल वे हिस्से लिखने होते हैं जिनके लिए उसमें कोई स्थान नहीं है:

---
title: Changelog
description: Every Acme SDK release, newest first.
mode: center
---

Every release, newest first. Subscribe to the [RSS feed](/changelog/rss.xml) to follow along.

<Changelog />

/changelog पर एक कंटेंट पेज उस रूट पर नियंत्रण ले लेता है, इसलिए जनरेट किया गया पेज हट जाता है और उसकी जगह आपका पेज रेंडर होता है। इसे अपनी एंट्रियों के बगल में changelog/index.mdx पर रखें, ताकि साइडबार का Changelog समूह उससे लिंक करे — फ़ोल्डर के बगल में एक changelog.mdx साइडबार में एक दूसरा Changelog आइटम जोड़ देता है। mode: center इसे जनरेट किए गए पेज का लेआउट देता है — न साइडबार, न विषय-सूची, एक चौड़ा केंद्रित कॉलम — और जनरेट किया गया पेज वही कंपोनेंट रेंडर करता है, इसलिए दोनों एक-दूसरे से अलग नहीं हो सकते। एजेंट सतहों (/changelog.md, llms-full.txt, MCP get_page, सर्च) पर सूची ठीक उसी तरह Markdown में बदल जाती है जैसे जनरेट किए गए पेज की सूची।

टैग चाहे कहीं भी हो, सूची में हमेशा डिफ़ॉल्ट लोकेल की एंट्रियाँ होती हैं — यही नियम हर वह सतह पहले से अपनाती है जो इसे प्रकाशित करती है, इसलिए एक अनुवादित पेज भी वही रिलीज़ सूचीबद्ध करता है, बजाय इसके कि वह इस बात पर असहमत हो कि कौन-सी रिलीज़ मौजूद हैं। इसकी तिथियाँ पेज की अपनी भाषा में दिखाई देती हैं।

पेज को पूरी तरह बदलना

ऐसे डिज़ाइन के लिए जिसे यह कंपोनेंट व्यक्त नहीं कर सकता, pages/changelog.astro पर एक कस्टम पेज जोड़ें — वह नियंत्रण ले लेता है और Blume डिफ़ॉल्ट इंडेक्स जनरेट करना बंद कर देता है। <Update> कंपोनेंट, जिससे पिछली टाइमलाइन बनाई गई थी, अब भी ऐसे कस्टम पेज के लिए उपलब्ध है जिसमें रिलीज़ नोट्स इनलाइन चाहिए। यह MDX कंपोनेंट्स में से एक नहीं है, इसलिए इसे .astro पेज में ही इम्पोर्ट करें: import Update from "blume/components/content/Update.astro";।

सूची स्वयं बनाने का अर्थ है वह सब दोहराना जो <Changelog /> करता है, जिसमें एक ऐसी चीज़ भी शामिल है जो चुपचाप विफल हो जाती है: किसी गैर-फ़ाइलसिस्टम स्रोत (जैसे GitHub Releases) की एंट्रियाँ एक समानांतर staged कलेक्शन के माध्यम से रेंडर होती हैं, इसलिए जो पेज केवल getCollection("docs") पढ़ता है, वह उनमें से किसी को भी सूचीबद्ध नहीं करता, और कोई चेतावनी भी नहीं देता। जब तक आपको वास्तव में अलग मार्कअप की आवश्यकता न हो, किसी कंटेंट पेज में <Changelog /> को प्राथमिकता दें।

GitHub Releases से

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

import { filesystem, githubReleases } from "blume/sources";

content: {
  sources: [
    filesystem({ root: "content" }),
    githubReleases({
      prefix: "changelog",
      owner: "acme",
      repo: "sdk",
    }),
  ],
}

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

एंट्रियों को साइडबार से बाहर रखें

चेंजलॉग एंट्रियाँ सामान्य पेज होती हैं, इसलिए जनरेट किया गया साइडबार उन्हें किसी भी अन्य पेज की तरह सूचीबद्ध करता है: एक changelog/ फ़ोल्डर, या prefix: "changelog" वाला एक githubReleases() स्रोत, एक Changelog समूह बन जाता है, जिसमें सबसे नई एंट्री सबसे ऊपर होती है और जो हर रिलीज़ के साथ बढ़ता जाता है। पिछले/अगले लिंक भी इसी से होकर गुज़रते हैं, इसलिए अंतिम डॉक्स पेज सबसे नई रिलीज़ की ओर ले जा सकता है।

एंट्रियों को डॉक्स साइडबार से बाहर रखने के लिए, चेंजलॉग को हेडर एक्शन के बजाय एक हेडर टैब से लिंक करें:

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

/changelog टैब इंडेक्स को खोलता है — किसी href की आवश्यकता नहीं — और changelog/ सेक्शन का स्वामी होता है: उसके बाहर के पेज रिलीज़ों को सूचीबद्ध करना बंद कर देते हैं, और उनके पिछले/अगले लिंक डॉक्स के बीच ही रहते हैं। किसी एंट्री का अपना पेज रिलीज़ सूची को अपने साइडबार के रूप में दिखाता है। इंडेक्स, RSS फ़ीड, llms.txt, साइटमैप और सर्च अब भी हर एंट्री को सूचीबद्ध करते हैं। टैब का path उस फ़ोल्डर या prefix से मेल खाना चाहिए जिसके अंतर्गत एंट्रियाँ रहती हैं। / पर Docs टैब वैकल्पिक है; यह पाठकों को वापस लौटने के लिए एक टैब देता है।

एंट्रियों पर sidebar.hidden सेट करने से ऐसा नहीं होता: यह उन्हें हर जगह की सूचियों से हटा देता है, इंडेक्स और फ़ीड सहित।

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 के रूप में उत्सर्जित किया जाता है, ताकि सर्च इंजन रिलीज़ों को तिथि-युक्त लेखों के रूप में इंडेक्स कर सकें।

अंतिम अपडेट

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