# Xyvenra Code project editor by Ouroboros

When a project is open, **Create a project file** adds a new supported text path (up to the 20-file context limit) to the local editor. The file stays in browser memory until saved. For a folder opened with the browser folder picker, Save asks for write access and creates the file (and missing nested folders) after checking that the target does not already exist. For ZIP, GitHub, or ordinary folder uploads, Save downloads the new file; it does not modify the imported source.

**Download project context ZIP** exports the complete files in the current context, using full local File/FileSystemHandle sources where available. It rejects shortened previews instead of silently exporting partial source and caps the archive at 20 files, 1 MB per file, and 5 MB total. It only packages the selected context, not the entire repository, and does not upload anything. Reopen the full project folder to export a file whose imported preview was shortened.

For a selected folder, first build **Index selected folder locally**, then choose **Export full indexed project ZIP** to download every current safe text file included in that bounded index (up to 2,000 files / 50 MB, 1 MB each). The export rechecks the file's size, modification time, supported path and credential scan against the index; re-index after any change. Dependencies, generated folders, binaries, lockfiles and common secret files are excluded. The ZIP is created in the browser, downloaded to the user's device, and never uploaded. This is a source snapshot, not a Git repository backup: `.git` metadata and ignored output are not included.

The hosted Code workspace includes a local project editor for safe text files. It uses CodeMirror with syntax highlighting for JavaScript and TypeScript, Python, HTML, CSS, JSON, Markdown, SQL, YAML, Java, Rust, and Go. Other supported text files open as plain text. The editor shows line numbers, highlights the current line, and marks the matching bracket near the cursor when the language provides bracket syntax.

The editor's CodeMirror completion menu works locally and is keyboard accessible. JavaScript/TypeScript, Python, HTML, CSS/SCSS, Markdown HTML tags, SQL keywords, and Go use the language packages' built-in completion sources; these sources do not load project-wide indexes or remote catalogs. JSON, YAML, Java, Rust, and plain-text modes use word completion from the currently open document only. The fallback omits words found on credential-assignment lines, known provider-token lines, and private-key blocks. This best-effort filter does not guarantee detection of every secret. JSON schema-aware suggestions, SQL table/schema suggestions, project-wide symbols, and completions from other files are not provided.


For JavaScript/TypeScript, Python, HTML, CSS/SCSS, JSON, Markdown, SQL, YAML, Java, Rust, and Go, the editor shows fold controls when the current syntax tree identifies a foldable region. Click the gutter control beside that region to fold or unfold it. Keyboard users can fold the current region with **Ctrl+Shift+[** and unfold it with **Ctrl+Shift+]** (on macOS, **Command+Option+[** and **Command+Option+]**). **Ctrl+Alt+[** folds all regions and **Ctrl+Alt+]** unfolds all regions. Plain-text and unsupported modes omit folding controls; folding is an editor view only and does not change the source.
The editor automatically inserts a matching closing bracket or quote when you type an opening one. Pressing Backspace between an automatically paired bracket or quote removes the pair together. When you type a language's configured block-opening or closing pattern, the editor adjusts indentation for that line. These behaviors run in the browser and do not modify files until you explicitly save.

Type a partial name to show filtered suggestions, or press **Ctrl+Space** to open the menu explicitly. Use **Up/Down** to move, **Enter** to accept, and **Escape** to close it. Completion does not call an AI provider, read another project file, or send a network request.

## Open and edit a file

1. Sign in at `https://xyvenra.com/app/code` and choose a local project folder, a source ZIP, or a public GitHub repository.
2. Select a file from the project list. It opens in the editor's tab bar; choose another file to open a second tab. Up to 20 files are included in one project context. Code reads the complete file in the current browser; files larger than 100 KB, secret-looking paths, and shortened imported previews are not editable. To edit a shortened import, choose the complete local project folder.
The **Project context** file navigator groups files by folder and filters by path or filename. It shows loaded files (up to 20) and can also show a local index for a folder opened with the folder picker. Choose **Index selected folder locally** to scan supported text paths and fingerprints on this device, up to 2,000 files / 50 MB and 12 directory levels. The index stores no source text; credential-looking paths, binary text, and files flagged by the best-effort credential scan are skipped. With recovery enabled, the path-and-fingerprint index is stored in the same browser-local record. The full project search reads current file contents live, rechecks for credentials, and returns at most 75 matches. Choosing an indexed file adds its live contents to the 20-file context; only files up to 100 KB can be edited, and adding a 21st context file replaces the oldest loaded file. A tree row does not mean its contents are loaded or sent to a provider.
3. Each open tab keeps its unsaved draft in page memory while you switch tabs. A dot marks tabs with unsaved changes. By default, drafts disappear after leaving or refreshing the page. In **Browser-local workspace recovery**, choose **Enable local recovery** to explicitly save the current project context, open editor drafts and tabs, selected file, message draft, and a local file index (paths and file fingerprints only) in this browser's IndexedDB. Recovery is limited to 20 context files / 78 KB of context text and 2 MB for the saved workspace; editor source and baseline drafts are each limited to 100 KB per file. Provider API keys and saved chats are excluded. This is local to the current browser profile and is not uploaded or synced to your Xyvenra account. Save or discard every dirty tab before replacing project context, generating an AI edit, or sending files to a provider.
4. Use **Turn off and clear saved copy** to stop recovery and clear its saved workspace while leaving the current page open. **Delete saved recovery data** removes the local database record. When you return, Code can restore text and editor drafts from that browser. A selected-folder access handle is reused only if the browser still reports read/write permission as granted; otherwise the text still restores and you must choose that folder again before writing to it. Unsupported browser storage, invalid saved data, or a workspace above its size limit is reported in the recovery panel; unsupported future schema versions are left untouched.
5. Choose **Save to folder** when the folder was opened with the browser folder picker. Code checks the on-disk snapshot again before writing and refuses to overwrite a file that changed elsewhere. For a ZIP, GitHub import, or browser directory upload, choose **Download file**; the original project is not changed.

When the editor has focus, press **Ctrl+S** (Windows/Linux) or **Command+S** (macOS) to run the same explicit save or download action for the active tab. The shortcut does not bypass the folder permission prompt, stale-file check, or download behavior.

## Find and replace in the open file

Use **Find in this file** to count literal matches in the currently open source. Matching is case-insensitive by default; select **Match case** for an exact-case search. Enter replacement text and choose **Replace all** to review a confirmation before the editor buffer changes. Search and replacement stay in the browser, do not call an AI provider, and do not write to disk until you explicitly save. The search does not span other project files.

## Search project context

**Search the whole project** scans locally when a folder is open with the browser folder picker. For ZIP, GitHub, and directory-upload imports, it searches the complete supported files already loaded into context (up to 20 files and 78 KB of text), because those imports do not grant access to the rest of the original project. The search returns up to 75 file-and-line matches. Unsupported, shortened, binary-looking, dependency, secret-path, and credential-flagged files are skipped. Results remain in this browser; choose **Open in editor** to open a loaded import or **Add file to context** to add a match found in the selected folder. Files are not sent to a model unless you separately send a request.

For `.json` files, choose **Validate JSON** to check syntax locally, or **Format JSON** to pretty-print valid JSON with two-space indentation. Formatting preserves each number token exactly, including integers or decimals larger than JavaScript's safe numeric range; it does not convert the document through JavaScript numbers. Invalid JSON reports an approximate one-based line and column and leaves the editor buffer unchanged. Formatting and validation stay in the browser and do not call a provider or write to disk; explicitly save if you want the formatted source written to the chosen folder or downloaded.

Select **Wrap long lines** to wrap wide source lines within the editor instead of scrolling horizontally. The choice is stored as a small, versioned browser-local preference and restored when you reopen Code in the same browser. It does not alter project files, sync to your Xyvenra account, or follow you to another browser/device. If browser storage is blocked, wrapping still works for the current visit but the choice cannot be retained; missing, malformed, or unsupported preference data safely defaults to wrapping off. Clearing this site's browser storage removes the saved choice.

Use **Go to line** to move the cursor and scroll to a one-based line number in the open file. Values above the file's final line move to the last line; empty or invalid values are ignored. This is local editor navigation and does not change source text.

AI-generated replacements still use the separate review and approval flow. The editor does not provide a remote terminal, Git operations in the hosted web workspace, shared workspaces, or a persistent code index. The separate desktop preview has local terminal and Git capabilities. Neither surface should be described as full Cursor parity.

The editor does not require an AI provider key. Chat, code generation, and model discovery do; provider usage is billed directly by that provider. Code does not store the provider key.
