Changelog

A changelog that keeps up with every release you ship.

DevRelay turns each GitHub release into a changelog entry grouped the way readers scan it: Breaking and Deprecated first, then Added, Improved and Fixed. Written from the diff, checked against it, exported as Markdown.

fluxdb/go-sdk · Release v2.8.0GroundingRelease statusBrand

Go SDK v2.8.0: Add Stream() for incremental query results

What's new

  • Stream() returns *Rows backed by a server-side cursor.
  • Rows are yielded as the server produces them, so large result sets no longer need to be buffered in memory.
  • Reads pause when the consumer is slower than the network (backpressure).
  • Calling rows.Close() or cancelling ctx releases the cursor.

Example

rows, err := db.Stream(ctx, "SELECT * FROM events")
if err != nil {
	return err
}
defer rows.Close()
for rows.Next() {
	var e Event
	if err := rows.Scan(&e.ID, &e.Payload); err != nil {
		return err
	}
}
return rows.Err()
Unedited draft · FluxDB demo workspace
5 headings
Breaking first, Fixed last
Reads your conventions
commits and labels
Markdown
for any changelog page
Why changelogs fall behind

Your changelog is the first thing users check and the last thing anyone updates.

Everyone agrees it matters. Nobody has the afternoon.

A commit log isn't a changelog

“fix: handle nil in resolver” means something to the person who wrote it. Your users need to know what broke for them and whether it's fixed.

It's always a release behind

The entry waits for someone with time to read every merged pull request, so it gets written in a rush or not at all.

Everything looks equally important

A breaking change sits between two typo fixes. The user who needed to see it finds out in production.

How it works

From tagged release to a changelog entry you'd have written yourself.

It reads what shipped, sorts it, writes it and checks it. You approve and export.

01

Reads the release, not the commit log

For each release DevRelay collects the pull requests it ships, their diffs, linked issues and the release notes. The entry is written from that evidence, so it describes what users get rather than what the commits were called.
feat!: / BREAKING CHANGE / semver-major  → Breaking
deprecat* in title or label              → Deprecated
fix: / hotfix: / bug label               → Fixed
perf: / perf label                       → Improved
otherwise                                → classifier
02

Sorts each change by kind

Conventional Commits and labels decide first. When they don't say, the classifier scores whether the change is a bug fix, a performance change or a breaking change.
03

Keeps small things small

Low-priority changes go in the changelog and nowhere else, so a typo fix never becomes a tweet. Security-sensitive changes are held for a person to decide and never drafted automatically.
04

Checks the entry against the code

The same hard gates as every draft: no claims without evidence, no API names or versions the change doesn't contain, no beta features called GA. Numbers appear only when the evidence has them.
05

Writes a release announcement for big releases

When a high-priority change ships in a tagged release, you also get a longer announcement: what's new as a list, plus a code example taken from the change when there is one.
### v2.8.0

#### Added

- Stream() for incremental query results.
06

Exports as Markdown

Approve the entry and export it as Markdown for CHANGELOG.md, your docs site or your CMS. DevRelay doesn't commit to your repository or open pull requests yet.
Entry shape

One line per change, under the heading readers look for.

Breaking changes and deprecations go first, because they're the lines that cost your users an afternoon if they miss them. Each kind has its own line shape, so a fix says what users saw and a performance change only shows numbers the evidence actually has.

Heading, line shape, exampleIllustrative product
  • BreakingWhat changes. What to do.- --seed is removed; use --data-sample. Migration guide
  • DeprecatedWhat, removed in which version. The replacement.- --seed, removed in 4.0. Use --data-sample.
  • AddedThe capability: what you can do. A link.- Database branches: every PR gets its own database. Docs
  • ImprovedWhat, and how it's better. Numbers only if measured.- Branch creation: 41s → 6s (p95, 10 GB database).
  • FixedThe symptom users saw, now fixed.- acme branch create no longer hangs on databases over 50 GB.
Review

Every entry shows its evidence before you approve it.

Open a draft in the inbox to see the checks it passed and the evidence behind each claim.

app.devrelay.so/inbox
DevRelay inbox showing a draft with its hard-gate results and rubric scores
FAQ

Questions about the changelog.

01Does it write to CHANGELOG.md or open a pull request?

Not yet. You approve the entry in the inbox and export it as Markdown, then paste or commit it wherever your changelog lives. Export is on the DevRelay plan.

02Do we need to use Conventional Commits?

No. If your pull request titles follow Conventional Commits (feat!:, fix:, perf:) or you use labels like breaking, bug or perf, DevRelay reads them first. Without them, a classifier decides the change kind from the change itself.

03Is this the same as GitHub's auto-generated release notes?

No. GitHub's generator lists merged pull requests by title and author, grouped by labels you configure. DevRelay writes a line per change for the people using your product, from the diff and linked issues, and checks each line against that evidence.

04Will it put unreleased work in the changelog?

No. Changes are held until a GitHub release ships them, or until they merge into your release branch if the repo is set to branch mode.

05What does it use for the version heading?

The product and the version of the GitHub release that shipped the change, such as Go SDK v2.8.0.

06Can we change how entries are written?

Yes. The brand brain has a changelog instruction field for house rules, and DevRelay learns from the edits you make before approving.

Stop writing the changelog the night before the release.

Connect a repo. The next release comes with its changelog entry, grouped and checked, waiting for your yes.

No credit card · Nothing posts without your approval