Skip to content

Repoint the tree at Sendspin/sendspin-cpp-cli - #20

Merged
chrisuthe merged 1 commit into
mainfrom
chrisuthe/task/repoint-the-tree-at-sendspin-sendspin-cpp-cli
Aug 20, 2026
Merged

Repoint the tree at Sendspin/sendspin-cpp-cli#20
chrisuthe merged 1 commit into
mainfrom
chrisuthe/task/repoint-the-tree-at-sendspin-sendspin-cpp-cli

Conversation

@chrisuthe

Copy link
Copy Markdown
Member

The repository moved from chrisuthe/sendspin-cpp-cli to Sendspin/sendspin-cpp-cli.
The old URLs redirect, so nothing was broken — but a tree that names its old home is a
tree that goes stale the day the redirect stops. This repoints it.

What changed

39 occurrences of the old owner across 12 files, mechanically:

  • README.md — the wiki link and the git clone line.
  • docs/wiki/ — every absolute link back into the repository, across all 9 pages plus
    _Sidebar.md. These are absolute rather than relative because the wiki is a separate
    git repository; wiki-internal links are relative and are untouched.
  • packaging/sendspin-cli.service.in — the Documentation= line. Verified through
    configure_file: the generated build/sendspin-cli.service carries the new URL.
  • scripts/get_started_linux.shreadonly REPO, which is what the release download,
    the "no releases yet" refusal and the build-from-source pointer are all built from.

Plus one prose correction, in docs/ROADMAP.md's macOS receipt bullet — see below.

What deliberately did not change

  • The pkg identifier io.github.chrisuthe.sendspin-cli stays, in all six places it
    appears — the declaration at scripts/build_macos_pkg.sh:73, the independent one at
    .github/workflows/build.yml:661 that exists so an edit to the script cannot go green
    unnoticed, and four mentions in operator-facing text. It is the primary key of an installer
    receipt on every machine that has run the .pkg; changing it does not rename anything, it
    mints a second receipt claiming the same paths and orphans the first. docs/ROADMAP.md
    already decided that on the record and named this exact move as the thing that would not
    shift it. If it is ever to change it wants its own PR and a migration story — a preinstall
    that forgets the old receipt, or an explicit decision to accept the orphan.

    What that bullet could not keep saying is that io.sendspin.* was not this project's to
    take. When the identifier was minted that was true; now the project is in the Sendspin org
    it is not, and the bullet framed the move as hypothetical besides. So it now records the
    thing that actually makes it worth reading: the cheaper option became available and was
    declined on purpose. The decision, the sendspin-cli-not-sendspin-cpp-cli reasoning and
    the ArduinoJson cross-reference are unchanged. scripts/build_macos_pkg.sh's own comment
    needed nothing — it makes no ownership claim, only the orphaning point, which still holds.

  • CMakeLists.txt:6's HOMEPAGE_URL is untouched because it is not a stale-owner URL.
    It already names the Sendspin org — it names the wrong repository, the sendspin-cpp
    library rather than this project, having been copied from the FetchContent declaration at
    line 78 with .git stripped. It predates the transfer, so fixing it here would smuggle a
    semantic change (which repository is this project's homepage) into a mechanical rename.
    Nothing consumes it — no include(CPack) anywhere in the tree, and the only
    configure_file substitutes just @SENDSPIN_CLI_INSTALLED_BINARY@ — so it is inert
    metadata today and a separate one-line correction.

  • Workflows needed nothing. wiki.yml builds every URL from $GITHUB_REPOSITORY, and
    release.yml from ${{ github.repository }}; no workflow hardcodes the owner. Confirmed
    by reading them rather than assumed.

Verification

  • Zero occurrences of chrisuthe/sendspin-cpp-cli remain in the tree. The only remaining
    chrisuthe string is the pkg identifier, deliberately.
  • All 11 distinct rewritten URLs return 200 against the new owner. (A twelfth is the literal
    .../releases/download/v$VERSION inside a shell snippet — a placeholder, not a link.)
  • scripts/get_started_linux.sh's no-releases path, run live against the new repo, which has
    published no releases: the refusal names Sendspin/sendspin-cpp-cli and points at
    https://github.com/Sendspin/sendspin-cpp-cli#build.
  • shellcheck scripts/*.sh clean — CI's own gate.
  • Build and tests: 347/347 pass. Worth knowing for anyone reproducing in a deep directory —
    ConfigMerge.AConfiguredControlSocketIsAbsolutizedUnderDaemonize fails when the build
    directory's absolute path is long enough to push the absolutized socket path past the
    103-byte sockaddr_un limit (105 bytes here). The same binary passes 347/347 from a short
    cwd. Nothing in this diff is C++ or CMake.

The wiki

The sync workflow ran on the current main (a55a67a) and published successfully. That
run is timestamped before the transfer, so it pushed to the wiki under the old name — which
GitHub carried across with the repository. Wikis are enabled on the new repo and the wiki
repository exists, so no owner toggle is needed here: merging this re-syncs the pages with
the corrected links on the next push to main.

The repository has moved out of a personal account and into the Sendspin org.
GitHub redirects the old URLs, so nothing is broken today -- but a tree that
names its old home is one that goes stale the day the redirect stops, and every
link here is a link somebody is expected to paste into a terminal.

Thirty-nine occurrences, mechanically: README's wiki link and clone line, every
absolute link back into the repository from all nine wiki pages and the sidebar,
the unit's Documentation= line, and get_started_linux.sh's REPO -- which is what
the release download, the "no releases yet" refusal and the build-from-source
pointer are all built from. The wiki pages reach repo content absolutely because
a wiki page has no relative path to README.md; their sibling-page links are
relative and stay that way.

Nothing else needed touching. wiki.yml builds every URL from GITHUB_REPOSITORY
and release.yml from github.repository, so no workflow names an owner. The
Documentation= line is a configure_file input rather than a document, so the
generated unit was checked rather than assumed.

The one non-mechanical change is docs/ROADMAP.md's receipt bullet. The macOS pkg
identifier io.github.chrisuthe.sendspin-cli deliberately does not move: it is the
primary key of an installer receipt on every machine that has run the .pkg, and
changing it mints a second receipt claiming the same paths rather than upgrading
the first. That decision stands, but its stated reason no longer did. The bullet
argued that io.sendspin.* was not this project's to take, which was true when the
identifier was minted and is not now, and it framed the move as hypothetical. It
now records what makes it worth reading: the cheaper option became available and
was declined on purpose. build_macos_pkg.sh's own comment needed nothing, making
no ownership claim -- only the orphaning point, which still holds.

CMakeLists.txt's HOMEPAGE_URL is left for its own change. It is not a stale-owner
URL: it already names the org and points at the sendspin-cpp library instead of
this project, copied from the FetchContent declaration below it with .git
stripped. Correcting which repository is this project's homepage is a semantic
change and does not belong in a rename.
@chrisuthe
chrisuthe marked this pull request as ready for review August 20, 2026 12:01
@chrisuthe
chrisuthe merged commit 1d56301 into main Aug 20, 2026
10 checks passed
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.

1 participant