The about text on a user or org profile moves out of the users/orgs
columns and into a file: profile/README.md or profile/README.org on
the default branch of <owner>/.gitbay.
Resolution is the wiki's order — .md, .org, .markdown — and there
are no store rows for the file: access derives from the parent
repository, so a private .gitbay keeps the about to its owner and the
admins. ProfileOut keeps about and about_format with their
meanings and gains about_path, so the API and the iOS client do not
move.
Writing follows the wiki: there is no about-specific write command.
profile set and org profile lose --about, --about-format and
--file; the file is written by a push or repo commit-file. The
settings page points at the file and offers to create the repository
that holds it. Links, description and website stay DB columns — moving
them buys nothing the columns do not already give.
A dot-repo rather than the GitHub-style <owner>/<owner> because
.gitbay is not single-purpose: later per-owner configuration goes
beside the about text. That needed two supporting changes:
- Repository names may start with a dot; owner names may not. A
repository whose name starts with a dot stays out of
exploreand off the profile's repository list, which is what the dot-repo buys over a visible single-purpose repository. repo commit-filewrites the first commit of a repository that has never been pushed to.CommitFileChangeresolved the branch and failed, so committing the first file into a fresh.gitbaywas impossible. An unresolvable branch is still an error wherever the repository already has refs, so a typo does not start an orphan branch.
Upgrade note. Run gitbayd admin migrate-profile-about after
deploying. Migration 0058 parks each owner's about text in a holding
table and drops the columns; that command writes it into a public
<owner>/.gitbay. A SQL migration cannot write git objects and
gitbayd migrates at startup, so the text has to survive the drop
somewhere. Until the command runs, profiles that had an about show none;
nothing is lost in between.
Spec docs/specs/2026-09-19-profile-about-repo-design.md, plan
docs/plans/2026-09-19-profile-about-repo.md.
Tests: policy name rules, gitutil root-commit behaviour, and e2e for
reading the about from the repository, format and privacy, the web
create-repo path, dot-repo listing exclusion, profile set refusing
--about, and the backfill being idempotent. Full internal suite and
the profile/explore/accounts/design/isolation/facts/readonly e2e tests
pass locally; CI runs the rest.
Closes #236