A keyboard-first native IDE, in Rust.
  • Rust 99.8%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Aiko Tanabe be48c96983 Merge pull request #59 from northgale/feat/059-refactor-diagram-extract-diagram-command-push
refactor(diagram): extract diagram_command, push (de)serialization behind diagram_handle
2026-08-28 09:00:00 +09:00
.cargo PR1 of ck-diagram: crate skeleton, model, shape registry 2026-07-01 13:53:00 +02:00
.ckeditor Add AI terminal integration with effort control and context compression 2026-03-16 12:37:09 +05:30
.claude docs(commands): let /fix take a thematic direction, not just a path 2026-08-18 09:00:00 +09:00
ck-diagram PR12 of ck-diagram: SVG + PNG export 2026-07-31 15:18:22 +03:00
ck-editor git status in AI tab, changed order of git tabs 2026-08-26 11:19:02 +02:00
ck-files PR12 of ck-diagram: SVG + PNG export 2026-07-31 15:18:22 +03:00
ck-lsp test: remove flaky external-process tests that forced --no-verify 2026-08-19 15:48:24 +02:00
ck-markdown fix layout problems and fixed linting problems 2026-08-26 14:51:48 +02:00
ck-mcp-bridge PR 3: ck-mcp-bridge — stateless stdio↔Unix-socket adapter 2026-06-10 09:47:09 +03:00
ck-mcp-editor Reorganize docs into /docs/ tree and add Context-lifecycle plan 2026-06-26 15:43:10 +02:00
ck-notes Reorganize docs into /docs/ tree and add Context-lifecycle plan 2026-06-26 15:43:10 +02:00
ck-terminal fix(terminal): trap keys in focused terminal so they don't double-register 2026-08-24 09:30:00 +02:00
ck-testing-e2e feat(project): reflect git worktrees into Contexts; root branch is read-only 2026-08-19 09:49:34 +02:00
ck-types Add LSP format, code actions, rename, document symbols, and signature help 2026-04-22 10:00:00 +05:30
ck-typeset fix layout problems and fixed linting problems 2026-08-26 14:51:48 +02:00
ck-ui feat(project): enforce single-instance lock in the project picker 2026-08-25 10:00:00 +05:30
ckeditor fix(project): de-flake open_state flock release probe 2026-08-27 08:30:00 +02:00
ckeditor-lint fix layout problems and fixed linting problems 2026-08-26 14:51:48 +02:00
ckeditor-memory feat(memory): per-Project semantic memory via ckeditor-memory crate 2026-08-25 10:18:36 +02:00
docs fix(project): de-flake open_state flock release probe 2026-08-27 08:30:00 +02:00
patches Initial commit: CkEditor + architecture linter 2026-03-02 10:19:14 +01:00
scripts Rebase context-scoped state on switch: exec root + LSP 2026-06-19 11:12:56 +02:00
src fixed claude timeout for flaky mcp test 2026-08-07 17:35:25 +02:00
vendor/egui-winit Fix Super+C/V clipboard on Wayland by recognizing Ctrl+Insert/Shift+Insert 2026-03-30 16:25:29 +09:00
.gitignore added .claude worktrees to the .gitignore 2026-06-05 09:53:21 +09:00
Cargo.lock Merge pull request #58 from northgale/feat/058-memoize-context-is-stale-via-stale-watcher-kil 2026-08-25 18:41:09 +02:00
Cargo.toml feat(memory): per-Project semantic memory via ckeditor-memory crate 2026-08-25 10:18:36 +02:00
CLAUDE.md refactor(project): split project.rs god-class into project/ + add CK022 LOC ratchet 2026-08-12 10:15:34 +02:00
flake.md test: remove flaky external-process tests that forced --no-verify 2026-08-19 15:48:24 +02:00
README.md Reorganize docs into /docs/ tree and add Context-lifecycle plan 2026-06-26 15:43:10 +02:00

CkEditor

An AI-first IDE. Rust + egui, native, keyboard-first.

Vim keybindings, LSP, project-wide search, git worktree / branch-context workflows, terminal, filesystem coherence, and AI assistance — built around the principle that every unit of work is a Context (a worktree forked from a protected root branch), and the UI is a reflection of state that Project owns.

Status

The Context-model foundation has landed. Active work:

  • Context lifecycle refactor — consolidating Context lifecycle onto Project as a closed API, removing ContextKind::MainCheckout, introducing a user-set root_branch. Load-bearing; the Context feature is not done.
  • AI integration — per-Context MCP bus and editor-state tools. PR 3 landed; later PRs in flight.
  • Files layer — three-layer I/O and watcher. The ck-files crate is sealed (the pilot for the extraction roadmap).

Priority order: functionality → real end-to-end testing → hardening.

Documentation

All design docs live under docs/:

  • docs/architecture/ — landed and in-flight subsystems: Context model, files layer, AI integration.
  • docs/roadmap/ — plans: lifecycle refactor, crate extraction, future tools (ck-arch, ck-typeset), deferred quality hardening.
  • docs/features/ — feature designs (ck-notes), AI-integration next-steps pointer, parked design records.

Project rules — architecture linter, sealing contract, commit workflow, baseline policy — live in CLAUDE.md.

Where to start reading

If you are new to this codebase, in order:

  1. CLAUDE.md — domain vocabulary, crate structure, the Project / Context reference, sealing contract, commit workflow.
  2. docs/architecture/ckeditor-context-model.md — the foundation. Every other piece depends on this.
  3. docs/roadmap/ckeditor-project-lifecycle.md — what is changing about Context next, and why.
  4. docs/architecture/ckeditor-files.md — how reads and writes flow. Prerequisite for AI integration.
  5. docs/architecture/ckeditor-ai-integration.md — per-Context MCP bus, no ghost-patch layer.

Crates

Crate Purpose
ckeditor Main application, UI layout, panels
ck-editor Buffer, cursor, vim, syntax highlighting
ck-files Unified source-file I/O primitives + filesystem watcher (sealed pilot)
ck-lsp LSP client (transport, protocol, server management)
ck-types Shared types (LSP positions, ranges, text edits)
ck-ui Reusable egui components
ck-terminal Terminal emulator integration
ck-mcp-editor MCP server exposing editor state to AI agents
ck-notes Notes / workflow data model (in flight)
ck-testing-e2e End-to-end test harness
ckeditor-lint Architecture linter and metric ratchet

Build, run, test

Use the scripts under scripts/:

  • scripts/run.sh — run the editor
  • scripts/lint.sh — architecture linter (zero errors, zero warnings)
  • scripts/test.sh --gates — full validation (lint + e2e + workspace tests)
  • scripts/ratchet.sh — lock in metric improvements

Commit via /ck-commit (runs all gates + ratchets the baseline + merges into master with --no-ff).

Scope discipline

"AI-first IDE" is the positioning, not a license to bolt on every IDE feature. Out of scope by default: GUI debugger menus, mouse-driven refactor wizards, visual designers, anything that breaks the keyboard-first flow. When in doubt: does it serve the AI-assisted, keyboard-driven reading / navigating / editing loop, or is it IDE-feature-parity for its own sake?