chore: rename Claudeman to Codeman

Full product rename across 109 files (~834 occurrences):
- Env vars: CLAUDEMAN_* → CODEMAN_*
- Data dirs: ~/.claudeman/ → ~/.codeman/, ~/claudeman-cases/ → ~/codeman-cases/
- tmux prefix: claudeman- → codeman-
- localStorage: claudeman-* → codeman-*
- Package/CLI: claudeman → codeman
- GitHub repo: Ark0N/Claudeman → Ark0N/Codeman
- systemd service: claudeman-web → codeman-web
- Class: ClaudemanApp → CodemanApp

Migration infrastructure for seamless transition:
- state-store.ts: auto-migrates data directories on startup
- tmux-manager.ts: dual-prefix detection (legacy claudeman- sessions)
- app.js: localStorage key migration (preserves old keys)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-02-26 16:44:34 +01:00
co-authored by Claude Opus 4.6
parent 3ccd22161c
commit 3795c45cc1
109 changed files with 711 additions and 679 deletions
+20 -20
View File
@@ -78,8 +78,8 @@ describe('TmuxManager (unit)', () => {
describe('getAttachArgs', () => {
it('should return attach-session args', () => {
const args = manager.getAttachArgs('claudeman-abc12345');
expect(args).toEqual(['attach-session', '-t', 'claudeman-abc12345']);
const args = manager.getAttachArgs('codeman-abc12345');
expect(args).toEqual(['attach-session', '-t', 'codeman-abc12345']);
});
});
@@ -111,7 +111,7 @@ describe('TmuxManager (unit)', () => {
beforeEach(() => {
manager.registerSession({
sessionId: 'test-id',
muxName: 'claudeman-1e571234',
muxName: 'codeman-1e571234',
pid: 12345,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -145,7 +145,7 @@ describe('TmuxManager (unit)', () => {
it('should return all registered sessions as alive', async () => {
manager.registerSession({
sessionId: 'alive-1',
muxName: 'claudeman-a11ce111',
muxName: 'codeman-a11ce111',
pid: 100,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -181,7 +181,7 @@ describe('TmuxManager (unit)', () => {
it('should remove session from memory in test mode', async () => {
manager.registerSession({
sessionId: 'kill-test',
muxName: 'claudeman-5e1f1111',
muxName: 'codeman-5e1f1111',
pid: 999,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -194,14 +194,14 @@ describe('TmuxManager (unit)', () => {
expect(manager.getSession('kill-test')).toBeUndefined();
});
it('should allow kill when session does NOT match CLAUDEMAN_MUX_NAME', async () => {
const originalEnv = process.env.CLAUDEMAN_MUX_NAME;
process.env.CLAUDEMAN_MUX_NAME = 'claudeman-0ther1111';
it('should allow kill when session does NOT match CODEMAN_MUX_NAME', async () => {
const originalEnv = process.env.CODEMAN_MUX_NAME;
process.env.CODEMAN_MUX_NAME = 'codeman-0ther1111';
try {
manager.registerSession({
sessionId: 'other-kill-test',
muxName: 'claudeman-d1ff1111',
muxName: 'codeman-d1ff1111',
pid: 888,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -219,21 +219,21 @@ describe('TmuxManager (unit)', () => {
expect(manager.getSession('other-kill-test')).toBeUndefined();
} finally {
if (originalEnv === undefined) {
delete process.env.CLAUDEMAN_MUX_NAME;
delete process.env.CODEMAN_MUX_NAME;
} else {
process.env.CLAUDEMAN_MUX_NAME = originalEnv;
process.env.CODEMAN_MUX_NAME = originalEnv;
}
}
});
it('should allow kill when CLAUDEMAN_MUX_NAME is not set', async () => {
const originalEnv = process.env.CLAUDEMAN_MUX_NAME;
delete process.env.CLAUDEMAN_MUX_NAME;
it('should allow kill when CODEMAN_MUX_NAME is not set', async () => {
const originalEnv = process.env.CODEMAN_MUX_NAME;
delete process.env.CODEMAN_MUX_NAME;
try {
manager.registerSession({
sessionId: 'no-env-test',
muxName: 'claudeman-aaa11111',
muxName: 'codeman-aaa11111',
pid: 777,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -247,9 +247,9 @@ describe('TmuxManager (unit)', () => {
expect(result).toBe(true);
} finally {
if (originalEnv === undefined) {
delete process.env.CLAUDEMAN_MUX_NAME;
delete process.env.CODEMAN_MUX_NAME;
} else {
process.env.CLAUDEMAN_MUX_NAME = originalEnv;
process.env.CODEMAN_MUX_NAME = originalEnv;
}
}
});
@@ -259,7 +259,7 @@ describe('TmuxManager (unit)', () => {
beforeEach(() => {
manager.registerSession({
sessionId: 'meta-test',
muxName: 'claudeman-ae1a1234',
muxName: 'codeman-ae1a1234',
pid: 300,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -308,7 +308,7 @@ describe('TmuxManager (unit)', () => {
it('should return all registered sessions', () => {
manager.registerSession({
sessionId: 's1',
muxName: 'claudeman-51111111',
muxName: 'codeman-51111111',
pid: 1,
createdAt: Date.now(),
workingDir: '/tmp',
@@ -317,7 +317,7 @@ describe('TmuxManager (unit)', () => {
});
manager.registerSession({
sessionId: 's2',
muxName: 'claudeman-52222222',
muxName: 'codeman-52222222',
pid: 2,
createdAt: Date.now(),
workingDir: '/tmp',