···11-{"id":"nvim-registry-10s","title":"Create help documentation (doc/)","description":"Create comprehensive help documentation in doc/ directory. Generate doc/registry-nvim.txt with proper Vim help format. Document all commands, configuration options, and usage examples.","status":"in_progress","priority":3,"issue_type":"task","created_at":"2026-01-08T18:25:48.694899845-05:00","created_by":"rektide","updated_at":"2026-01-08T18:37:33.483083297-05:00"}
11+{"id":"nvim-registry-10s","title":"Create help documentation (doc/)","description":"Create comprehensive help documentation in doc/ directory. Generate doc/registry-nvim.txt with proper Vim help format. Document all commands, configuration options, and usage examples.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-08T18:25:48.694899845-05:00","created_by":"rektide","updated_at":"2026-01-08T18:38:14.516605718-05:00","closed_at":"2026-01-08T18:38:14.516605718-05:00","close_reason":"Closed via update"}
22{"id":"nvim-registry-3r0","title":"Implement init.lua - Plugin initialization","description":"Create init.lua as the main entry point. Implement setup() function for lazy.nvim configuration. Load and initialize all modules. Set up autocmds and commands.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-08T18:25:49.453508485-05:00","created_by":"rektide","updated_at":"2026-01-08T18:36:47.806184235-05:00","closed_at":"2026-01-08T18:36:47.806184235-05:00","close_reason":"Closed via update"}
33-{"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":"open","priority":3,"issue_type":"feature","created_at":"2026-01-08T18:30:47.273970453-05:00","created_by":"rektide","updated_at":"2026-01-08T18:30:47.273970453-05:00","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"}]}
33+{"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":"in_progress","priority":3,"issue_type":"feature","created_at":"2026-01-08T18:30:47.273970453-05:00","created_by":"rektide","updated_at":"2026-01-08T18:38:16.976972735-05:00","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"}]}
44{"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"}
55{"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"}
66{"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"}
+107
scripts/registry-send
···11+#!/usr/bin/env -S bash
22+33+set -e
44+55+REGISTER='"*'
66+ENV_GUARD=""
77+CONTENT=""
88+99+while [[ $# -gt 0 ]]; do
1010+ case $1 in
1111+ -r|--register)
1212+ REGISTER="$2"
1313+ if [[ ! "$REGISTER" =~ ^\" ]]; then
1414+ REGISTER="\"$REGISTER\""
1515+ fi
1616+ shift 2
1717+ ;;
1818+ -e|--env-guard)
1919+ ENV_GUARD="$2"
2020+ shift 2
2121+ ;;
2222+ -h|--help)
2323+ cat <<'EOF'
2424+Usage: registry-send [OPTIONS]
2525+2626+Send stdin content to all Neovim sessions in the registry.
2727+2828+Options:
2929+ -r, --register NAME Set to specified register (default: clipboard *)
3030+ -e, --env-guard VAR Only run if VAR=VALUE environment matches
3131+ -h, --help Show this help message
3232+3333+Examples:
3434+ echo "hello" | registry-send
3535+ echo "world" | registry-send -r a
3636+ echo "test" | registry-send -e CLIPBOARD_STATE=enabled
3737+EOF
3838+ exit 0
3939+ ;;
4040+ *)
4141+ echo "Unknown option: $1"
4242+ echo "Use --help for usage"
4343+ exit 1
4444+ ;;
4545+ esac
4646+done
4747+4848+if [[ -n "$ENV_GUARD" ]]; then
4949+ IFS='=' read -r NAME VALUE <<< "$ENV_GUARD"
5050+ if [[ "$NAME" == "" || "$VALUE" == "" ]]; then
5151+ echo "Invalid env-guard format. Expected NAME=VALUE" >&2
5252+ exit 1
5353+ fi
5454+ ACTUAL_VALUE="${!NAME}"
5555+ if [[ "$ACTUAL_VALUE" == "" ]]; then
5656+ echo "Environment variable $NAME not found" >&2
5757+ exit 1
5858+ fi
5959+ if [[ "$ACTUAL_VALUE" != "$VALUE" ]]; then
6060+ echo "Environment variable $NAME: expected '$VALUE', got '$ACTUAL_VALUE'" >&2
6161+ exit 1
6262+ fi
6363+fi
6464+6565+CONTENT=$(cat)
6666+if [[ -z "$CONTENT" ]]; then
6767+ echo "No content read from stdin" >&2
6868+ exit 1
6969+fi
7070+7171+CONFIG_PATH="${HOME}/.config/nvim/neoconf.json"
7272+if [[ ! -f "$CONFIG_PATH" ]]; then
7373+ echo "Could not read neoconf config from $CONFIG_PATH" >&2
7474+ exit 1
7575+fi
7676+7777+REGISTRY=$(jq -r '.listen_registery[] // empty' "$CONFIG_PATH" 2>/dev/null || echo "")
7878+if [[ -z "$REGISTRY" ]]; then
7979+ echo "No listen sockets found in registry" >&2
8080+ exit 1
8181+fi
8282+8383+SUCCESS=0
8484+FAILED=0
8585+8686+while IFS= read -r SOCKET; do
8787+ if [[ -z "$SOCKET" ]]; then
8888+ continue
8989+ fi
9090+9191+ if nvim --server "$SOCKET" --remote-send "<Esc>:call setreg($REGISTER, '$(echo "$CONTENT" | sed "s/'/'\\\\''/g")')<CR>" 2>/dev/null; then
9292+ echo "✓ $SOCKET"
9393+ ((SUCCESS++))
9494+ else
9595+ echo "✗ $SOCKET: failed to send"
9696+ ((FAILED++))
9797+ fi
9898+done <<< "$REGISTRY"
9999+100100+echo ""
101101+echo "Sent to $SUCCESS session(s), $FAILED failed"
102102+103103+if [[ $FAILED -gt 0 ]]; then
104104+ exit 1
105105+fi
106106+107107+exit 0