Enhance refactor commands with controller-aware Route() updates and fix code quality violations

Add semantic token highlighting for 'that' variable and comment file references in VS Code extension
Add Phone_Text_Input and Currency_Input components with formatting utilities
Implement client widgets, form standardization, and soft delete functionality
Add modal scroll lock and update documentation
Implement comprehensive modal system with form integration and validation
Fix modal component instantiation using jQuery plugin API
Implement modal system with responsive sizing, queuing, and validation support
Implement form submission with validation, error handling, and loading states
Implement country/state selectors with dynamic data loading and Bootstrap styling
Revert Rsx::Route() highlighting in Blade/PHP files
Target specific PHP scopes for Rsx::Route() highlighting in Blade
Expand injection selector for Rsx::Route() highlighting
Add custom syntax highlighting for Rsx::Route() and Rsx.Route() calls
Update jqhtml packages to v2.2.165
Add bundle path validation for common mistakes (development mode only)
Create Ajax_Select_Input widget and Rsx_Reference_Data controller
Create Country_Select_Input widget with default country support
Initialize Tom Select on Select_Input widgets
Add Tom Select bundle for enhanced select dropdowns
Implement ISO 3166 geographic data system for country/region selection
Implement widget-based form system with disabled state support

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-10-30 06:21:56 +00:00
parent e678b987c2
commit f6ac36c632
5683 changed files with 5854736 additions and 22329 deletions

View File

@@ -186,6 +186,31 @@
"created_at": "2025-10-14T17:23:51+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe add_experience_id_to_sessions"
},
"2025_10_28_025035_create_projects_table.php": {
"created_at": "2025-10-28T02:50:35+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe create_projects_table"
},
"2025_10_28_025113_create_tasks_table.php": {
"created_at": "2025-10-28T02:51:13+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe create_tasks_table"
},
"2025_10_28_043559_create_clients_table.php": {
"created_at": "2025-10-28T04:35:59+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe create_clients_table"
},
"2025_10_28_223500_create_geographic_data_tables.php": {
"created_at": "2025-10-28T22:35:00+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe create_geographic_data_tables"
},
"2025_10_29_034934_add_soft_deletes_to_core_tables.php": {
"created_at": "2025-10-29T03:49:34+00:00",
"created_by": "root",
"command": "php artisan make:migration:safe add_soft_deletes_to_core_tables"
}
}
}

View File

@@ -0,0 +1,69 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*
* IMPORTANT: Use raw MySQL queries for clarity and auditability
* DB::statement() with raw SQL
* Schema::create() with Blueprint
*
* REQUIRED: ALL tables MUST have: id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
* No exceptions - every table needs this exact ID column (SIGNED for easier migrations)
*
* Integer types: Use BIGINT for all integers, TINYINT(1) for booleans only
* Never use unsigned - all integers should be signed
*
* Migrations must be self-contained - no Model/Service references
*
* @return void
*/
public function up()
{
DB::statement("
CREATE TABLE projects (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
site_id BIGINT NOT NULL,
name VARCHAR(255) NOT NULL,
description LONGTEXT,
client_id BIGINT NOT NULL,
client_department_id BIGINT NULL,
contact_id BIGINT NULL,
status BIGINT NOT NULL DEFAULT 1,
priority BIGINT NOT NULL DEFAULT 2,
start_date DATE NULL,
due_date DATE NULL,
completed_date DATE NULL,
budget DECIMAL(15, 2) NULL,
notes LONGTEXT,
created_by BIGINT NULL,
owner_user_id BIGINT NULL,
created_at TIMESTAMP(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at TIMESTAMP(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
updated_by BIGINT NULL,
INDEX idx_site_id (site_id),
INDEX idx_client_id (client_id),
INDEX idx_client_department_id (client_department_id),
INDEX idx_contact_id (contact_id),
INDEX idx_status (status),
INDEX idx_priority (priority),
INDEX idx_created_by (created_by),
INDEX idx_owner_user_id (owner_user_id),
INDEX idx_created_at (created_at),
INDEX idx_updated_at (updated_at),
INDEX idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
");
}
/**
* down() method is prohibited in RSpade framework
* Migrations should only move forward, never backward
* You may remove this comment as soon as you see it and understand.
*/
};

View File

@@ -0,0 +1,64 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*
* IMPORTANT: Use raw MySQL queries for clarity and auditability
* DB::statement() with raw SQL
* Schema::create() with Blueprint
*
* REQUIRED: ALL tables MUST have: id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
* No exceptions - every table needs this exact ID column (SIGNED for easier migrations)
*
* Integer types: Use BIGINT for all integers, TINYINT(1) for booleans only
* Never use unsigned - all integers should be signed
*
* Migrations must be self-contained - no Model/Service references
*
* @return void
*/
public function up()
{
DB::statement("
CREATE TABLE tasks (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
site_id BIGINT NOT NULL,
title VARCHAR(255) NOT NULL,
description LONGTEXT,
taskable_type VARCHAR(255) NOT NULL,
taskable_id BIGINT NOT NULL,
status BIGINT NOT NULL DEFAULT 1,
priority BIGINT NOT NULL DEFAULT 2,
due_date DATE NULL,
completed_date DATE NULL,
assigned_to_user_id BIGINT NULL,
notes LONGTEXT,
created_by BIGINT NULL,
created_at TIMESTAMP(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at TIMESTAMP(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
updated_by BIGINT NULL,
INDEX idx_site_id (site_id),
INDEX idx_taskable (taskable_type, taskable_id),
INDEX idx_status (status),
INDEX idx_priority (priority),
INDEX idx_assigned_to_user_id (assigned_to_user_id),
INDEX idx_created_by (created_by),
INDEX idx_created_at (created_at),
INDEX idx_updated_at (updated_at),
INDEX idx_title (title)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
");
}
/**
* down() method is prohibited in RSpade framework
* Migrations should only move forward, never backward
* You may remove this comment as soon as you see it and understand.
*/
};

View File

@@ -0,0 +1,58 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*
* IMPORTANT: Use raw MySQL queries for clarity and auditability
* DB::statement() with raw SQL
* Schema::create() with Blueprint
*
* REQUIRED: ALL tables MUST have: id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
* No exceptions - every table needs this exact ID column (SIGNED for easier migrations)
*
* Integer types: Use BIGINT for all integers, TINYINT(1) for booleans only
* Never use unsigned - all integers should be signed
*
* Migrations must be self-contained - no Model/Service references
*
* @return void
*/
public function up()
{
// Add new columns to existing clients table
DB::statement("
ALTER TABLE clients
ADD COLUMN email VARCHAR(255) NULL AFTER website,
ADD COLUMN fax VARCHAR(50) NULL AFTER phone,
ADD COLUMN address_street VARCHAR(255) NULL COMMENT 'renamed from address',
ADD COLUMN address_country VARCHAR(100) NULL DEFAULT 'USA',
ADD COLUMN industry VARCHAR(100) NULL,
ADD COLUMN company_size VARCHAR(20) NULL COMMENT '1-10, 11-50, 51-200, 201-500, 501-1000, 1000+',
ADD COLUMN established_year BIGINT NULL,
ADD COLUMN revenue_range VARCHAR(50) NULL,
ADD COLUMN facebook_url VARCHAR(255) NULL,
ADD COLUMN twitter_handle VARCHAR(100) NULL,
ADD COLUMN linkedin_url VARCHAR(255) NULL,
ADD COLUMN instagram_handle VARCHAR(100) NULL,
ADD COLUMN tags JSON NULL,
ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT 'active, inactive, prospect, archived',
ADD COLUMN preferred_contact_method VARCHAR(20) NULL DEFAULT 'email' COMMENT 'email, phone, text, any',
ADD COLUMN newsletter_opt_in TINYINT(1) NOT NULL DEFAULT 0,
ADD COLUMN deleted_at TIMESTAMP NULL DEFAULT NULL,
ADD INDEX idx_email (email),
ADD INDEX idx_status (status),
ADD INDEX idx_deleted_at (deleted_at)
");
}
/**
* down() method is prohibited in RSpade framework
* Migrations should only move forward, never backward
* You may remove this comment as soon as you see it and understand.
*/
};

View File

@@ -0,0 +1,76 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*
* IMPORTANT: Use raw MySQL queries for clarity and auditability
* DB::statement() with raw SQL
* Schema::create() with Blueprint
*
* REQUIRED: ALL tables MUST have: id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
* No exceptions - every table needs this exact ID column (SIGNED for easier migrations)
*
* Integer types: Use BIGINT for all integers, TINYINT(1) for booleans only
* Never use unsigned - all integers should be signed
*
* Migrations must be self-contained - no Model/Service references
*
* @return void
*/
public function up()
{
// Countries table - ISO 3166-1 data
DB::statement("
CREATE TABLE countries (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
alpha2 CHAR(2) NOT NULL UNIQUE COMMENT 'ISO 3166-1 alpha-2 code (US, CA, GB)',
alpha3 CHAR(3) NOT NULL COMMENT 'ISO 3166-1 alpha-3 code (USA, CAN, GBR)',
`numeric` CHAR(3) NOT NULL COMMENT 'ISO 3166-1 numeric code (840, 124, 826)',
name VARCHAR(255) NOT NULL COMMENT 'Official country name',
common_name VARCHAR(255) NULL COMMENT 'Common name if different from official',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Active status - disable instead of delete to preserve FKs',
created_at TIMESTAMP NULL DEFAULT NULL,
updated_at TIMESTAMP NULL DEFAULT NULL,
INDEX idx_alpha2 (alpha2),
INDEX idx_alpha3 (alpha3),
INDEX idx_enabled (enabled)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
");
// Regions table - ISO 3166-2 subdivisions (states, provinces, territories, etc.)
DB::statement("
CREATE TABLE regions (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(10) NOT NULL COMMENT 'ISO 3166-2 code (US-CA, CA-ON, GB-ENG)',
country_alpha2 CHAR(2) NOT NULL COMMENT 'Foreign key to countries.alpha2',
name VARCHAR(255) NOT NULL COMMENT 'Subdivision name (California, Ontario, England)',
type VARCHAR(50) NULL COMMENT 'Type: state, province, territory, country, etc.',
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Active status - disable instead of delete',
created_at TIMESTAMP NULL DEFAULT NULL,
updated_at TIMESTAMP NULL DEFAULT NULL,
INDEX idx_country (country_alpha2),
INDEX idx_code (code),
INDEX idx_enabled (enabled),
UNIQUE KEY unique_country_code (country_alpha2, code),
CONSTRAINT fk_regions_country
FOREIGN KEY (country_alpha2)
REFERENCES countries(alpha2)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
");
// Uncomment after verifying seeder works:
// \Illuminate\Support\Facades\Artisan::call('rsx:seed:geographic-data');
}
/**
* down() method is prohibited in RSpade framework
* Migrations should only move forward, never backward
* You may remove this comment as soon as you see it and understand.
*/
};

View File

@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*
* IMPORTANT: Use raw MySQL queries for clarity and auditability
* DB::statement("ALTER TABLE core_tables ADD COLUMN new_field VARCHAR(255)")
* Schema::table() with Blueprint
*
* Migrations must be self-contained - no Model/Service references
*
* @return void
*/
public function up()
{
// Note: clients table already has soft delete columns from previous migration
// Add soft delete columns to contacts table
DB::statement("ALTER TABLE contacts ADD COLUMN deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_by");
DB::statement("ALTER TABLE contacts ADD COLUMN deleted_by BIGINT NULL DEFAULT NULL AFTER deleted_at");
DB::statement("ALTER TABLE contacts ADD INDEX idx_deleted_at (deleted_at)");
// Add soft delete columns to projects table
DB::statement("ALTER TABLE projects ADD COLUMN deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_by");
DB::statement("ALTER TABLE projects ADD COLUMN deleted_by BIGINT NULL DEFAULT NULL AFTER deleted_at");
DB::statement("ALTER TABLE projects ADD INDEX idx_deleted_at (deleted_at)");
// Add soft delete columns to tasks table
DB::statement("ALTER TABLE tasks ADD COLUMN deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_by");
DB::statement("ALTER TABLE tasks ADD COLUMN deleted_by BIGINT NULL DEFAULT NULL AFTER deleted_at");
DB::statement("ALTER TABLE tasks ADD INDEX idx_deleted_at (deleted_at)");
}
/**
* down() method is prohibited in RSpade framework
* Migrations should only move forward, never backward
* You may remove this comment as soon as you see it and understand.
*/
};