1+ <div align =" center " >
2+
13# Snowflake
24
3- A modern AI-powered code editor built with ** Tauri 2** (Rust) and ** React 19** (TypeScript). Features conversational AI, code editing, terminal, Git integration, and file watching.
5+ ** A modern AI-powered code editor built with Tauri 2 and React 19**
6+
7+ [ ![ CI] ( https://github.com/Recusive/Snowflake-V0/actions/workflows/ci.yml/badge.svg )] ( https://github.com/Recusive/Snowflake-V0/actions/workflows/ci.yml )
8+ [ ![ Tauri Build] ( https://github.com/Recusive/Snowflake-V0/actions/workflows/tauri-build.yml/badge.svg )] ( https://github.com/Recusive/Snowflake-V0/actions/workflows/tauri-build.yml )
9+ ![ Tauri] ( https://img.shields.io/badge/Tauri-2.0-24C8D8?logo=tauri&logoColor=white )
10+ ![ React] ( https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=black )
11+ ![ Rust] ( https://img.shields.io/badge/Rust-1.85-DEA584?logo=rust&logoColor=black )
12+ ![ TypeScript] ( https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript&logoColor=white )
13+
14+ [ Features] ( #features ) • [ Quick Start] ( #quick-start ) • [ Architecture] ( #architecture ) • [ Contributing] ( #contributing )
415
5- ![ Tauri] ( https://img.shields.io/badge/Tauri-2.0-blue?logo=tauri )
6- ![ React] ( https://img.shields.io/badge/React-19-blue?logo=react )
7- ![ Rust] ( https://img.shields.io/badge/Rust-1.85-orange?logo=rust )
8- ![ TypeScript] ( https://img.shields.io/badge/TypeScript-5.9-blue?logo=typescript )
9- ![ License] ( https://img.shields.io/badge/License-Private-red )
16+ </div >
1017
1118---
1219
1320## Features
1421
15- - ** AI Chat Interface** - Streaming responses with Claude AI, markdown rendering, code highlighting
16- - ** Code Editor** - CodeMirror 6 with syntax highlighting for 10+ languages
17- - ** Integrated Terminal** - Full terminal emulation with xterm.js and PTY support
18- - ** File Explorer** - Tree navigation with file watching and auto-refresh
19- - ** Git Integration** - Stage, commit, diff, branch, and log operations
20- - ** Tool Visualization** - Real-time display of AI tool execution
21- - ** Multi-Panel Layout** - Resizable panels for chat, files, editor, and terminal
22- - ** Cross-Platform** - macOS, Windows, and Linux support
22+ | Feature | Description |
23+ | ---------------------- | --------------------------------------------------------------------------- |
24+ | ** AI Chat** | Streaming responses with Claude AI, markdown rendering, syntax highlighting |
25+ | ** Code Editor** | CodeMirror 6 with 10+ language support and custom themes |
26+ | ** Terminal** | Full PTY terminal with xterm.js |
27+ | ** File Explorer** | Tree navigation with real-time file watching |
28+ | ** Git Integration** | Stage, commit, diff, branch, log operations |
29+ | ** Tool Visualization** | Watch AI execute tools in real-time |
30+ | ** Multi-Panel Layout** | Resizable IDE-style panels |
31+ | ** Cross-Platform** | macOS, Windows, Linux |
2332
2433---
2534
2635## Quick Start
2736
2837``` bash
29- # Install dependencies
38+ # Prerequisites: Node.js 22+, pnpm 9+, Rust 1.85+
39+
40+ # Clone and install
41+ git clone https://github.com/Recusive/Snowflake-V0.git
42+ cd Snowflake-V0
3043pnpm install
3144
32- # Start development (frontend + backend )
33- pnpm tauri dev
45+ # Run the app (opens desktop window with hot-reload )
46+ pnpm dev
3447```
3548
36- This opens the desktop app with hot-reload for both React and Rust.
49+ > ** Note:** First build compiles Rust and may take a few minutes. Subsequent starts are fast.
50+
51+ ---
52+
53+ ## Keyboard Shortcuts
54+
55+ | Shortcut | Action |
56+ | ---------------------- | --------------- |
57+ | ` Cmd/Ctrl + S ` | Save file |
58+ | ` Cmd/Ctrl + P ` | Quick open file |
59+ | ` Cmd/Ctrl + Shift + P ` | Command palette |
60+ | ` Cmd/Ctrl + B ` | Toggle sidebar |
61+ | ` Cmd/Ctrl + J ` | Toggle terminal |
62+ | `Cmd/Ctrl + \` ` | New terminal |
63+ | ` Cmd/Ctrl + N ` | New chat |
64+ | ` Cmd/Ctrl + Enter ` | Send message |
3765
3866---
3967
4068## Technology Stack
4169
70+ <table >
71+ <tr >
72+ <td valign =" top " width =" 50% " >
73+
4274### Frontend
4375
44- | Technology | Purpose |
45- | ------------------- | -------------------------- |
46- | ** React 19** | UI framework |
47- | ** TypeScript 5.9** | Type safety |
48- | ** Vite 7** | Build tool and dev server |
49- | ** Tailwind CSS v4** | Styling (CSS-first config) |
50- | ** Zustand + Immer** | State management |
51- | ** CodeMirror 6** | Code editing |
52- | ** xterm.js** | Terminal emulation |
53- | ** Shiki** | Syntax highlighting |
54- | ** Radix UI** | Accessible components |
55- | ** Zod 4** | Runtime validation |
76+ - ** React 19** + TypeScript 5.9
77+ - ** Vite 7** for builds
78+ - ** Tailwind CSS v4**
79+ - ** Zustand + Immer** state
80+ - ** CodeMirror 6** editor
81+ - ** xterm.js** terminal
82+ - ** Shiki** highlighting
83+ - ** Radix UI** components
84+
85+ </td >
86+ <td valign =" top " width =" 50% " >
5687
5788### Backend (Rust)
5889
59- | Crate | Purpose |
60- | ---------------- | ------------------------ |
61- | ** tauri 2** | Desktop framework |
62- | ** tokio** | Async runtime |
63- | ** git2** | Git operations |
64- | ** notify** | File watching |
65- | ** portable-pty** | Terminal PTY |
66- | ** tower-lsp** | Language Server Protocol |
67- | ** serde** | JSON serialization |
90+ - ** Tauri 2** framework
91+ - ** Tokio** async runtime
92+ - ** git2** for Git ops
93+ - ** notify** file watcher
94+ - ** portable-pty** terminal
95+ - ** tower-lsp** LSP support
96+ - ** serde** serialization
97+
98+ </td >
99+ </tr >
100+ </table >
101+
102+ ---
103+
104+ ## Architecture
105+
106+ ```
107+ ┌────────────────────────────────────────────────────────────┐
108+ │ Snowflake Desktop App │
109+ ├────────────────────────────────────────────────────────────┤
110+ │ ┌──────────────────────────────────────────────────────┐ │
111+ │ │ Rust Backend (Main Process) │ │
112+ │ │ • Claude AI streaming • File system + watching │ │
113+ │ │ • Git operations • Terminal PTY │ │
114+ │ │ • Settings persistence • Search (ripgrep) │ │
115+ │ └─────────────────────────┬────────────────────────────┘ │
116+ │ │ Tauri IPC │
117+ │ ┌─────────────────────────▼────────────────────────────┐ │
118+ │ │ React Frontend (Renderer) │ │
119+ │ │ • Chat interface • CodeMirror editor │ │
120+ │ │ • File explorer • xterm terminal │ │
121+ │ │ • Tool visualization • Zustand state │ │
122+ │ └──────────────────────────────────────────────────────┘ │
123+ └────────────────────────────────────────────────────────────┘
124+ ```
68125
69126---
70127
@@ -73,160 +130,106 @@ This opens the desktop app with hot-reload for both React and Rust.
73130```
74131Snowflake-v0/
75132├── src/ # React frontend
76- │ ├── components/ # UI components (90+ files)
77- │ │ ├── chat/ # Chat interface
78- │ │ ├── editor/ # CodeMirror integration
79- │ │ ├── terminal/ # xterm.js terminal
80- │ │ ├── activity/ # File viewer, diffs
81- │ │ └── ui/ # Radix primitives
82- │ ├── hooks/ # React hooks
133+ │ ├── components/ # 90+ UI components
134+ │ ├── hooks/ # Custom React hooks
83135│ ├── stores/ # Zustand state (10 stores)
84136│ └── types/ # TypeScript definitions
85137│
86- ├── src-tauri/ # Tauri backend
87- │ ├── src/
88- │ │ ├── commands/ # Tauri command handlers
89- │ │ │ ├── files.rs # File operations
90- │ │ │ ├── git.rs # Git operations
91- │ │ │ ├── terminal.rs # Terminal/PTY
92- │ │ │ └── settings.rs # Configuration
93- │ │ └── lib.rs # App setup
94- │ └── tauri.conf.json # App config
138+ ├── src-tauri/ # Tauri app
139+ │ └── src/commands/ # IPC command handlers
95140│
96- ├── crates/ # Rust library crates
97- │ ├── snowflake-core/ # Core types
98- │ ├── snowflake-fs/ # File system + watching
99- │ ├── snowflake-git/ # Git operations
100- │ ├── snowflake-terminal/ # PTY management
101- │ ├── snowflake-settings/ # Configuration
102- │ └── snowflake-search/ # Ripgrep search
103- │
104- └── Cargo.toml # Rust workspace
141+ └── crates/ # Rust libraries
142+ ├── snowflake-core/ # Core types & text editing
143+ ├── snowflake-fs/ # File system + watching
144+ ├── snowflake-git/ # Git operations
145+ ├── snowflake-terminal/ # PTY management
146+ ├── snowflake-settings/ # Config persistence
147+ └── snowflake-search/ # Ripgrep integration
105148```
106149
107150---
108151
109152## Development
110153
111- ### Prerequisites
112-
113- - ** Node.js** v22+ (see ` .nvmrc ` )
114- - ** pnpm** v9+
115- - ** Rust** 1.85+ with Cargo
116- - ** Tauri CLI** : ` cargo install tauri-cli `
117-
118154### Commands
119155
120- ``` bash
121- # Development
122- pnpm tauri dev # Full app (Vite + Tauri + Rust)
123- pnpm dev # Frontend only (port 5176)
124-
125- # Quality checks
126- pnpm typecheck # TypeScript check
127- pnpm lint # ESLint (zero warnings)
128- pnpm check # All checks (TS + ESLint + Rust)
129-
130- # Build
131- pnpm tauri build # Production app (.dmg/.exe/.AppImage)
132- pnpm build # Frontend production build
133- ```
156+ | Command | Description |
157+ | ----------------- | ------------------------- |
158+ | ` pnpm dev ` | Start app with hot-reload |
159+ | ` pnpm dev:web ` | Frontend only (port 5176) |
160+ | ` pnpm build ` | Production build |
161+ | ` pnpm check ` | TypeScript + ESLint |
162+ | ` pnpm check:rust ` | Rust fmt + clippy + test |
163+ | ` pnpm check:all ` | All quality checks |
134164
135165### Hot Reload
136166
137- | Change Type | Behavior |
138- | ----------------------- | --------------------------- |
139- | React/TypeScript | Instant HMR via Vite |
140- | CSS/Tailwind | Instant HMR via Vite |
141- | Rust (` src-tauri/ ` ) | Auto-rebuilds, restarts app |
142- | Rust crates (` crates/ ` ) | Auto-rebuilds, restarts app |
143-
144- ---
145-
146- ## Architecture
147-
148- ```
149- ┌─────────────────────────────────────────────────────────────────┐
150- │ Tauri Desktop App │
151- │ ┌──────────────────────────────────────────────────────────┐ │
152- │ │ Main Process (Rust) │ │
153- │ │ - Claude AI integration │ │
154- │ │ - File system operations │ │
155- │ │ - Git operations (git2) │ │
156- │ │ - Terminal PTY management │ │
157- │ │ - File watching (notify) │ │
158- │ └────────────────────────┬─────────────────────────────────┘ │
159- │ │ IPC (invoke/events) │
160- │ ┌────────────────────────▼─────────────────────────────────┐ │
161- │ │ Renderer Process (React) │ │
162- │ │ - Chat interface │ │
163- │ │ - CodeMirror editor │ │
164- │ │ - xterm.js terminal │ │
165- │ │ - File explorer │ │
166- │ │ - Zustand state management │ │
167- │ └──────────────────────────────────────────────────────────┘ │
168- └─────────────────────────────────────────────────────────────────┘
169- ```
167+ | Change | Behavior |
168+ | ---------------- | ---------------------- |
169+ | React/TypeScript | Instant HMR |
170+ | CSS/Tailwind | Instant HMR |
171+ | Rust code | Auto-rebuild + restart |
170172
171173---
172174
173175## Code Quality
174176
175- ### Rust
176-
177- - ** Zero unsafe code** : ` #![forbid(unsafe_code)] `
178- - ** No panics** : ` #![deny(clippy::unwrap_used, clippy::expect_used)] `
179- - ** Strict linting** : All clippy::pedantic rules enabled
180- - ** cargo-deny** : License and vulnerability auditing
181-
182- ### TypeScript
177+ ### Enforced Standards
183178
184- - ** Maximum strictness** : All strict options enabled
185- - ** No implicit any** : Every type explicit
186- - ** ESLint** : Zero warnings tolerance
187- - ** Consistent imports** : Type imports separated
179+ | Area | Rules |
180+ | -------------- | --------------------------------------- |
181+ | ** Rust** | Zero unsafe, no panics, clippy pedantic |
182+ | ** TypeScript** | Maximum strictness, no ` any ` |
183+ | ** ESLint** | Zero warnings tolerance |
184+ | ** Pre-commit** | Husky + lint-staged |
185+ | ** CI** | 11 parallel checks on every push |
188186
189- ### CI/CD
187+ ### CI Pipeline
190188
191- - GitHub Actions for all quality checks
192- - Pre-commit hooks with Husky + lint-staged
193- - Dependabot auto-merge for patches
194- - Release automation on version tags
189+ ```
190+ Frontend: TypeScript → ESLint → Build
191+ Backend: Format → Clippy → Test → Deny → Doc → MSRV
192+ ↓
193+ CI Passed (quality gate)
194+ ```
195195
196196---
197197
198198## Implementation Status
199199
200- ### Completed
200+ ### Done
201201
202- - [x] Tauri 2 desktop framework
203- - [x] React 19 frontend with TypeScript
204- - [x] CodeMirror 6 editor with themes
205- - [x] File system operations with watching
206- - [x] Git integration (stage, commit, diff, log)
207- - [x] Settings management with persistence
208- - [x] Multi-panel resizable layout
209- - [x] Theme switching (light/dark)
202+ - [x] Tauri 2 + React 19 setup
203+ - [x] CodeMirror editor with themes
204+ - [x] File system with watching
205+ - [x] Git integration (full)
206+ - [x] Settings persistence
207+ - [x] Multi-panel layout
208+ - [x] Light/dark themes
210209
211210### In Progress
212211
213- - [ ] Claude AI streaming integration
214- - [ ] LSP language server support
215- - [ ] Terminal PTY full implementation
212+ - [ ] Claude AI streaming
213+ - [ ] LSP completions
214+ - [ ] Full terminal PTY
216215
217216---
218217
219218## Contributing
220219
221- 1 . Fork the repository
222- 2 . Create a feature branch
223- 3 . Run ` pnpm check ` before committing
224- 4 . Submit a pull request
220+ 1 . Fork the repo
221+ 2 . Create feature branch
222+ 3 . Run ` pnpm check:all `
223+ 4 . Submit PR
225224
226- All CI checks must pass before merging .
225+ All 11 CI checks must pass.
227226
228227---
229228
230- ## License
229+ <div align =" center " >
230+
231+ ** Built with Rust and React**
232+
233+ Private • Recursive Labs
231234
232- Private - Recursive Labs
235+ </ div >
0 commit comments