You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Changelog links each author to github.com/<display name>, producing wrong or broken profile links #187
GitService.GetCommitsAsync (KtsuBuild/Git/GitService.cs, format %h%x1f%s%x1f%aN) fills CommitInfo.Author from %aN, the author's git display name. CommitInfo.FormattedEntry (KtsuBuild/Git/CommitInfo.cs:28) then links that name as if it were a GitHub login:
The entry is written by ChangelogGenerator into CHANGELOG.md and LATEST_CHANGELOG.md, and from there into the NuGet PackageReleaseNotes and the GitHub release body. A display name is not a login, so the link only works when the two happen to be the same.
Concrete failures
Links to the wrong account. This repo's own CHANGELOG.md has 34 entries reading ([@Claude](https://github.com/Claude)) for commits authored as Claude <[email protected]>. They link to whoever owns the Claude username.
Display names with spaces. An author with user.name = "Jane Doe" gets [@Jane Doe](https://github.com/Jane Doe). CommonMark does not allow a space in a link destination, so GitHub and nuget.org render raw brackets instead of a link. The fallback identity Github Actions (MetadataService.cs, GitHubService.cs) hits the same problem.
Bot authors. Bot authors re-admitted by the multi-level filter, such as dependabot[bot], get https://github.com/dependabot[bot], which is a 404.
Suggested fix
Add %aE to the log format.
Derive the login from GitHub noreply addresses: <id>+<login>@users.noreply.github.com or <login>@users.noreply.github.com.
When no login can be derived, write the author as plain text with no link.
Optionally, when a token is available, resolve the login through the API (repos/{o}/{r}/commits/{sha} → .author.login).
Acceptance criteria
No changelog entry is written with a link destination that contains a space or [.
A noreply email maps to the correct login link.
Claude <[email protected]> renders as the plain name, without a link.
Priority: Medium. It's cosmetic but public. Wrong or broken author links go into CHANGELOG.md, the NuGet release notes and the GitHub release body of every repository built with KtsuBuild. That includes the @Claude links to an unrelated account, which are already in this repository's changelog.
Area / suggested assignment:KtsuBuild/Git/GitService.GetCommitsAsync (log format), CommitInfo.FormattedEntry and ChangelogGenerator.
Suggested next step: add %aE, derive logins from users.noreply.github.com addresses, and fall back to a plain-text name. Existing CHANGELOG.md entries are historical, so rewriting them is optional.
Activity
matt-edmondson commentedon Sep 28, 2026
Triage
CHANGELOG.md, the NuGet release notes and the GitHub release body of every repository built with KtsuBuild. That includes the@Claudelinks to an unrelated account, which are already in this repository's changelog.KtsuBuild/Git/GitService.GetCommitsAsync(log format),CommitInfo.FormattedEntryandChangelogGenerator.releasecan publish a different version than VERSION.md #185 (the "Github Actions" metadata author), which uses the same fallback identity.Suggested next step: add
%aE, derive logins fromusers.noreply.github.comaddresses, and fall back to a plain-text name. ExistingCHANGELOG.mdentries are historical, so rewriting them is optional.Generated by Claude Code