The command palette (Cmd+P) is a per-directory command launcher. Every command you type in the terminal is recorded automatically, and you can search and re-run any of them from a floating overlay without retyping. The palette is scoped to the project root of the current tab — not the shell’s current working directory after aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/javierpr0/Notchly/llms.txt
Use this file to discover all available pages before exploring further.
cd — so your full command history for a project is always reachable regardless of which subdirectory you are in.
Opening the palette
Press Cmd+P anywhere inside the Notchly panel to open the command palette overlay. A search field gets focus immediately and the full command list for the current project directory is shown below it. Press Escape at any time to dismiss without running anything.The palette is scoped to the current tab’s project root, not the shell’s active directory. Commands recorded in any subdirectory of
~/projects/my-app are all stored and shown under the my-app root entry.How commands are stored
Notchly maintains a separate command list for every directory you work in. The store is backed by JSON files on disk, so commands survive app restarts and are ready the moment you open a project.Storage location and file format
Storage location and file format
Commands are written to
~/.notchly/commands/ — one JSON file per directory. The filename is the SHA-256 hash of the directory’s canonical path, which prevents collisions from symlinks or path aliases. Each file is created with 0600 permissions so only your user account can read it. The parent directory is created with 0700 permissions on first use.Automatic recording
Automatic recording
Every command you run in the terminal is recorded automatically with a run count and a last-used timestamp. If you run the same command again, its count increments and its timestamp updates — so frequently-used commands naturally float to the top.
Capacity and memory cache
Capacity and memory cache
Each directory stores up to 500 commands. When that limit is reached, the least-used (lowest count, oldest last-used) entries are trimmed first. Up to 32 directories are held in memory at once using LRU eviction — accessing a directory promotes it to the front of the cache.
Zsh history import
Zsh history import
When you open a project directory for the first time, Notchly reads
~/.zsh_history and imports up to 500 unique, non-trivial commands as starting suggestions. The import runs at most once per process (the result is cached in memory), and it happens on a background thread so it never blocks the UI.Trivial single-word commands (ls, cd, pwd, clear, exit) are skipped during import.Built-in default commands
Built-in default commands
If a directory has no saved commands yet, approximately 450 built-in defaults are seeded as a starting set. These cover git, npm, yarn, pnpm, bun, Python, Docker, Kubernetes, Terraform, AWS CLI, Homebrew, and the full suite of
claude CLI flags — so autocomplete and the palette are useful from the very first keystroke even in a brand-new project.Searching and running
Type any substring to filter the list. The palette combines prefix matching and fuzzy matching, then ranks results by a combination of run count (frequency) and last-used date (recency). Prefix matches always appear above fuzzy matches; within each group, the most-used command wins ties.Search
Start typing. Matched characters are highlighted in blue. Use the Up and Down arrow keys to move the selection — the list scrolls to keep the selected row visible.
Run
Press Enter to send the selected command to the active terminal pane. The command is also recorded (or its count incremented) at that moment.
Deleting a command
Right-click any row in the list and choose Delete Command to remove it from the store for that directory. The deletion takes effect immediately and is written to disk.Persistence
The command store is written to disk synchronously on the serial queue every time a command is recorded or deleted — not debounced or deferred. This means commands are never lost even if Notchly quits unexpectedly. The store is additionally flushed on app quit (NSApplication.willTerminateNotification) and when Notchly loses focus (NSApplication.willResignActiveNotification) as a belt-and-braces measure.
Relationship to autocomplete
The command palette and the inline ghost-text autocomplete share the sameCommandStore backing store. A command recorded from the terminal appears in both the palette and as an autocomplete suggestion on the very next keystroke. There is no separate history to manage.