config

SKILL.md

Design Principle

Lua owns all default values. The Go daemon receives the complete config via the CURSORTAB_CONFIG environment variable with all defaults already applied. Go structs should not have default values or use pointer types for optional fields - all fields are required and must be provided by Lua.

Lua-only vs Go fields: Some config sections are handled entirely in Lua and never sent to Go: enabled, keymaps, ui, blink. Conversely, Go's Config struct has auto-populated fields (ns_id, editor_version, editor_os) that Lua sets internally — these are not user-configurable and should not be added to default_config.

Files to Update

When modifying config options, update these locations:

1. Lua Side

lua/cursortab/config.lua

  • Type annotation in ---@class block (e.g., ---@field new_option type)
  • Default value in default_config table (required - Go expects all values)
  • Validation (if enum-like, add to valid_* table and update error in validate_config)
  • Unknown keys are automatically rejected by validate_config_keys() — no update needed there unless changing the validation logic itself
  • If adding/modifying default values for highlight groups, update config.setup_highlights() in config.lua
Installs
3
First Seen
Mar 30, 2026