Releases: prettysmartdev/ane
v0.2.0
Release v0.2.0
Features
-
List action (
l): A new exploratory action that discovers symbols in a file.lefdlists all function definitions with line numbers;lefnlists function names;levdlists variable declarations. In the TUI, List opens a scrollable overlay — navigate with arrow keys and press Enter to jump. In exec mode, results print to stdout. The positional acts as a filter:lafnlists functions after the cursor,lffnlists the first function, etc. -
Word component (
w): Text-based word targeting for Line and Buffer scopes, no LSP required.celwchanges the word at the cursor;jnlwjumps to the next word;jflwandjllwjump to the first and last word in the line. -
Definition component (
d): Selects the full declaration signature of a scope, excluding the body. For functions: visibility +fn+ name + parameters + return type. For variables: keyword + name + type annotation. For structs: visibility + keyword + name + generics.lefdlists all function signatures at a glance;cefdrewrites a signature without touching the body. -
First (
f) and Last (l) positionals: Select the first or last occurrence of a component within a scope.jlfnjumps to the last function;jflwjumps to the first word in the line. -
Numeric positional (
1–9): A digit in the positional position means "next N forward from the cursor."j5lwjumps forward 5 words;l3fdlists the next 3 function definitions;c5lschanges the next 5 lines. Single digit only, forward direction. -
On-disk file change detection: When a file open in the TUI changes externally, a hint appears in the status bar.
Ctrl-Oreloads the file from disk. If the buffer has unsaved edits, the hint warns before overwriting. -
Live file tree updates: The file tree watches the project directory and updates automatically when files or folders are created, renamed, or deleted on disk — no manual refresh needed.
-
File tree management: Three new keybindings when the file tree is focused:
Ctrl-R— rename the file or folder under the cursor (inline edit).Ctrl-D— delete the file or folder (confirmation dialog with children preview for directories).Ctrl-N— create a new file in the current directory context.
-
TUI Top bar info display: The top bar now shows
cursor_line:col | N loc | N lines | ~N tokenspinned to the right. LOC counts non-empty lines; the token estimate helps gauge LLM context usage at a glance. -
ane initagent skill generation (optional):ane init claude(or codex, gemini, opencode, cline, maki, charm) generates a token-efficient skill file that teaches a code agent the chord grammar. The skill file is optional — agents can useane execdirectly — but it helps them pick the right chords.
Improvements
-
Buffer-scope chords no longer require a target argument:
yebs,aebs,debs, and other buffer-scope chords now work without a dummytarget:1. The buffer is whole-file by definition. -
Improved skill and tool documentation for Name vs Definition: The embedded skill file and MCP tool description now include a "Component guide" section clarifying when to use
n(Name — bare identifier, for renaming) vsd(Definition — full signature, for changing visibility or rewriting declarations).
Fixes
- Fixed
aals(target:N)inserting at end of file instead of immediately after line N. - Fixed
cifcmerging the opening{and closing}delimiter lines with the replacement content on multi-line function bodies. - Fixed
aebs(value:-)swallowing leading newlines from stdin input. - Fixed
ane <file>+Ctrl-Tcrashing with "No such file or directory" when opened with a bare relative filename. - Fixed TUI cursor chord handling for edge cases.
v0.1.0
Release v0.1.0
Initial public release of ane — a chord-based terminal code editor built for humans and agents.
Features
-
Chord engine: A 4-part chord system (action, positional, scope, component) for composable, expressive edits. Short form (
cifc) and long form (ChangeInsideFunctionContents) are both accepted. The engine runs in three stages: parse, resolve (LSP lookup if needed), patch.- Actions: change, delete, replace, yank, append, prepend, insert, jump
- Positionals: inside, entire, after, before, until, to, outside, next, previous
- Scopes: line, buffer, function, variable, struct, member, delimiter
- Components: beginning, contents, end, value, parameters, arguments, name, self
-
LSP engine: Centralized language server lifecycle manager. Detects the project language, installs the server if missing, starts it in the background, and gates LSP-dependent chords until the server is ready. The TUI status bar reflects the current LSP state at all times. Rust (
rust-analyzer) supported at launch; Go, TypeScript/JavaScript, and Python added via WI-0008. -
Exec mode (
ane exec): One-shot headless CLI edits for code agents and scripts. Accepts a chord and a file path, writes the file, and outputs a unified diff to stdout. Yank chords output the selected text instead. Supports stdin piping for values (value:-). No LSP startup delay for line/buffer/delimiter chords. -
TUI: Interactive terminal editor with two modes — Chord mode (default) and Edit mode (
Ctrl-E). File tree pane (Ctrl-T), chord history recall (Ctrl-R), save (Ctrl-S), and exit confirmation modal (Ctrl-C). Short-form chords auto-execute when the cursor sits inside a recognized construct. -
Jump action and delimiter scope:
j(jump) moves the cursor to named code constructs without modifying the buffer. Thetopositional and delimiter scope (d) for bracket/quote/tag targeting are also included. -
Tree-sitter syntax highlighting: Universal baseline highlighting computed synchronously on file open (<2ms). LSP semantic tokens overlay once the server is ready, adding type-aware colors. Language support: Rust, Go, TypeScript/JavaScript, Python (tree-sitter + LSP), Markdown (tree-sitter only).
-
Application-managed mouse selection: Mouse selection in the TUI excludes line-number gutters from the clipboard. Selection is tracked in logical buffer coordinates and copied via OSC 52. Hold Shift during click-drag to fall back to native terminal selection.
-
Code agent integration:
ane init <agent>installs an embedded skill file into the agent's skill directory, teaching it the chord system and exec mode. Supported agents: claude, codex, gemini, opencode, cline, maki, charm.ane::corepublic crate API exposesChordEngine,LspEngine,Buffer, all chord types, andtool_definition()(a ready-to-serialize LLM tool definition). Thefrontendsfeature flag (on by default) gates CLI/TUI dependencies; library consumers usedefault-features = false.
-
Multi-language LSP support: Go (
gopls), TypeScript/JavaScript (vtsls), and Python (basedpyright) added alongside Rust (rust-analyzer). Each language has a capability matrix entry declaring tree-sitter and LSP support independently.