Skip to content

fix(release): generate real release notes instead of "Initial release" - #118

Merged
A-x6 merged 2 commits into
devfrom
release-notes
Aug 1, 2026
Merged

A-x6 merged 2 commits into
devfrom
release-notes

Conversation

@A-x6

@A-x6 A-x6 commented Aug 1, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #117

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Every release body said "Initial release" because script/changelog.ts was a stub that hardcoded that string into UPCOMING_CHANGELOG.md, the file script/version.ts passes to gh release create --notes-file. The real generator (script/raw-changelog.ts) existed but was never invoked.

changelog.ts now runs the raw generator and reshapes its machine header into a human line:

const raw = await $`bun ${args}`.cwd(root).nothrow().text()
const since = lines.find((line) => line.startsWith("Last release: "))?.slice("Last release: ".length)
const notes = empty ? "No notable changes" : since ? `Changes since ${since}

${body}` : body
await Bun.write(file, notes + "
")

Also fixes note quality in raw-changelog.ts: the type filter now matches scoped prefixes (chore(scope):, test(scope):) plus the sync release versions commit, team matching is case-insensitive (TEAM_MEMBERS had Devflex-ai vs the real login DevFlex-AI, so the maintainer was thanked as a community contributor), and deepsource-autofix[bot] / dependabot[bot] are treated as bots.

How did you verify your code works?

Ran bun script/changelog.ts --from 1.19.0 --to v1.20.0 against the live repo: produces grouped Core/TUI/Desktop/SDK/Extensions sections with real commits, no chore/test/sync noise, and only genuine community contributors in the thanks section. bun script/changelog.ts --to HEAD (only docs/image commits since v1.20.0) correctly falls back to "No notable changes".

Screenshots / recordings

Not a UI change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

View with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is enabled.

@vercel

vercel Bot commented Aug 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
bolt-cli-app Ready Ready Preview Aug 1, 2026 3:52am

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@DevFlex-AI, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 37 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3abe5d52-0ff4-45dd-9a45-16d018fa094c

📥 Commits

Reviewing files that changed from the base of the PR and between ac70dad and 51fb887.

📒 Files selected for processing (3)
  • .github/TEAM_MEMBERS
  • script/changelog.ts
  • script/raw-changelog.ts

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

The following comment was made by an LLM, it may be inaccurate:

@deepsource-io

deepsource-io Bot commented Aug 1, 2026

Copy link
Copy Markdown

DeepSource Code Review

We reviewed changes in ac70dad...51fb887 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

Important

Some issues found as part of this review are outside of the diff in this pull request and aren't shown in the inline review comments due to GitHub's API limitations. You can see those issues on the DeepSource dashboard.

PR Report Card

Overall Grade  

Focus Area: Reliability
Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
JavaScript Aug 1, 2026 3:51a.m. Review ↗
Shell Aug 1, 2026 3:51a.m. Review ↗
Secrets Aug 1, 2026 3:51a.m. Review ↗
Docker Aug 1, 2026 3:51a.m. Review ↗
Python Aug 1, 2026 3:51a.m. Review ↗
CSS Aug 1, 2026 3:51a.m. Review ↗
Rust Aug 1, 2026 3:51a.m. Review ↗
Ruby Aug 1, 2026 3:51a.m. Review ↗
Swift Aug 1, 2026 3:51a.m. Review ↗
PHP Aug 1, 2026 3:51a.m. Review ↗
Lua Aug 1, 2026 3:51a.m. Review ↗
Java Aug 1, 2026 3:51a.m. Review ↗
Go Aug 1, 2026 3:51a.m. Review ↗
C & C++ Aug 1, 2026 3:51a.m. Review ↗
Ansible Aug 1, 2026 3:51a.m. Review ↗
Apex Aug 1, 2026 3:51a.m. Review ↗
Elixir Aug 1, 2026 3:51a.m. Review ↗
Groovy Aug 1, 2026 3:51a.m. Review ↗
Objective-C Aug 1, 2026 3:51a.m. Review ↗
PowerShell Aug 1, 2026 3:51a.m. Review ↗
Terraform Aug 1, 2026 3:51a.m. Review ↗
VB.NET Aug 1, 2026 3:51a.m. Review ↗
SQL Aug 1, 2026 3:51a.m. Review ↗
Scala Aug 1, 2026 3:51a.m. Review ↗
Perl Aug 1, 2026 3:51a.m. Review ↗
Kotlin Aug 1, 2026 3:51a.m. Review ↗
Helm Aug 1, 2026 3:51a.m. Review ↗
Erlang Aug 1, 2026 3:51a.m. Review ↗
Dart Aug 1, 2026 3:51a.m. Review ↗
C# Aug 1, 2026 3:51a.m. Review ↗

Important

AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.

@A-x6
A-x6 merged commit e36b983 into dev Aug 1, 2026
34 of 47 checks passed
Comment thread script/changelog.ts
},
})

const args = ["script/raw-changelog.ts", "--to", values.to!]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Forbidden non-null assertion


Using non-null assertions cancels out the benefits of strict null-checking, and introduces the possibility of runtime errors. Avoid non-null assertions unless absolutely necessary. If you still need to use one, write a skipcq comment to explain why it is safe.

Comment thread script/changelog.ts
const empty = !body || body === "No notable changes."
const notes = empty ? "No notable changes" : since ? `Changes since ${since}\n\n${body}` : body

await Bun.write(file, notes + "\n")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected string concatenation


In ES2015 (ES6), we can use template literals instead of string concatenation.

Comment thread script/raw-changelog.ts
Comment on lines +42 to +44
function internal(login: string | null) {
return !!login && team.includes(login.toLowerCase())
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexpected function declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable


It is considered a best practice to avoid 'polluting' the global scope with variables that are intended to be local to the script. Global variables created from a script can produce name collisions with global variables created from another script, which will usually lead to runtime errors or unexpected behavior. It is mostly useful for browser scripts.

Comment thread script/raw-changelog.ts
].map((x) => x.toLowerCase())

function internal(login: string | null) {
return !!login && team.includes(login.toLowerCase())

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use `Boolean(login)` instead


Prefer using explicit casts by calling Number, Boolean, or String over using operators like +, !! or "" +. This is considered best practice as it improves readability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Releases always say "Initial release" instead of real notes

1 participant