Features
Everything Codetta puts in front of you, in detail. AI panel, Claude Code, SFTP, MCP, multi-workspace — and the small choices that make them feel right.
You: refactor the enrollment sweep
Now hook into contacts/actions.ts:
[🔍 read 6 files] [✦ edited actions.ts ×3]
Let me typecheck:
[➜ ran tsc → clean]
┌ Changes · 4 files · +120 −38 ──[Review]┐
└─────────────────────────────────────────┘
PreToolUse: Edit src/store.ts
└─ old_string: "setActiveWorkspace: async ..."
└─ new_string: "setActiveWorkspace: async (id) => {"
[✕ Deny] [✓ Allow this session]
[✓✓ Always allow Edit on .ts]
[✓✓ Always allow Edit] [✓ Allow once]
await fs.writeFile(path, content);
const link = lookupRemoteLink(wsId, path);
if (link?.autoPush) {
const session = getActiveSftp(wsId);
if (session?.profileId === link.profileId) {
invoke("sftp_write_file", {
args: { ...session.conn, path: link.remotePath, content },
}).then(() => toast("↥ Auto-pushed"));
}
}
📁 filesystem [↻ User] [+ Project]
⎇ git [+ User] [↻ Project]
🐙 github [+ User] [+ Project]
🐘 postgres [+ User] [+ Project]
🎭 puppeteer [+ User] [+ Project]
🗄 sqlite [+ User] [+ Project]
[
"Read",
"Bash:grep", "Bash:npm",
"Ext:.ts:Edit",
"Ext:.json:Read"
]