| 1 | # Diffinery for VS Code, Cursor and Windsurf |
| 2 | |
| 3 | Work with [Diffinery](https://diffinery.com) repositories from VS Code and the editors built on it (Cursor, |
| 4 | Windsurf, VSCodium and others), the way you do with GitHub's. |
| 5 | |
| 6 | - **Clone from Diffinery.** Run **Git: Clone** (or **Clone Repository** on the welcome page) and pick |
| 7 | **Clone from Diffinery**. You see your repositories and your organizations', most recently pushed first; |
| 8 | type to search everything you can read, or paste `owner/name`. |
| 9 | - **Sign in with your passkey.** The first time, choose your Diffinery (diffinery.com or your own server), the |
| 10 | editor opens it in your browser, you approve the connection, and you're back in the editor. Diffinery shows up |
| 11 | in the Accounts menu. Nothing to copy. |
| 12 | - **Push and pull without passwords.** Git uses your signed-in account for diffinery.com. The extension renews |
| 13 | its token before it expires and keeps the copy Git saved in your keychain current. |
| 14 | - **Publish to Diffinery.** Publishing a local repository that has no remote offers **Publish to Diffinery**, |
| 15 | under your account or one of your organizations, private or public. |
| 16 | |
| 17 | ## Install |
| 18 | |
| 19 | The extension comes from diffinery.com and keeps itself up to date from there. Install it with your editor's |
| 20 | command line, for example: |
| 21 | |
| 22 | ```sh |
| 23 | curl -fsSLo /tmp/diffinery.vsix https://diffinery.com/-/vscode/diffinery.vsix |
| 24 | code --install-extension /tmp/diffinery.vsix # cursor, windsurf or codium for those editors |
| 25 | ``` |
| 26 | |
| 27 | Or download [diffinery.vsix](https://diffinery.com/-/vscode/diffinery.vsix) and choose **Extensions → … → |
| 28 | Install from VSIX…** in the editor. |
| 29 | |
| 30 | The full guide, including JetBrains IDEs and the "Open in VS Code / Cursor" buttons on every repository, is at |
| 31 | [diffinery.com/docs/repositories/clone-in-your-editor](https://diffinery.com/docs/repositories/clone-in-your-editor). |
| 32 | |
| 33 | ## Self-hosted Diffinery |
| 34 | |
| 35 | The extension works with any Diffinery, not only diffinery.com: |
| 36 | |
| 37 | - **The first time you sign in** (from **Clone from Diffinery**, the Accounts menu or **Diffinery: Sign In**), the |
| 38 | extension asks which Diffinery you use. Choose **Use another Diffinery server…** and enter its address, such as |
| 39 | `git.example.com`. The extension checks that a Diffinery answers there and saves it in `diffinery.serverUrl`. |
| 40 | - **Diffinery: Use Another Server…** changes the server at any time. Each server keeps its own sign-in, so you can |
| 41 | switch back without signing in again. |
| 42 | - **Installed from your server** with `curl -fsSL https://git.example.com/install-editor | bash` (or its |
| 43 | `install-editor.ps1`), the extension asks on its next start whether to use that server: choose |
| 44 | **Use git.example.com**. The installer leaves the address in `~/.config/diffinery/editor-server` for this; it |
| 45 | doesn't edit the editor's settings. |
| 46 | |
| 47 | The extension then updates itself from your server too. |
| 48 | |
| 49 | ## Commands |
| 50 | |
| 51 | | Command | What it does | |
| 52 | |---|---| |
| 53 | | Diffinery: Clone Repository | Opens the Diffinery repository picker directly. | |
| 54 | | Diffinery: Sign In | Signs in through your browser. | |
| 55 | | Diffinery: Sign In with an Access Token | Uses a token from Settings → Access tokens instead (agents, browser-based editors). | |
| 56 | | Diffinery: Use Another Server… | Switches to a self-hosted Diffinery (or back to diffinery.com). | |
| 57 | | Diffinery: Sign Out | Signs out and disconnects the editor from your account. | |
| 58 | | Diffinery: Check for Extension Updates | Installs a newer build from the server, if there is one. | |
| 59 | |
| 60 | ## Settings |
| 61 | |
| 62 | | Setting | Default | | |
| 63 | |---|---|---| |
| 64 | | `diffinery.serverUrl` | `https://diffinery.com` | The Diffinery to use: set it to your server's address for a self-hosted Diffinery. | |
| 65 | | `diffinery.gitAuthentication` | `true` | Answer Git's password prompts for the server with your signed-in account. | |
| 66 | | `diffinery.checkForUpdates` | `true` | Check the server once a day for a newer build. | |