aboutsummaryrefslogtreecommitdiff
# YACE

**Yet Another Code Editor** — A lightweight, Tauri-based code editor built with CodeMirror 6, React, and TypeScript.

## Features

- Multi-tab editing with syntax highlighting for TypeScript, JavaScript, Rust, Python, HTML, CSS, JSON, Markdown
- File explorer with tree view, folder open/create
- Custom Tokyo Night syntax theme (soft, muted colors)
- Dark & light themes
- Command palette (`Ctrl+P`)
- Untitled file support — create and edit without a workspace folder
- Auto-save, word wrap, ruler, configurable font/tab size
- Custom title bar, sidebar, status bar, and context menus
- Resizable side panel

## Keyboard Shortcuts

| Shortcut | Action |
|----------|--------|
| `Ctrl+N` | New untitled file |
| `Ctrl+O` | Open file |
| `Ctrl+Shift+O` | Open folder |
| `Ctrl+S` | Save file |
| `Ctrl+W` | Close tab |
| `Ctrl+P` | Command palette |
| `Ctrl+B` | Toggle sidebar |
| `Ctrl+Tab` / `Ctrl+Shift+Tab` | Next / previous tab |

## Supported Languages

`.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.rs`, `.json`, `.md`, `.mdx`, `.html`, `.htm`, `.css`, `.py`

## Getting Started

```bash
# Install dependencies
npm install

# Run in browser (Vite dev server)
npm run dev

# Run as desktop app
npm run tauri dev
```

## Build

```bash
npm run build          # Type-check + Vite build
npm run tauri build    # Production desktop build
```

## Tech Stack

- **Frontend:** React 18, TypeScript, Zustand, Tailwind CSS, CodeMirror 6
- **Desktop:** Tauri 1.x, Rust, Tokio
- **Build:** Vite

## Settings

Configurable via the gear icon in the activity bar: font size, tab size, word wrap, line numbers, ruler, theme, auto-save.

## Architecture

```
┌──────────────────────────────┐
│ TitleBar                     │
├──────┬───────────────────────┤
│      │ TabsBar               │
│ Acti │ Breadcrumbs           │
│ vity ├───────────────────────┤
│ Bar  │ YaceEditor            │
│      │ (CodeMirror 6)        │
│      │                       │
│ Side │                       │
│ Panel│                       │
├──────┴───────────────────────┤
│ StatusBar                    │
└──────────────────────────────┘
```