Working in a project

Projects

Give Code a folder. It reads, edits and runs commands there, and nowhere else.

A project is one folder Code works in. Every path is resolved with symlinks followed and then checked against that folder, so neither .. nor a link out of the tree gets anywhere else.

Draggy's Projects settings for weather-cli: its name, folder and project memory, the Accept edits permission chosen, and an empty list of always-allowed commands.

What is refused anyway

  • Folders such as .ssh, .aws, .gnupg, .kube
  • Files such as .env, id_rsa, .pem, .npmrc, credentials
  • Anything over 2 MB, and anything that is not text

Every change can be undone

A step that changed a file shows a diff and an Undo button. The previous bytes are kept in Draggy's own folder, so undo works in a folder that is not a repository. A deleted file went to the recycle bin.

The canvas

Click a file in the tree and it opens beside the conversation: a code file in edit mode with syntax highlighting, Markdown with an Edit and Preview toggle. The model's edits to the same file land in it as they happen.

Files in the sidebar shows the same tree full size, with rename, reveal and delete beside the editor.

Git

In a repository, a strip under the tree shows the branch, what is unpushed, and what changed, with a Diff button per file. The model reads the same through git_status and git_diff, with the repository's hooks, filters and external diff tools switched off. It never commits or fetches.

Project memory

An AGENTS.md at the top of the project is read into every turn. Put in it what someone new would need: how to run the tests, what not to touch, the house style. /init drafts one from what is already there.