.windsurf/rules/chatwoot.md
bundle install && pnpm installpnpm dev or overmind start -f ./Procfile.devbundle exec rails db:seed (quickly populates minimal data for standard feature verification)bundle exec rails search:setup_test_data (bulk fixture generation for search/performance/manual load scenarios)Seeders::AccountSeeder is available as an internal utility and is exposed through Super Admin Accounts#seed, but can be used directly in dev workflows too:
Internal::SeedAccountJob).bundle exec rails runner "Internal::SeedAccountJob.perform_now(Account.find(<id>))" (or call Seeders::AccountSeeder.new(account: Account.find(<id>)).perform! directly).pnpm eslint / pnpm eslint:fixbundle exec rubocop -apnpm test or pnpm test:watchbundle exec rspec spec/path/to/file_spec.rbbundle exec rspec spec/path/to/file_spec.rb:LINE_NUMBERovermind start -f Procfile.devrbenv and install the version listed in .ruby-version (e.g., rbenv install $(cat .ruby-version))bundle or rspec commands, init rbenv in your shell (eval "$(rbenv init -)") so the correct Ruby/Bundler versions are usedbundle exec for Ruby CLI tasks (rspec, rake, rubocop, etc.)lib/custom_exceptions/)<script setup> at the toptailwind.config.js for color definitionswith_modified_env (from spec helpers) over stubbing ENV directly in specserror.class.name over constant class equality when asserting raised errors.codex/ and use Procfile.worktree for worktree process orchestration..codex/environments/environment.toml should dynamically generate per-worktree DB/port values (Rails, Vite, Redis DB index) to avoid collisions.type(scope): subject (scope optional)feat(auth): add user authenticationCloses section with relevant issue links (GitHub, Linear, etc.).How to test from a product/UX standpoint.How to reproduce when helpful.What changed section for implementation highlights.How this was tested section listing specs/commands.en.yml and en.jsonen.yml, Frontend i18n → en.jsoncomponents-next/ for message bubbles (the rest is being deprecated)module/class definitions; avoid nested stylesenterprise/ that extends/overrides OSS code.enterprise/ and keep behavior compatible.Practical checklist for any change impacting core logic or public APIs
rg -n "FooService|ControllerName|ModelName" app enterprise).enterprise/app/...), orprepend_mod_with, hooks, configuration) to avoid hard forks.enterprise/ to prevent drift.spec/enterprise, mirroring OSS spec layout where applicable.prepend_mod_with/include_mod_with) instead of editing OSS files directly—especially for policies, controllers, and services. For Enterprise-exclusive features, place code directly under enterprise/.replaceInstallationName from shared/composables/useBranding in the UI layer (for example tooltip and suggestion labels) instead of adding hardcoded brand-specific copy.