Skip to content

rename: chatchain becomes iota - #7

Merged
joyqi merged 1 commit into
mainfrom
rename/iota
Aug 28, 2026
Merged

joyqi merged 1 commit into
mainfrom
rename/iota

Conversation

@joyqi

@joyqi joyqi commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Summary

The program is now iota (iota.sh). This PR renames everything and makes the upgrade invisible for existing users.

  • Go module github.com/joyqi/iota (go-installable at last — the old dotless chatchain path never was)
  • internal/app is the single place the name is spelled: app.Name, app.Home() (~/.iota), config stems; binary, title fallback, cmux status row, MCP client name, /export prefix, ${appHome} and the sessions/images/skills dirs all derive from it
  • First-run migration app.MigrateLegacy: ~/.chatchain → ~/.iota, ~/.chatchain.y(a)ml → ~/.iota.y(a)ml, once, idempotent, never overwrites, failure only warns, each move announced on stderr; a project-local .chatchain.yaml is read in place with a nudge
  • CHATCHAIN_DEBUG_REGION → IOTA_DEBUG_REGION
  • goreleaser: project_name/binary iota, formula iota.rb, homepage iota.sh; release.yml pkg.go.dev trigger fixed to a module path that exists
  • Claude Code plugin: iota-plugin/, iota@iota-marketplace, /iota:ask, 2.0.0
  • README "Migrating from ChatChain" section; landing page + regenerated og.png

Test plan

  • go vet ./... && go test -race ./... green
  • New tests: internal/app (migrate moves / never overwrites / no-op), config legacy lookup fallback
  • Sandbox-HOME smoke test with the real binary: first run prints the two iota: moved … lines, second run silent, project-local .chatchain.yaml still loads with the nudge

🤖 Generated with Claude Code

https://claude.ai/code/session_01QuR6qqLx5Vu1AttWRD2C5k

The program is now iota (iota.sh). The name lives in ONE place —
internal/app — and everything user-visible derives from it: the binary,
the module path (github.com/joyqi/iota, go-installable at last; the old
dotless path never was), the terminal-title fallback, the cmux status
row, the MCP client name, /export file prefixes, ${appHome}, and the
~/.iota directory.

Upgrading is invisible: on first run app.MigrateLegacy renames
~/.chatchain to ~/.iota and ~/.chatchain.y(a)ml to ~/.iota.y(a)ml once
(idempotent, never overwrites, a failure only warns), announcing each
move on stderr. A project-local .chatchain.yaml is still read in place
with a nudge — it sits in somebody's working tree and is never moved.

Also: CHATCHAIN_DEBUG_REGION is IOTA_DEBUG_REGION; goreleaser pins
project_name/binary iota and the tap formula iota.rb; the Claude Code
plugin is iota@iota-marketplace with /iota:ask (2.0.0); README gains a
"Migrating from ChatChain" section; the landing page and og.png carry
the new name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QuR6qqLx5Vu1AttWRD2C5k
@joyqi
joyqi merged commit 4515e00 into main Aug 28, 2026
1 check passed
@joyqi
joyqi deleted the rename/iota branch August 28, 2026 16:30
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