# Plugin Compatibility Guide
Tuim is a **Neovim UI client**, not a traditional terminal shell executing Neovim. Plugins run inside an isolated Neovim instance started with `--clean` and `ext_multigrid` enabled, communicating with Tuim's Zig frontend over MessagePack-RPC.
Understanding this architecture is key to knowing which plugins work seamlessly and which require adaptation.
---
## 1. Verified & Shipped Bundled Plugins
The following core plugins are bundled and verified via local verification scripts (`scripts/plugin_smoke.sh`) and continuous integration test suites (`tests/plugin_manager.py` and `tests/plugins_ui.py`):
| Plugin | Verified Role | Notes |
| :--- | :--- | :--- |
| **lazy.nvim** | Plugin lifecycle manager | Automatically bootstrapped. Provides update and sync tools. |
| **nvim-treesitter** | Syntax highlighting & queries | Pinned version; includes 19 precompiled parsers. |
| **mason.nvim** | LSP/DAP/Linter package manager | Registry UI and tool installer. |
| **nvim-lspconfig** | LSP client configurations | Preconfigured client hooks. |
| **blink.cmp** | High-performance completion | Fast popup completion with snippet expansion. |
| **telescope.nvim** | Fuzzy picker & finder | Adapted for Tuim multigrid floating window hooks. |
| **alpha-nvim** | Dashboard UI | Fast dashboard module. |
| **harpoon** | Quick file bookmarks | Mark and jump module. |
---
## 2. Compatible Plugin Categories
Plugins that interact with standard Neovim abstractions generally work out of the box:
* **Buffer & Window Tools**: Formatting tools, linters, comment helpers, text objects, surround plugins (`mini.surround`, `nvim-surround`).
* **LSP & Code Intelligence**: Diagnostic highlighters, signature helpers, code action popups, refactoring engines.
* **Treesitter Extensions**: Context highlighters, text object motions, indentation guides.
* **Floating Window Pickers**: Pickers rendered via standard Neovim floating windows (`nvim_open_win`).
* **Themes & Colorschemes**: Pure Vim/Lua colorschemes that define highlight groups.
---
## 3. Incompatible & Unsupported Plugin Categories
Because Tuim owns the terminal frontend and renders over MessagePack-RPC, the following plugin types are unsupported unless specifically adapted:
| Incompatible Type | Why It Fails |
| :--- | :--- |
| **GUI-Specific Plugins** | Plugins requiring Neovide (`vim.g.neovide`), Goneovim, or VimR APIs. |
| **Direct Terminal Escape Sequences** | Terminal image viewers (Kitty graphics, Sixel, iTerm2 image protocol) that write escape codes directly to `stdout`. In Tuim, Neovim's stdout is the MessagePack-RPC socket. |
| **Terminal Hijackers** | Plugins that attempt to put the outer terminal into raw mode or replace the outer terminal screen. |
| **External Window Manipulators** | Plugins that assume control of outer `tmux` panes or window managers rather than Neovim splits. |
| **System Configuration Polluters** | Plugins that insist on reading or modifying `~/.config/nvim`. Tuim strictly uses `NVIM_APPNAME=tuim`. |
---
## 4. How to Test a New Plugin
When testing a plugin from the marketplace:
1. Search and install the plugin from **Extensions** → **Discover**.
2. Restart Tuim.
3. If the plugin fails or causes an error on boot, start in **Recovery Mode**:
```bash
TUIM_DISABLE_PLUGINS=1 tuim
```
4. Open **Extensions** → **Installed**, highlight the plugin, and press d to disable or u to uninstall.