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

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

## एक एंट्री लिखें [#write-an-entry]

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

```mdx changelog/v1-2-0.mdx lineNumbers
---
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` ऑब्जेक्ट [#the-changelog-object]

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

| Prop | Type | Default | Description |
| - | - | - | - |
| `changelog.version?` | `string` | - | रिलीज़ संस्करण। जब कोई टाइटल न हो तो v-उपसर्ग वाले लेबल पर वापस चला जाता है। |
| `changelog.category?` | `string` | - | एंट्री के बगल में एक टैग के रूप में दिखाया जाता है, जैसे Release, Features, Fixes। |
| `changelog.date?` | `string` | - | प्रकाशन तिथि। यह यहाँ या शीर्ष स्तर पर हो सकती है — दोनों टाइमलाइन और RSS फ़ीड को फ़ीड करते हैं। |

## टाइमलाइन पेज [#the-timeline-page]

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

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

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

क्योंकि यह पेज लिखा नहीं बल्कि जनरेट किया जाता है, यह कंटेंट ट्री का हिस्सा नहीं होता — इसलिए `/changelog` की ओर इशारा करने वाला हेडर [टैब](/docs/content/navigation#tabs) इसके बजाय नवीनतम एंट्री पर पहुँच जाता है। टैब को एक `href` दें ताकि वह इंडेक्स पर ही पहुँचे:

```ts blume.config.ts
navigation: {
  tabs: [
    { label: "Changelog", path: "/changelog", href: "/changelog" },
  ],
}
```

### प्रमुख संस्करण के अनुसार समूहीकृत [#grouped-by-major-version]

जब आपके संस्करण [semver](https://semver.org) का पालन करते हैं और एक से अधिक मेजर तक फैले होते हैं, तो 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 से [#from-github-releases]

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

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

रिलीज़ का नाम टाइटल बन जाता है, उसका टैग `changelog.version` बन जाता है, और उसकी प्रकाशन तिथि टाइमलाइन को सॉर्ट करती है। हर रिलीज़ पेज को उसके नोट्स से सारांशित एक अद्वितीय मेटा विवरण भी मिलता है — मार्कडाउन हटाकर, सेक्शन हेडिंग्स और चेंजसेट कमिट-हैश उपसर्ग हटाकर, उस सर्च-स्निपेट लंबाई तक काटकर जिसकी जाँच [`blume audit`](/docs/reference/cli#auditing-the-built-site) करता है — बजाय साइट विवरण पर वापस जाने के। एक निजी रेपो `GITHUB_TOKEN` एनवायरनमेंट वेरिएबल से प्रमाणित होता है। हर विकल्प के लिए [कंटेंट स्रोत](/docs/content/sources#github-releases) देखें।

## RSS फ़ीड [#the-rss-feed]

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

फ़ीड डिफ़ॉल्ट रूप से चालू है। इसे [`seo.rss`](/docs/discoverability/rss) के अंतर्गत ट्यून करें:

```ts blume.config.ts lineNumbers
seo: {
  rss: {
    enabled: true,
    types: ["blog", "changelog"],
    limit: 50,
  },
}
```

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

## स्ट्रक्चर्ड डेटा [#structured-data]

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

**[फ़्रंटमैटर](/docs/reference/frontmatter#changelog)**

संपूर्ण चेंजलॉग फ़्रंटमैटर स्कीमा।

**[कस्टम पेज](/docs/advanced/custom-pages)**

जनरेट की गई टाइमलाइन को अपने स्वयं के लेआउट से बदलें।
