Rename plugins feature to automations throughout codebase

- Update billing catalog feature codes: can_use_plugins → can_use_automations, can_create_plugins → can_create_automations
- Update all backend permission checks to use new feature codes
- Update API views to return automations permissions to frontend
- Update frontend types and hooks to use automations terminology
- Move Tasks to Extend section in Sidebar alongside Automations
- Update all related tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-16 17:42:59 -05:00
parent 79b76bf2dc
commit 0a4a8c7687
16 changed files with 94 additions and 87 deletions

View File

@@ -231,7 +231,8 @@ describe('usePlanFeatures', () => {
custom_domain: true,
white_label: true,
custom_oauth: true,
plugins: true,
automations: true,
can_create_automations: true,
tasks: true,
export_data: true,
video_conferencing: true,
@@ -259,7 +260,7 @@ describe('usePlanFeatures', () => {
expect(result.current.canUse('custom_domain')).toBe(true);
expect(result.current.canUse('white_label')).toBe(true);
expect(result.current.canUse('custom_oauth')).toBe(true);
expect(result.current.canUse('plugins')).toBe(true);
expect(result.current.canUse('automations')).toBe(true);
expect(result.current.canUse('tasks')).toBe(true);
expect(result.current.canUse('export_data')).toBe(true);
expect(result.current.canUse('video_conferencing')).toBe(true);
@@ -780,7 +781,8 @@ describe('FEATURE_NAMES', () => {
'custom_domain',
'white_label',
'custom_oauth',
'plugins',
'automations',
'can_create_automations',
'tasks',
'export_data',
'video_conferencing',
@@ -805,7 +807,8 @@ describe('FEATURE_NAMES', () => {
expect(FEATURE_NAMES.custom_domain).toBe('Custom Domain');
expect(FEATURE_NAMES.white_label).toBe('White Label');
expect(FEATURE_NAMES.custom_oauth).toBe('Custom OAuth');
expect(FEATURE_NAMES.plugins).toBe('Plugins');
expect(FEATURE_NAMES.automations).toBe('Automations');
expect(FEATURE_NAMES.can_create_automations).toBe('Custom Automation Creation');
expect(FEATURE_NAMES.tasks).toBe('Scheduled Tasks');
expect(FEATURE_NAMES.export_data).toBe('Data Export');
expect(FEATURE_NAMES.video_conferencing).toBe('Video Conferencing');
@@ -826,7 +829,8 @@ describe('FEATURE_DESCRIPTIONS', () => {
'custom_domain',
'white_label',
'custom_oauth',
'plugins',
'automations',
'can_create_automations',
'tasks',
'export_data',
'video_conferencing',
@@ -851,7 +855,8 @@ describe('FEATURE_DESCRIPTIONS', () => {
expect(FEATURE_DESCRIPTIONS.custom_domain).toContain('custom domain');
expect(FEATURE_DESCRIPTIONS.white_label).toContain('branding');
expect(FEATURE_DESCRIPTIONS.custom_oauth).toContain('OAuth');
expect(FEATURE_DESCRIPTIONS.plugins).toContain('plugin');
expect(FEATURE_DESCRIPTIONS.automations).toContain('Automate');
expect(FEATURE_DESCRIPTIONS.can_create_automations).toContain('automations');
expect(FEATURE_DESCRIPTIONS.tasks).toContain('task');
expect(FEATURE_DESCRIPTIONS.export_data).toContain('Export');
expect(FEATURE_DESCRIPTIONS.video_conferencing).toContain('video');