A plugin for central tracking of open nvim listen sockets
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Make setup optional and add config options

rektide d5d7ad0f 20e19d8b

+46 -9
+2 -1
.beads/issues.jsonl
··· 5 5 {"id":"nvim-registry-59v","title":"Create CLI script to send stdin to all registry sessions","description":"Create a CLI script that reads from stdin and sends the content to all Neovim sessions listed in the listen registry. The script should:\n\n- Read content from stdin\n- Connect to each listen socket in the registry\n- Send content to set a vim register in each session\n- Accept command line flags:\n - `--register` or `-r`: Specify which vim register to write to (default: clipboard register `\"*`)\n - `--env-guard` or `-e`: Environment variable check in format NAME=VALUE. Only run if environment variable exists and matches the specified value. Example: CLIPBOARD_STATE=data\n- Handle connection errors gracefully (skip invalid sockets)\n- Report which sessions were successfully updated\n\nThis enables external tools to sync clipboard content across all Neovim instances via the registry.\n\nTechnical details:\n- Use netcat or similar to connect to Unix sockets\n- Use nvim channel API to set registers remotely\n- Handle async communication with all sockets\n- Parse CLI flags with proper validation","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-08T18:30:47.273970453-05:00","created_by":"rektide","updated_at":"2026-01-08T18:39:16.550292794-05:00","closed_at":"2026-01-08T18:39:16.550292794-05:00","close_reason":"Closed via update","dependencies":[{"issue_id":"nvim-registry-59v","depends_on_id":"nvim-registry-iwa","type":"parent-child","created_at":"2026-01-08T18:30:50.239945982-05:00","created_by":"rektide"}]} 6 6 {"id":"nvim-registry-5aj","title":"Implement registry.lua - Main registry module","description":"Create the main registry module that coordinates all functionality. Export public API for plugin usage. Manage the overall state and orchestrate between other modules.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-08T18:25:45.045869094-05:00","created_by":"rektide","updated_at":"2026-01-08T18:35:35.73023499-05:00","closed_at":"2026-01-08T18:35:35.73023499-05:00","close_reason":"Closed via update"} 7 7 {"id":"nvim-registry-atn","title":"Implement cleanup.lua - Async socket validation","description":"Create cleanup.lua with async functionality using plenary.nvim. Check stats for all sockets in listen-registery using async operations. Perform batch update to remove invalid sockets after all stats are gathered. Expose :RegistryCleanup command.","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-08T18:25:46.936796595-05:00","created_by":"rektide","updated_at":"2026-01-08T18:36:32.278258028-05:00","closed_at":"2026-01-08T18:36:32.278258028-05:00","close_reason":"Closed via update"} 8 - {"id":"nvim-registry-bk8","title":"Create plugin directory for automatic registration","description":"The plugin currently lacks a proper `plugin/` directory entry for automatic registration. Neovim only automatically sources files from the root `plugin/` directory on startup.\n\nThe current structure has:\n- `lua/registry-nvim/plugin/registry.lua` - This is just a module directory, not automatically loaded\n- No root `plugin/` directory with autoload manifest\n\nThe fix requires:\n- Create `plugin/` directory at project root\n- Create `plugin/registry-nvim.lua` file that calls require('registry-nvim').setup()\n- This will be automatically sourced by Neovim on plugin load\n- Current instance will register itself automatically\n\nWithout this, users must manually call `require('registry-nvim').setup()` in their config for automatic registration to work, which defeats the purpose of auto-discovery.\n\nThe plugin manifest in `lua/registry-nvim/plugin/` directory should be removed or kept as a reference, but the actual auto-registration needs to happen from the root `plugin/` directory.","status":"in_progress","priority":2,"issue_type":"task","created_at":"2026-01-08T19:22:58.903525978-05:00","created_by":"rektide","updated_at":"2026-01-08T19:23:10.586344823-05:00"} 8 + {"id":"nvim-registry-bk8","title":"Create plugin directory for automatic registration","description":"The plugin currently lacks a proper `plugin/` directory entry for automatic registration. Neovim only automatically sources files from the root `plugin/` directory on startup.\n\nThe current structure has:\n- `lua/registry-nvim/plugin/registry.lua` - This is just a module directory, not automatically loaded\n- No root `plugin/` directory with autoload manifest\n\nThe fix requires:\n- Create `plugin/` directory at project root\n- Create `plugin/registry-nvim.lua` file that calls require('registry-nvim').setup()\n- This will be automatically sourced by Neovim on plugin load\n- Current instance will register itself automatically\n\nWithout this, users must manually call `require('registry-nvim').setup()` in their config for automatic registration to work, which defeats the purpose of auto-discovery.\n\nThe plugin manifest in `lua/registry-nvim/plugin/` directory should be removed or kept as a reference, but the actual auto-registration needs to happen from the root `plugin/` directory.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-08T19:22:58.903525978-05:00","created_by":"rektide","updated_at":"2026-01-08T19:24:02.651284292-05:00","closed_at":"2026-01-08T19:24:02.651284292-05:00","close_reason":"Closed via update"} 9 9 {"id":"nvim-registry-cst","title":"Implement health.lua - Neovim healthcheck","description":"Create health.lua that provides healthcheck diagnostics. Check neoconf availability, plenary availability, and registry status. Report on any issues or misconfigurations.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-08T18:25:47.889265985-05:00","created_by":"rektide","updated_at":"2026-01-08T18:37:31.359142755-05:00","closed_at":"2026-01-08T18:37:31.359142755-05:00","close_reason":"Closed via update"} 10 + {"id":"nvim-registry-ecx","title":"Make setup optional - plugin should work without config","description":"Since the plugin now has a plugin/ directory manifest that automatically calls setup(), calling `require('registry-nvim').setup()` in user config is redundant. The setup() call should be optional for users who want to customize settings, while the plugin should work out-of-the-box without any configuration.\n\nRequirements:\n- Ensure plugin works without any user config (automatic registration on load)\n- Keep setup() function available for passing custom options\n- Document that config is optional in README\n- Show examples of:\n 1. Basic usage (no config needed)\n 2. Custom configuration (if user wants to change settings like registry key)\n- Lazy.nvim config should show plugin works without setup() call\n- Example customization could include:\n - Changing the neoconf registry key name\n - Disabling automatic monitoring\n - Custom cleanup behavior\n\nThis makes the plugin truly zero-config while still allowing power users to customize behavior.","status":"in_progress","priority":2,"issue_type":"task","created_at":"2026-01-08T19:26:24.911973858-05:00","created_by":"rektide","updated_at":"2026-01-08T19:26:36.433344197-05:00"} 10 11 {"id":"nvim-registry-gxz","title":"Create example configuration and usage examples","description":"Add example configuration to README. Create usage examples in documentation. Show how to use the plugin manually and in automated workflows. Document the expected behavior.","status":"closed","priority":4,"issue_type":"chore","created_at":"2026-01-08T18:25:56.569158454-05:00","created_by":"rektide","updated_at":"2026-01-08T18:40:01.1203033-05:00","closed_at":"2026-01-08T18:40:01.1203033-05:00","close_reason":"Closed via update"} 11 12 {"id":"nvim-registry-hai","title":"Add --match regex flag to registry-send CLI","description":"Enhance the registry-send CLI script to add a `--match` / `-m` flag that allows conditional updates based on regex matching of stdin content.\n\nThe new flag should:\n- Accept a regex pattern as argument\n- Only send content to registry sessions if stdin matches the provided regex\n- Support all standard regex syntax\n- Provide clear feedback if the content doesn't match (skip update with informative message)\n- Work in combination with existing flags (--register, --env-guard)\n\nExample usage:\n```\necho \"some text\" | registry-send --match \"^some.*\"\n```\n\nThis enables more precise control over when clipboard content should be synced, allowing users to filter content based on patterns before distribution.","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-08T18:43:59.742088525-05:00","created_by":"rektide","updated_at":"2026-01-08T18:49:59.317668571-05:00","closed_at":"2026-01-08T18:49:59.317668571-05:00","close_reason":"Closed via update","dependencies":[{"issue_id":"nvim-registry-hai","depends_on_id":"nvim-registry-iwa","type":"parent-child","created_at":"2026-01-08T18:44:01.692044715-05:00","created_by":"rektide"}]} 12 13 {"id":"nvim-registry-iwa","title":"Extra Features for registry-nvim","description":"Epic for additional features beyond the core functionality. Includes CLI tools, integration utilities, and enhanced workflow capabilities.","status":"open","priority":4,"issue_type":"epic","created_at":"2026-01-08T18:30:35.840964917-05:00","created_by":"rektide","updated_at":"2026-01-08T18:30:35.840964917-05:00"}
+35 -8
README.md
··· 154 154 155 155 ### Lazy.nvim Configuration 156 156 157 + **Basic Usage (No Config Needed):** 158 + 159 + Since the plugin has a plugin manifest that automatically sets up, no configuration is required: 160 + 157 161 ```lua 158 162 { 159 163 'yourusername/registry-nvim', ··· 161 165 'folke/neoconf.nvim', 162 166 'nvim-lua/plenary.nvim', 163 167 }, 164 - config = function() 165 - local registry = require('registry-nvim') 168 + } 169 + ``` 170 + 171 + **With Custom Configuration:** 172 + 173 + If you want to customize settings like the neoconf registry key: 174 + 175 + ```lua 176 + { 177 + 'yourusername/registry-nvim', 178 + dependencies = { 179 + 'folke/neoconf.nvim', 180 + 'nvim-lua/plenary.nvim', 181 + }, 182 + opts = { 183 + listen_registry_key = "custom_registry_name", 184 + }, 185 + } 186 + ``` 166 187 167 - -- Basic setup 168 - registry.setup() 188 + Or using the setup function: 169 189 170 - -- Or with manual control of monitoring 171 - registry.setup() 172 - -- Later in your config: 173 - registry.start_monitor() 190 + ```lua 191 + { 192 + 'yourusername/registry-nvim', 193 + dependencies = { 194 + 'folke/neoconf.nvim', 195 + 'nvim-lua/plenary.nvim', 196 + }, 197 + config = function() 198 + require('registry-nvim').setup({ 199 + listen_registry_key = "custom_registry_name", 200 + }) 174 201 end, 175 202 } 176 203 ```
+7
lua/registry-nvim/config.lua
··· 6 6 listen_registry_key = "listen_registery", 7 7 } 8 8 9 + function M.setup(opts) 10 + opts = opts or {} 11 + if opts.listen_registry_key then 12 + config.listen_registry_key = opts.listen_registry_key 13 + end 14 + end 15 + 9 16 function M.has_neoconf() 10 17 return has_neoconf 11 18 end
+2
lua/registry-nvim/init.lua
··· 7 7 function M.setup(opts) 8 8 opts = opts or {} 9 9 10 + config.setup(opts) 11 + 10 12 if not config.has_neoconf() then 11 13 vim.notify("registry-nvim requires neoconf.nvim", vim.log.levels.ERROR) 12 14 return M