Files
Brandon ThomasandClaude Opus 5.5 4627084956 About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#8)
* About: contributors compiled in from contributors.json (grab bag + table, sortable, name toggle)

Adds the craftrules standard (standards/contributors.md) to SoundCraft: the About window gets
About · Contributors · Models tabs. contributors/contributors.json is generated by
craftrules/scripts/contributors.py and baked into the binary by crates/ui-egui/build.rs as
static tables. Each contributor line: @username, opt-in display/real name, PRs, commits,
lines +/−/Δ, binary assets +/−, first/last commit. Sortable by every column; alphabetical
ignores case and the leading @. Sort arrows use ⏶/⏷ (egui's icon font) since the system UI
font has no ▲/▼.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: self-submitted names in contributors/people.toml; AGENTS.md credit-yourself section

build.rs reads contributors/people.toml next to the generated contributors.json and shows a name only
for entries the generator verified as written by that person (craftrules standards/contributors.md).

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: regenerate (verified people.toml entries)

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 21:16:58 -04:00

2.7 KiB

Contributors in the About window

About ▸ Contributors credits everyone who contributed to SoundCraft, and About ▸ Models credits the AI models named in Co-Authored-By trailers. This follows the shared craftrules standard standards/contributors.md; this page is the local copy of the decision.

Decision

  • Two files, both compiled into the binary by the UI crate's build.rs (nothing is read from disk or the network at run time; the web build has them too):
  • Each contributor gets one line: GitHub username (always), display name (opt-in, or their synced GitHub profile name), real name (only if they told us), merged PRs, commits, lines added, lines deleted, binary assets added, binary assets removed, first and last commit date.
  • The list is shown as a grab bag (names flowing as text) or a table, in the same order. It sorts by name, PRs, commits, lines added, lines deleted, line delta, binary assets added/removed, first or last commit date. The name toggle cycles Username → Display name → Real name; a missing name falls back to @username. Alphabetical sorting is case-insensitive and ignores the @.

In SoundCraft

  • The About window is about() in crates/ui-egui/src/panels.rs (menu "About SoundCraft", command window.about).

Credit yourself

Add your entry to contributors/people.toml in a PR you commit yourself (every field optional):

[people.your-github-username]
real_name = "Your Name"
display_name = "Nickname"
sync_github_name = true   # use the name on your public GitHub profile as display name

or, with craftrules checked out next to craft-apps/:

python3 ../../craftrules/scripts/contributors.py --add-me . --real-name "Your Name" --sync-github-name

Names show after the next refresh: the script checks that each entry was committed by its own user (or by a maintainer with a consent_source). Delete your entry to remove your names.

Refreshing (maintainers)

python3 ../../craftrules/scripts/contributors.py .           # regenerate + verify; needs git, Python 3.11+, gh
python3 ../../craftrules/scripts/contributors.py --check .   # verify people.toml only

Commit the updated contributors/contributors.json. Git author names and emails are never recorded.