Skip to content

Rename the Go tool to snadcat - #8

Open
JEHoctor wants to merge 3 commits into
mainfrom
rename-tool
Open

JEHoctor wants to merge 3 commits into
mainfrom
rename-tool

Conversation

@JEHoctor

@JEHoctor JEHoctor commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

The Go tool becomes snadcat, in two commits:

  1. Tool rename — cmd/snadcat, root command, banner, root package, user-visible strings.
  2. Surface rename — so sandcat and snadcat can coexist on one machine: .snadcat/, ~/.config/snadcat/, SNADCAT_* (all seven variables), snadcat-cache-* volumes + label, # Snadcat gitignore block, and every path named in help/summary output.

Kept sandcat, deliberately: things internal to the generated tree and shared with the bash templates — .devcontainer/sandcat/, sandcat.env, in-container script names, the -sandbox project-name suffix, upstream's ghcr.io/virtuslab/sandcat-mitmproxy-* images. Those follow when the bash tree is removed. Coexistence is per machine, not per project: both tools write .devcontainer/ and derive the same compose project name.

Complexity pushed into the tests, not the tool. internal/testutil.Normalize maps snadcat's names back to sandcat's before each bash comparison; normalize_tree in difftest.sh renames paths and rewrites contents the same way. This is sound rather than heuristic: the shared templates never contain the string snadcat, so every occurrence in Go output provably came from the tool's own naming. Verified on a real run that the Go tree is renamed before normalization (.snadcat/, snadcat-cache-*, SNADCAT_MOUNT_GIT_READONLY honoured).

17/17, 33/33.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YKma722KMnAX3LcDLUYDQ5

JEHoctor and others added 2 commits September 22, 2026 00:36
The fork's tool and binary are snadcat from here on: cmd/snadcat, the
root command, the version banner, the root package, and every
user-visible string that names the tool or hints a command to run. The
bash CLI under cli/ keeps its name.

Deliberately unchanged: the on-disk and environment surface both tools
produce — .sandcat/, ~/.config/sandcat/, SANDCAT_* variables,
sandcat-cache-* volumes, the "# Sandcat" gitignore markers, and the
shared templates. The parity harness diffs exactly that surface against
the bash oracle, so it is renamed as its own step once the bash tree is
gone, ideally through the manifest so existing projects migrate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKma722KMnAX3LcDLUYDQ5
The two tools should coexist on one machine, and snadcat will diverge
(podman-only), so the surface is its own: .snadcat/, ~/.config/snadcat/,
SNADCAT_* variables, snadcat-cache-* volumes and their label, and the
"# Snadcat" gitignore block. Every user-visible path in help and the
init summary follows. What stays "sandcat" is internal to the generated
tree and shared with the bash templates (.devcontainer/sandcat/,
sandcat.env, in-container script names) until the bash tree goes.

The complexity lands in the tests rather than the tool: parity tests
normalize snadcat's names back to sandcat's before comparing, and the
harness renames paths and rewrites contents the same way. That is sound
rather than heuristic because the shared templates never contain the
string "snadcat", so every occurrence in Go output is the tool's own.
Fixtures that seed a project dir now seed both, one per tool.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKma722KMnAX3LcDLUYDQ5
Comment thread .gitignore Outdated
Comment thread .gitignore
The build-output comment still said cmd/sandcat. The local-settings
entry is upstream's, there because this repo is itself a project someone
may sandbox — so snadcat's path is added rather than substituted: both
tools exist in the tree and either can be run here. The sandcat line
goes when the bash CLI does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YKma722KMnAX3LcDLUYDQ5
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