Tier 1 · Blog post draft
Big launches. Feature flags flipping on, new top-level routes, breaking API additions. Lands as a draft blog post with hero copy, body, and a screenshot — operator polishes the voice.
This is the technical reference for how the changelog mechanic works — what makes an entry, how tiers are scored, what the schema looks like, how you override defaults. For the value-prop view of the same feature, see Blog & Changelog.
Quill grades every merged PR by impact. Three signals matter most: the conventional-commit prefix, the files touched, and any explicit override labels you've taught Quill to respect. The score determines surface placement.
Big launches. Feature flags flipping on, new top-level routes, breaking API additions. Lands as a draft blog post with hero copy, body, and a screenshot — operator polishes the voice.
User-visible changes that don't merit a launch post. Bug fixes customers care about, UI polish, small new features. Single paragraph, dated to merge time.
Internal refactors, test changes, CI tweaks, documentation updates. Don't ship to public surfaces. Still searchable internally if your team wants a full history.
Quill maps the prefix on your PR title to a user-facing category. Internal prefixes default to silent. The mapping is configurable per workspace.
| prefix | category | default tier |
|---|---|---|
| feat | feature | tier 1 or 2 (by diff size) |
| fix | fix | tier 2 |
| polish | improvement | tier 2 |
| perf | improvement | tier 2 |
| chore · refactor · test · docs · build · ci · style | — | silent (tier 3) |
Each entry stays editable in the portal after Quill drafts it. The shape is intentionally small — readers want titles, summaries, and dates; the operator can always toggle "what changed" to surface the files-touched list. Most changelogs hide that; Quill exposes it because the pipeline already has it.
type ReleaseNote = {
id: string; // pr-242, sha-abc1234
published_at: string; // ISO 8601, merge time
title: string; // operator-editable
summary: string; // short paragraph, editable
highlights?: string[]; // curated bullets for tier 1
category: "feature" | "fix" | "improvement" | "security";
files_changed: string[]; // surfaced via "what changed"
source: {
pr_number?: number;
commit_sha: string;
author: string;
raw_title: string; // original PR title, preserved
};
status: "draft" | "published" | "skipped";
};Three ways to override Quill's tier scoring, in order of precedence:
/changelog on your docs site. Reverse-chronological, paginated, filterable by category. Tier 1 entries get prominent treatment with their full body.
Auto-generated RSS at /changelog/rss.xml, OpenGraph image per entry, sitemap inclusion. Subscribers get notified without you toggling a switch.
Each publish fires article.published with surface: "changelog". Fan out into Slack, your in-product changelog widget, anything you want. See webhooks.