Documentation
¶
Overview ¶
Command nook is a terminal-native AI IDE built from glyph components.
Usage:
nook # open the current working directory
nook some/dir # open a project rooted at some/dir
nook some/file.go # open one file; root is its parent
nook ~/.zshrc # works for files outside any project
nook newfile.txt # vim-style: opens an empty buffer; save
# writes the new file (mkdir -p first)
nook a.go b.go c.go # open many files; first one is active,
# alt+] / alt+[ switch between buffers
Keymap:
ctrl+p file picker ctrl+f find in current buffer ctrl+h find and replace in current buffer alt+f project search ctrl+b file tree (left side) ctrl+g git pane ctrl+k inline AI edit on current line (Haiku) ctrl+l composer multi-file AI edit (Sonnet) ctrl+` terminal pane ctrl+s save current buffer ctrl+t workspace symbol search (functions, types, vars across project) ctrl+\ file outline (document symbols in current file) alt+i LSP hover info for symbol under cursor alt+j expand snippet at cursor (Tab cycles tabstops, Esc exits) alt+y toggle gopls inlay hints (type annotations, parameter names) alt+b toggle inline git blame on cursor row (GitLens-style) ctrl+] LSP go to definition ctrl+space LSP completion popup (↑/↓ to navigate, enter to accept) alt+enter LSP code actions at the cursor f2 LSP rename symbol under cursor f9 toggle breakpoint at cursor row f5 launch debugger / continue when paused (alt+f5 terminates) f6 pause a running debug session f10/f11 step over / step in (alt+f11 steps out) alt+, reload ~/.config/nook/config.toml alt+p workspace-wide diagnostics panel alt+t task picker (.nook/tasks.toml or Go defaults) tab accept ghost-text completion (when present) ctrl+q quit esc close overlay / blur / dismiss ghost-text
LSP diagnostics: opening a .go file starts gopls under the project root and surfaces publishDiagnostics as colored ● markers in the gutter (red for errors, yellow for warnings, blue for info/hint). The status bar shows the per-file E/W count.
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
ai
Package ai drives the AI wedges in nook by spawning the user's existing Claude Code CLI as a subprocess.
|
Package ai drives the AI wedges in nook by spawning the user's existing Claude Code CLI as a subprocess. |
|
aihistory
Package aihistory keeps a small per-file conversation buffer for the composer wedge.
|
Package aihistory keeps a small per-file conversation buffer for the composer wedge. |
|
airules
Package airules loads repo-level AI instructions from a conventional dotfile at the workspace root.
|
Package airules loads repo-level AI instructions from a conventional dotfile at the workspace root. |
|
breakpoints
Package breakpoints stores per-file breakpoint state — a set of 0-based line indices keyed by absolute file path.
|
Package breakpoints stores per-file breakpoint state — a set of 0-based line indices keyed by absolute file path. |
|
bufman
Package bufman owns the open-buffer collection.
|
Package bufman owns the open-buffer collection. |
|
callhierarchy
Package callhierarchy maps LSP call-hierarchy results into multibuffer fragments for the overlay pane.
|
Package callhierarchy maps LSP call-hierarchy results into multibuffer fragments for the overlay pane. |
|
clip
Package clip is nook's minimal clipboard.
|
Package clip is nook's minimal clipboard. |
|
codeaction
Package codeaction renders nook's LSP code-action picker — a small bordered menu listing the actions the language server proposed at the cursor.
|
Package codeaction renders nook's LSP code-action picker — a small bordered menu listing the actions the language server proposed at the cursor. |
|
complete
Package complete renders nook's LSP completion popup — a small menu that lists labeled completion items, lets the user move through them with the arrow keys, and surfaces the chosen item on Enter.
|
Package complete renders nook's LSP completion popup — a small menu that lists labeled completion items, lets the user move through them with the arrow keys, and surfaces the chosen item on Enter. |
|
completedoc
Package completedoc renders nook's LSP completion documentation side-panel — a small bordered box that sits beside the completion popup and shows the resolved documentation for whichever item is highlighted.
|
Package completedoc renders nook's LSP completion documentation side-panel — a small bordered box that sits beside the completion popup and shows the resolved documentation for whichever item is highlighted. |
|
composer
Package composer is the multi-file Cursor-Composer-style side panel.
|
Package composer is the multi-file Cursor-Composer-style side panel. |
|
config
Package config loads nook's user configuration from ~/.config/nook/config.toml.
|
Package config loads nook's user configuration from ~/.config/nook/config.toml. |
|
configwatch
Package configwatch polls a single file path for content changes and emits a tea.Msg every poll.
|
Package configwatch polls a single file path for content changes and emits a tea.Msg every poll. |
|
dap
Package dap drives a debug-adapter subprocess (delve via `dlv dap` by default) over stdio using the Debug Adapter Protocol.
|
Package dap drives a debug-adapter subprocess (delve via `dlv dap` by default) over stdio using the Debug Adapter Protocol. |
|
diagnostics
Package diagnostics renders nook's workspace-wide problems panel.
|
Package diagnostics renders nook's workspace-wide problems panel. |
|
dochi
Package dochi turns LSP textDocument/documentHighlight responses into a shape the editor can paint without re-importing the protocol package.
|
Package dochi turns LSP textDocument/documentHighlight responses into a shape the editor can paint without re-importing the protocol package. |
|
edit
Package edit implements Cmd-K-style inline AI edits.
|
Package edit implements Cmd-K-style inline AI edits. |
|
editor
Package editor is nook's minimal file viewer/editor pane.
|
Package editor is nook's minimal file viewer/editor pane. |
|
filetree
Package filetree is nook's left-side file-tree pane.
|
Package filetree is nook's left-side file-tree pane. |
|
finder
Package finder is nook's in-file find/replace overlay.
|
Package finder is nook's in-file find/replace overlay. |
|
findrefs
Package findrefs maps LSP textDocument/references results into a multibuffer fragment list.
|
Package findrefs maps LSP textDocument/references results into a multibuffer fragment list. |
|
ghost
Package ghost owns nook's inline autocomplete state: idle-trigger debouncing, AI request lifecycle, and the rendered "ghost" text that floats after the cursor until accepted or dismissed.
|
Package ghost owns nook's inline autocomplete state: idle-trigger debouncing, AI request lifecycle, and the rendered "ghost" text that floats after the cursor until accepted or dismissed. |
|
git
Package git wraps the local git CLI for nook's git pane.
|
Package git wraps the local git CLI for nook's git pane. |
|
gitgutter
Package gitgutter computes per-line diff markers (added / modified / deleted) for a file by shelling out to `git diff` against the index.
|
Package gitgutter computes per-line diff markers (added / modified / deleted) for a file by shelling out to `git diff` against the index. |
|
help
Package help renders nook's full-keymap overlay.
|
Package help renders nook's full-keymap overlay. |
|
highlight
Package highlight tokenizes source files into per-row styled spans for the editor pane.
|
Package highlight tokenizes source files into per-row styled spans for the editor pane. |
|
hover
Package hover renders nook's LSP hover overlay — a small rounded-border box that displays whatever the language server returned for the symbol under the cursor.
|
Package hover renders nook's LSP hover overlay — a small rounded-border box that displays whatever the language server returned for the symbol under the cursor. |
|
inlayhint
Package inlayhint defines the on-the-wire representation of LSP inlay hints and the message types the host uses to ferry hint results to the editor pane.
|
Package inlayhint defines the on-the-wire representation of LSP inlay hints and the message types the host uses to ferry hint results to the editor pane. |
|
inlineblame
Package inlineblame computes per-line git blame for a file by shelling out to `git blame --porcelain`.
|
Package inlineblame computes per-line git blame for a file by shelling out to `git blame --porcelain`. |
|
lookup
Package lookup turns LSP textDocument lookups (hover, definition) into async tea.Cmd factories.
|
Package lookup turns LSP textDocument lookups (hover, definition) into async tea.Cmd factories. |
|
lsp
Package lsp drives a language-server subprocess (gopls by default) over stdio and surfaces textDocument/publishDiagnostics notifications as events the host can render.
|
Package lsp drives a language-server subprocess (gopls by default) over stdio and surfaces textDocument/publishDiagnostics notifications as events the host can render. |
|
mdpreview
Package mdpreview is the nook side of the markdown preview pane.
|
Package mdpreview is the nook side of the markdown preview pane. |
|
multibuffer
Package multibuffer renders fragments stitched from multiple files into one scrollable surface.
|
Package multibuffer renders fragments stitched from multiple files into one scrollable surface. |
|
navhistory
Package navhistory implements a vim-style jump list for nook.
|
Package navhistory implements a vim-style jump list for nook. |
|
outline
Package outline is the single-file document-symbol modal that nook opens on Ctrl+\.
|
Package outline is the single-file document-symbol modal that nook opens on Ctrl+\. |
|
picker
Package picker is a fuzzy-filtered selection overlay for nook.
|
Package picker is a fuzzy-filtered selection overlay for nook. |
|
rename
Package rename renders nook's symbol-rename prompt — a small modal that asks for the new identifier name and emits the value back to the host on Enter.
|
Package rename renders nook's symbol-rename prompt — a small modal that asks for the new identifier name and emits the value back to the host on Enter. |
|
search
Package search runs ripgrep as a subprocess and streams matches back to the host model.
|
Package search runs ripgrep as a subprocess and streams matches back to the host model. |
|
semtok
Package semtok decodes LSP textDocument/semanticTokens/full responses.
|
Package semtok decodes LSP textDocument/semanticTokens/full responses. |
|
signature
Package signature renders nook's LSP signature-help overlay: a small floating box that shows the call signature of the function the cursor is inside, with the parameter that would receive the next argument highlighted.
|
Package signature renders nook's LSP signature-help overlay: a small floating box that shows the call signature of the function the cursor is inside, with the parameter that would receive the next argument highlighted. |
|
snippets
Package snippets is nook's VSCode-compatible snippet engine.
|
Package snippets is nook's VSCode-compatible snippet engine. |
|
symbolsearch
Package symbolsearch maps LSP workspace/symbol results into a multibuffer fragment list.
|
Package symbolsearch maps LSP workspace/symbol results into a multibuffer fragment list. |
|
tabbar
Package tabbar renders the open-buffer strip above the editor surface.
|
Package tabbar renders the open-buffer strip above the editor surface. |
|
tasks
Package tasks owns nook's project-task surface: the TOML loader at `.nook/tasks.toml`, the default task set inferred from a Go project's go.mod, the process supervisor that streams a running task's stdout and stderr into Bubble Tea messages, and the overlay pane that lets a user pick a task, watch its output, and kill it.
|
Package tasks owns nook's project-task surface: the TOML loader at `.nook/tasks.toml`, the default task set inferred from a Go project's go.mod, the process supervisor that streams a running task's stdout and stderr into Bubble Tea messages, and the overlay pane that lets a user pick a task, watch its output, and kill it. |
|
term
Package term embeds a PTY-backed shell pane inside nook.
|
Package term embeds a PTY-backed shell pane inside nook. |
|
welcome
Package welcome renders nook's first-run / empty-editor surface.
|
Package welcome renders nook's first-run / empty-editor surface. |
Click to show internal directories.
Click to hide internal directories.