# Files and projects

> The Explorer, uploading and downloading, saving to Codevre, sharing, templates and cloning.

Last updated: October 17, 2026
Source: https://codevre.com/docs/ide/files-and-projects

## The Explorer

The Explorer (Ctrl+Shift+E) shows your project. It works like VS Code's:

- **Click** a file to open it, a folder to expand it. **Ctrl/Cmd+click** adds to the selection, **Shift+click** selects a range, **Ctrl/Cmd+A** selects all visible rows.
- **Drag** files and folders to move them. Hover over a closed folder for a moment while dragging to open it. Drop on empty space to move to the root.
- **Drag files in from your computer** to upload them into the folder you drop on.
- **F2** renames, **Delete** deletes, **Ctrl/Cmd+C** and **Ctrl/Cmd+V** copy and paste (copies are named `name copy.ext`, `name copy 2.ext`), **Shift+Alt+C** copies paths.
- Arrow keys, Page Up/Down, Home and End move the selection; Right and Left expand and collapse.
- Expanded folders stick to the top as you scroll through them. Click a sticky folder to collapse it.

The tree is fast on big projects: folders are read only when you open them, and only visible rows are drawn. It also notices files created outside the editor, e.g. by `npm install`, a build or `git pull`.

Right-click a file or folder, or use the **⋯** button on a row, for more: New File/Folder, Rename, Delete, Copy Path, Copy Relative Path, Download, Upload File(s)/Folder into it, Preview in VRE (HTML files), and for the `.codevre` folder, **Create settings.json** and **Create tasks.json**.

Deleting asks for confirmation ("This can't be undone"). Check **Do not ask me again** to skip it in future.

### Hidden files

`files.exclude` hides files from the Explorer and Search. The default hides `**/.git`. Set `"**/.git": false` to show it again. Workspace and User values are merged key by key:

```jsonc
// .codevre/settings.json
{
  "files.exclude": { "**/node_modules": true, "**/dist": true }
}
```

## Explorer markers

| Marker | Meaning |
|---|---|
| Green dot | New file, not saved to Codevre yet |
| Orange dot | Modified, not saved to Codevre |
| Faded name | Never saved to Codevre (e.g. `node_modules`), regenerated instead |
| **U** | Git: untracked |
| **A** | Git: added (staged new file) |
| **M** | Git: modified |
| **D** | Git: deleted |
| **C** | Git: merge conflict |

Folders take the strongest marker inside them. The Explorer icon in the activity bar shows how many files aren't saved to Codevre.

## Saving

There are two separate steps:

1. **Editor → runtime (automatic).** About 500 ms after you stop typing, the tab is written to the runtime's file system. The terminal, the preview and the Agent see it right away.
2. **Runtime → your Codevre account (Ctrl+S).** Nothing is uploaded until you save. **There's no cloud autosave.** Press Ctrl+S, click the cloud item in the status bar, or use **File ▸ Save**. **Save As** (Ctrl+Shift+S) saves a new copy. You need to be signed in.

The status bar shows the state: **Not saved** (this workspace isn't a project yet), **3 unsaved** (hover for modified/new/deleted counts), **Saving 12/40…** or **Saved** (with how long ago).

### How a save works

- **Only changed files are uploaded.** Codevre keeps a hash of every file as last saved, and uploads files that are new or changed. Files you deleted are removed from the cloud copy after the save succeeds.
- Uploads run 12 at a time, largest first. Files that are uploading shimmer in the Explorer, and you can't rename, move or delete them until they're done.
- **Slow uploads:** if a file makes no progress for 15 seconds, you can **Keep waiting** or **Skip this file and save the rest**. A skipped file keeps its previous saved copy, stays marked as changed, and uploads with your next save.
- A save waits for any running Source Control operation, so `.git` is captured consistently.
- After saving: *Saved "my-project" (3 uploaded, 1 removed, 2 AI chats)*.

### Safety checks

Codevre stops before a save could lose work:

- **Saved somewhere else.** If the project was saved from another tab or device since you opened it, you're told when, and asked before you **Overwrite** that version. There's no live sync or merging between tabs, so this warning is your cue to check.
- **Mass deletion.** If a save would remove most of the project's files (at least 5, and at least half), you're asked first. That usually means the workspace was reset; reopen the project instead.
- **The runtime isn't responding.** If the files can't be listed, nothing is saved and the saved project is untouched.
- **Still opening.** You can't save until every file of a project you just opened has downloaded.

### Limits

| Limit | Value |
|---|---|
| Projects | Set by your plan (the free plan includes 25 IDE projects). Only IDE projects you own count. Fewer than 5 slots left shows a warning |
| Files per project | A project's file list has to fit in one database record of about 1 MB. In practice that's a few thousand files, fewer with long paths. If it doesn't fit, nothing is changed and you're asked to exclude folders such as generated output |
| Description | 500 characters |
| Tags | 12, each up to 32 characters |
| Saved Agent chats | Latest 20, about 250 KB |
| Terminal history | Last 300 commands |

There's no per-file size limit, but big files take longer to upload, and very large files are slow in the editor.

### What is saved

| Saved | Not saved |
|---|---|
| All project files | `node_modules`, at any depth |
| `.git` (history, branches, remote) | `.npm`, `.cache`, `.DS_Store` |
| The IDE layout (dock, open tabs, DevTools) | Running processes and servers |
| Agent chats and terminal history | Downloads offered by the Agent |

### Saving makes previews faster

Until you save, large files (images and other binaries, and text files over 256 KB) exist only in your tab, and the preview gets their bytes from the editor. Once saved, the preview loads them straight from storage. If you have 10 MB or more of such files in an unsaved workspace, Codevre suggests saving once.

## Opening a project

**Open Project…** (Ctrl+O), **File ▸ Open Recent**, or a link with `?project=<id>`.

- If the workspace already has files, you're asked first, with a warning if any changes aren't saved to Codevre.
- **Fast open:** the workbench appears as soon as the file list arrives, and files stream in, largest first. Files your saved layout opens come first, and opening a file moves it to the front of the queue.
- While files download, they shimmer in the Explorer, the terminal holds input, and Save is disabled. If you create or upload a file before its download arrives, your copy wins.
- Files that fail to download stay in the cloud copy. A later save never deletes them.
- With no saved layout, the editor opens `index.html`, another HTML file, or the README.
- The tab title becomes "*name* — Codevre IDE", and the URL keeps `?project=<id>` so you can bookmark it.

## Projects

The **Projects** tool lists everything you've saved.

- **All projects**, **Recent** (the last 15 opened in this browser, including other people's) and **Groups**.
- **Search** by name, tag or owner. It matches the start of words and tolerates small typos.
- **List or grid** view. Projects are sorted by last modified, 30 at a time with infinite scroll.
- Each project shows its cover or a tech icon, visibility, file count and last change. Badges mark **Editor** projects, forks, templates and the **Current** project.
- **⋯ menu:** Open, Copy Link, Visibility, Add/Move to Group, and for your own projects **Rename…** (F2) and **Delete…** (Delete). To duplicate a project, open it and use **Save As**.
- **Multi-select** with checkboxes, Ctrl/Cmd+click, Shift+click or Ctrl+A to move or delete several at once.
- **Groups** organize projects. Deleting a group never deletes its projects.
- **Deleting a project** permanently removes it and its files from Codevre. If it's open, its files stay in your workspace, unlinked.

Other ways to manage the current project:

- **Close Folder** returns to an empty workspace.
- **Rename Project…** (right-click the Explorer root) renames the saved project too, if it's yours.

### Codevre Editor projects

Projects made in the original Codevre Editor appear here with an **Editor** badge and can be opened in the IDE. Saving over one converts it into an IDE project: it counts toward your IDE limit and no longer shows in the Editor. You're asked first. Use **Save As** to keep the Editor version, or **Open in Codevre Editor** from its menu.

### Someone else's project

You can open public and unlisted projects that belong to other people. Saving one makes **your own copy**: it's named *name*-fork, is private, and is marked as a fork. The copy includes the original's Agent chats but not its terminal history. You can't rename, delete or group projects you don't own.

## Project settings

**Project Settings…** (right-click the Explorer root), **File ▸ Publish…**, or **Settings ▸ Project**:

| Field | Notes |
|---|---|
| Visibility | Private, Unlisted or Public |
| Project Name | Required, up to 120 characters |
| Description | Up to 500 characters |
| Tags | Comma-separated, up to 12 |
| Cover Image | An image file saved in the project (png, jpg, gif, webp, avif, bmp, svg) |
| Project Link | Copy or open it |

These save immediately, without a full project save, and they don't trigger the "saved somewhere else" warning. If the cover image is deleted, the first image in the project becomes the cover on the next save.

### Sharing and visibility

| Visibility | Who can open it |
|---|---|
| Private | Only you. The link doesn't work for others |
| Public (unlisted) | Anyone with the link |
| Public | Anyone; it can appear publicly |

Change it from **File ▸ Share**, the Projects tool, or Project Settings. **Copy Project Link** copies a `?project=<id>` link. **Save As** copies always start private.

Everything saved with the project follows its visibility, including Agent chats and `.env` files. Don't put API keys or other secrets in a project you share. See [Tokens and secrets](tokens-and-secrets.md).

### Cover images

The camera button in the Browser saves a screenshot of the visible preview as `cover.png`, or `cover (1).png` if one already exists, with a button to replace the old one. Then pick it as the cover in Project Settings.

## Uploading

Use **File ▸ Open File… / Open Folder…**, the Explorer's **Upload File(s)… / Upload Folder…**, or drag and drop.

- Upload a folder into an **empty** workspace and it becomes the project. Its contents become the root, its name becomes the project name, and its HTML entry opens in the preview.
- Otherwise the folder is added as a folder.
- When a name already exists you choose **Merge** (folders), **Replace**, **Keep Both** (`name (1)`) or **Skip**, optionally for all remaining conflicts.
- Progress shows in a card (with Cancel) and the status bar. Failed files can be retried.
- The folder picker can't upload empty folders; drag and drop can.

## Downloading

- **Download File** saves one file.
- Downloading a folder gives you `<folder>.zip`.
- **Download Project** gives you `<project>.zip` without `node_modules`, `.svelte-kit`, `dist` and `.cache`. `.git` is included.
- A multi-selection downloads as `<project>-N-items.zip`.

## Templates

**File ▸ New from Template…** or the **Templates** tool. Starters include HTML, CSS and JS; Three.js; React with esbuild; Node.js; plus creative-coding sketches. Link to one with `https://codevre.com/ide?template=<id>`.

Templates add a `.codevre/settings.json` (and sometimes `.codevre/tasks.json`) so the project previews or starts itself. They never overwrite an existing settings file.

## Cloning a repository

**Welcome ▸ Clone Git repository…** types `git clone ` into a terminal. Clone into the project root and the repository becomes the project:

- The project is renamed after the repository.
- If the current saved project already had files, the clone is detached from it, so the next Ctrl+S saves it as a **new** project.
- The README, or an entry file like `index.html` or `package.json`, opens.
- Startup tasks in the repository's `.vscode/tasks.json` or `.codevre/tasks.json` are offered (see [Tasks](tasks.md)).

Private repositories need GitHub connected. See [GitHub](github.md).
