Merge pull request #140 from levineuwirth/docs-readme-refresh

docs(readme): refresh current capabilities
This commit is contained in:
Levi Neuwirth 2026-07-23 00:25:23 +00:00 committed by GitHub
commit 96d0baebb7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 55 additions and 53 deletions

108
README.md
View File

@ -11,7 +11,7 @@ coroutine-based async surface are core primitives, not bolt-ons.
The editor is partitioned into a long-lived **instance** (the daemon The editor is partitioned into a long-lived **instance** (the daemon
that owns buffers, processes, and language services) and thin that owns buffers, processes, and language services) and thin
**frontends** that attach over a typed protocol (currently v14). Two **frontends** that attach over a typed protocol (currently v19). Two
frontends ship today: frontends ship today:
- a **TUI** (crossterm cell grid), attachable locally over a Unix - a **TUI** (crossterm cell grid), attachable locally over a Unix
@ -30,64 +30,66 @@ the same buffers concurrently with live cursor/selection presence.
## Status ## Status
**v1.0.0 --- stable core, active development.** The v1.0 gate (the **v1.0.0 --- stable core, active development.** The v1.0 gate (the
instance/frontend partition, the Lua surface, and a REPL package instance/frontend partition, the Lua surface, and a REPL package audited
audited to use zero direct Rust core access) shipped some time ago; to use zero direct Rust core access) shipped some time ago. Development
development since has landed the GPU frontend at near input/render since has expanded the semantic frontend protocol from v6 through v19,
parity with the TUI, the semantic-frontend protocol (v6 → v14), the brought the GPU frontend near input/render parity with the TUI, and
LSP feature arc, in-buffer search, the context menu + OS clipboard, completed the LSP, editing, persistence, themes, and terminal arcs. Recent
the line-number gutter with diagnostic signs, and the package-manager work added major modes and modeline detection, a typed configuration
hardening pass. Current direction lives in `docs/roadmap-2026-07.md`. registry, composable statuslines, multi-language syntax processing, and
Public contributions are open: use, evaluate, file issues, send pull cross-frontend tab-width parity. Current direction lives in
requests. `docs/roadmap-2026-07.md`. Public contributions are open: use, evaluate,
file issues, and send pull requests.
## Highlights ## Highlights
**Editing & UI.** CUA-style region editing plus Emacs kill/yank **Editing & UI.** CUA-style region editing plus Emacs kill/yank and kill-ring
bindings; linear undo/redo; incremental search, substring and regex bindings; linear undo/redo; query-replace; incremental substring and regex
(`C-s` / `C-r` / `C-M-s`); line-number gutter with absolute, relative, search (`C-s` / `C-r` / `C-M-s`); comment, auto-indent, auto-pair, transpose,
and hybrid modes; diagnostic gutter signs; right-click context menu; case, line, and region operations; line-number gutter with absolute, relative,
OS clipboard integration (OSC 52 in the TUI, native in the GPU); and hybrid modes; diagnostic signs; context menu; OS clipboard integration
minibuffer with completion dropdown and per-bucket persisted history; (OSC 52 in the TUI, native in the GPU); minibuffer completion with persisted
buffer-list mode (`C-x C-b`); self-navigable help system history; buffer-list and compilation modes; self-navigable help. Named `ui.*`
(`describe-command`, `describe-key`); atomic saves (temp + rename + theme faces, live GPU font selection, and composable per-window statusline
parent fsync, mode-preserving). providers keep chrome and modelines runtime-configurable. Saves are atomic
(temp + rename + parent fsync, mode-preserving).
**Language intelligence.** LSP client with async, never-blocking **Language intelligence.** The async LSP client provides diagnostics,
requests: diagnostics (severity-colored underlines/squiggles, gutter rename with `prepareRename`, cross-file definitions, hover, signature help,
signs, statusline counts, `M-g n`/`M-g p` navigation), rename with references, document symbols, code actions, formatting, semantic tokens, and
`prepareRename`, go-to-definition including cross-file navigation, inline inlay hints. Preconfigured servers cover Rust, C/C++, Python, Go,
hover, signature help, references, document symbols, code actions, JavaScript/TypeScript, Lua, Bash, TOML, Zig, Dockerfile, CMake, JSON, and YAML.
buffer formatting, semantic tokens, and inlay hints (rendered inline Bundled tree-sitter grammars include those languages plus Markdown, Make, and
in the GPU frontend). Servers are preconfigured for rust-analyzer, CUDA; nested Markdown fences and frontmatter use multi-language injections,
clangd (C/C++), basedpyright, gopls, typescript-language-server and locals-query processing distinguishes shadowed builtins. Bounded Emacs
(TS/TSX/JS/JSX), lua-language-server, bash-language-server, taplo and Vim modelines join extensions, exact filenames, and shebangs in one
(TOML), and zls (Zig). Syntax highlighting is dual-authority: fresh-load language decision. That decision initializes the buffer's major
bundled tree-sitter grammars (Rust, Lua, Markdown, C, C++) paint mode, drives syntax/LSP/pairing/comment behavior, and enables mode-scoped
lexical structure and LSP semantic tokens refine it --- languages keymaps. A persistent project-symbol index (`.pmacs/index.json`) rides the
without a bundled grammar still get full semantic coloring. A same worker infrastructure.
persistent project symbol index (`.pmacs/index.json`) rides the same
worker infrastructure.
**Collaboration & frontends.** With `--features crdt`, buffers are **Collaboration & frontends.** With `--features crdt`, buffers are CRDT-backed
CRDT-backed and any number of frontends attach to one daemon and edit and any number of frontends attach to one daemon and edit concurrently; peers
concurrently; peers see each other's cursors and selections as see each other's cursors and selections as translucent washes. The TUI and GPU
translucent washes. The GPU frontend adds a live minimap (click to frontends both host owned full-screen terminal sessions; protocol-v19 terminal
jump, drag to scrub), wavy diagnostic squiggles, a status band with frames preserve the fixed-cell VT screen while each frontend owns its
live diagnostic counts, and optimistic local editing that rebases scroll/selection/input context. The GPU frontend also provides a live minimap,
in-flight edits through authoritative frames. wavy diagnostic squiggles, a status band, and optimistic local editing that
rebases in-flight edits through authoritative frames. Buffer text, syntax,
diagnostics, carets, hits, and minimap geometry now share one eight-column tab
projection without mutating source bytes.
**Extensibility.** ~37 `pmacs.*` Lua namespaces cover buffers, **Extensibility.** The `pmacs.*` Lua namespaces cover buffers, windows,
windows, commands, keymaps (global/mode/buffer scope), hooks, themes commands, global/mode/buffer keymaps, hooks, themes, statusline providers,
(truecolor-capable syntax palette), tree-sitter, LSP stores, async tree-sitter, LSP stores, async workers, and a PTY-aware process supervisor.
workers, and a PTY-aware process supervisor with an ECMA-48 ANSI The typed, introspectable `pmacs.config` registry supports global and
parser. A package manager installs from git (`github:owner/repo`, buffer-local values, listeners, startup-only settings, and `describe-setting`.
version/branch/commit pins) with transitive dependency resolution and A package manager installs from git (`github:owner/repo`,
a SHA-256 lockfile. Pmacs is also an **MCP client**: packages can version/branch/commit pins) with transitive dependency resolution and a
spawn MCP servers and consume their tools, resources, and prompts --- SHA-256 lockfile. Pmacs is also an **MCP client**: packages can spawn MCP
AI integrations are packages over a transport, not a built-in servers and consume their tools, resources, and prompts --- AI integrations
feature. The bundled REPL package (PTY shells, ANSI rendering, are packages over a transport, not a built-in feature. The bundled REPL
multi-REPL, scrollback retention) is written entirely against the package is written entirely against the public Lua API.
public Lua API.
## Running ## Running