Skip to content

Changelog links each author to github.com/<display name>, producing wrong or broken profile links #187

Closed

Description

@matt-edmondson

What's wrong

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:

public string FormattedEntry => $"{Subject} ([@{Author}](https://github.com/{Author}))";

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.

Activity

  1. matt-edmondson commented on Sep 28, 2026

    @matt-edmondson
    ContributorAuthor

    Triage

    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.


    Generated by Claude Code

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

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions