A project is a folder of files that lives on the server. Everything in the lab — runs, shares, Copilot conversations — hangs off one.
Projects
- Create:
⌘⇧P→ New project…, or the project button in the title bar. Three templates: Bell state (bell.qasm+main.py+ README), GHZ + noise comparison and Empty project. Every template ships at least one.qasm— that is what the Run rail can submit without Python. - Switch:
⌘Oopens the project switcher — type to filter, Enter opens. The same list lives behind the project name in the title bar and in the Explorer header. - Rename / delete: from the switcher's row buttons, or
⌘⇧P→ Rename this project…. Deleting a project does not touch runs you already submitted; they belong to your account. - The lab remembers the last project you had open (and honours
?project=<id>in the URL).
Files
- New file: the
+in the Explorer header, the row button on a folder, right-click, or⌘⇧P→ New file…. Type a slash to put it in a folder:src/ansatz.py. - New folder: the folder-plus button. A folder shows up right away and becomes part of the project when its first file is saved — folders are derived from paths, not stored on their own.
- Rename / delete: hover or focus a row for its buttons, or right-click. Renaming a folder moves everything under it; deleting one deletes everything in it (the dialog says how many files).
- File types the lab understands:
.qasm(Run rail + circuit builder),.py(browser kernel),.ipynb(notebook view),.md/.json/.txt(plain editor).
Saving — you mostly don't
Edits autosave 1.2 s after you stop typing. Leaving a tab or closing one is a save point. ⌘S saves everything now. The title bar shows Saved / Unsaved / Saving… / Conflict / Not saved for the active file, and the status bar counts unsaved files.
A Conflict means the file changed somewhere else (another tab, another device) while you were editing — the bar above the editor offers Use theirs or Keep mine. A save error offers Retry save.
Find and replace
The Search rail (⌘⇧F) covers every file in this project, unsaved edits included. Toggles: Aa case, ab| whole word, .\* regex — $1 in the replacement is a capture group. The chevron opens the replace box.
Replace in this file and Replace all preview first: which files change and how many matches in each. Nothing is written until you confirm. The write is the ordinary save path, one file at a time, and it stops at the first failure and names what was saved and what was not.
Problems
The dock's Problems tab (⌘⇧M) says what will not parse before you press Run — .qasm through the circuit parser, .py through Python's compiler (it parses, it never runs your file), .ipynb as notebook JSON. Click a row to jump there; it re-checks after you stop typing. It is a syntax check: it cannot tell you the program is correct, and while the kernel is cold it says .py files are unchecked rather than showing a clean bill.
Tabs
Drag to reorder, middle-click to close, right-click for Close / Close others / Close to the right / Close saved. A dot instead of ✕ means unsaved.
Related: Sharing & GitHub · Keyboard shortcuts