krayin/laravel-crm
50.5
Adequate · 19 September 2026
113.9k
lines of production code
PHP
primary language
1
measurement over time
What this system is
This system is a Customer Relationship Management (CRM) platform built on Laravel 12 and PHP 8.3, designed to manage leads, contacts, products, and sales activities. It provides a comprehensive admin interface for tracking pipelines, organizing communications via email and activity logs, and handling marketing campaigns. The application features a modernized Vue 3 frontend with Vite, supporting multi-language localization and granular role-based access control for administrative users.
How it got here
2021 — Krayin CRM rebrand and Laravel 12 upgrade
121 changes.
The project was rebranded to Krayin CRM and upgraded to Laravel 12 with PHP 8.3, shifting the frontend build system from Laravel Mix to Vite and Vue 2 to Vue 3. This period established a modular package architecture, introducing core CRM entities such as Leads, Contacts, Products, and Quotes alongside a unified user authentication system. The work focused on rebuilding the admin interface with modern tooling and implementing foundational data models and repositories for the new CRM features.
2022–2024 — Admin UI overhaul and feature expansion
98 changes.
This period focused on a comprehensive redesign of the admin interface, introducing a modular Vue.js component system, dark mode support, and consistent loading states across all views. It also expanded core CRM capabilities by adding warehouse management, marketing campaigns, data import tools, and extensive localization support for multiple languages.
2025–2026 — AI integration and e2e testing infrastructure
23 changes.
This period focused on integrating AI capabilities for lead data extraction and implementing comprehensive Playwright end-to-end tests for the Admin panel. It also included significant UI enhancements such as unified mega-search components, mobile-responsive navigation, and new localization support for Korean, Chinese, and Japanese.
Features
Activity logging for model creation, updates, and deletion
The new LogsActivity trait automatically records system activities when models are created, updated, or deleted. On creation, it logs a generic 'created' event. On updates, it tracks specific attribute changes, storing both old and new values (with JSON decoding and recursive sorting for consistency) while excluding custom attributes and standard metadata fields like IDs and timestamps. On deletion, it cleans up associated activity records. This provides users with an audit trail of data modifications within the activity system.
packages/Webkul/Activity/src/Traits · high confidence
Activity management controller with calendar view and meeting overlap detection
The new ActivityController introduces a dedicated calendar view for activities, allowing users to view scheduled items by date range, and enforces meeting overlap checks to prevent scheduling conflicts when creating or updating meetings. It also supports mass update actions for activities and handles activity creation with specific validation for notes and files.
packages/Webkul/Admin/src/Http/Controllers/Activity · high confidence
Activity module database schema updates and participant support
The Activity module's database structure has been expanded to support new features and data integrity. A new 'activity\_participants' table allows activities to be linked to multiple users or persons, enabling collaborative tracking. The main 'activities' table now includes a 'location' field for specifying where an activity takes place, and file attachments are supported via the 'activity\_files' table. Additionally, the 'user\_id' column in the activities table has been altered to be nullable, allowing activities to exist without being strictly tied to a single creator, while maintaining referential integrity with the users table.
packages/Webkul/Activity/src/Database · high confidence
Add Google Contacts integration for exporting CRM persons
This change introduces the Google Contact package, enabling users to connect their Google accounts and export CRM persons to Google Contacts. It adds the necessary database schema (google\_contact\_accounts, contact\_export\_batches, contact\_export\_batch\_items), service classes for OAuth token management and Google API interaction, and queued jobs to handle batched exports. The feature is wired into the admin panel via new ACL rules and a settings menu item, and includes translations for multiple locales.
packages/Webkul/GoogleContact · high confidence
Add Japanese (ja) localization for the Admin panel
Users can now view the Admin interface in Japanese. This change introduces the complete Japanese translation file (app.php) for the Webkul Admin package, covering UI strings for authentication, account management, activities, and core navigation elements.
packages/Webkul/Admin/src/Resources/lang/ja · high confidence
Add Lead Types management page in Settings
The Settings area now includes a dedicated page for managing Lead Types. This new view provides a data grid to list, edit, and delete lead types, with a modal form for creating and updating entries. Access is controlled by the 'settings.lead.types.create' permission, and the interface supports both desktop table and mobile card layouts.
packages/Webkul/Admin/src/Resources/views/settings/types · high confidence
Add email template management in settings
The admin panel now includes a new section under Settings for managing email templates. Administrators can view a list of templates in a data grid, create new templates by specifying a name, subject, and HTML content (with support for dynamic placeholders), and edit existing templates. The interface includes breadcrumb navigation, permission-based access control for creation, and a sticky header for easy access to save actions.
packages/Webkul/Admin/src/Resources/views/settings/email-templates · high confidence
Add pipeline management views in settings
The admin settings area now includes views for managing sales pipelines. This change adds the list (index), create, and edit pages for pipelines, allowing administrators to define pipeline names, set default pipelines, configure 'rotten days' thresholds, and manage pipeline stages via a draggable interface.
packages/Webkul/Admin/src/Resources/views/settings/pipelines · high confidence
Added Arabic language support for the admin panel
The admin interface now supports Arabic, with a new translation file (app.php) providing localized strings for navigation, user authentication, account management, and activity components. Users can now interact with the admin panel in Arabic.
packages/Webkul/Admin/src/Resources/lang/ar · high confidence
Added Chinese (Simplified) localization for the Admin panel
Users can now view the Admin panel interface in Simplified Chinese. This change introduces the complete zh\_CN language file (app.php), providing translations for core administrative elements including ACL permissions, user authentication flows (login, password reset), account management, and activity components (emails, notes, calls, meetings).
_packages/Webkul/Admin/src/Resources/lang/zh\CN · high confidence
Added Country and CountryState model contracts and proxies
This change introduces the foundational contract and proxy classes for Country and CountryState entities within the Core package. Specifically, it adds the Country and CountryState interfaces in the Contracts namespace and their corresponding CountryProxy and CountryStateProxy classes in the Models namespace, which extend Konekt\\Concord's ModelProxy. Additionally, minor formatting cleanup was applied to the existing CoreConfig interface and CoreConfigProxy class to remove unnecessary whitespace and empty lines.
packages/Webkul/Core/src/Contracts, packages/Webkul/Core/src/Models · high confidence
Added Google Contacts connection settings page
A new settings page has been added to the admin interface for managing Google Contacts integration. Users can now view their connection status, initiate a connection to their Google account, or disconnect an existing integration directly from this view.
packages/Webkul/Admin/src/Resources/views/settings/google-contacts · high confidence
Added Korean (ko) language support for the Admin panel
Users can now view the Admin interface in Korean. This change introduces a new translation file (app.php) containing localized strings for core administrative functions, including user authentication (login, password reset), account management, and activity tracking (emails, calls, meetings, notes).
packages/Webkul/Admin/src/Resources/lang/ko · high confidence
Added Laravel queue and Sanctum database migrations
The application now includes database migrations to support Laravel's queue system and Sanctum API authentication. New tables are created for personal access tokens (including an expiration field), job batches, and the jobs queue itself. Additionally, the failed jobs table migration has been updated to use the modern anonymous class syntax.
database/migrations · high confidence
Added Lead module contracts and model proxies
The Lead module now includes interface definitions for Lead, Pipeline, Product, Source, Stage, and Type, along with corresponding Konekt Concord model proxies. These files establish the foundational contract and proxy structure required for the module's data models.
packages/Webkul/Lead/src/Contracts, packages/Webkul/Lead/src/Models · high confidence
Added Persian (Farsi) localization for the admin panel
The admin interface is now available in Persian (Farsi). This change introduces a new language file (\fa/app.php\) containing translations for core administrative elements, including navigation labels (leads, quotes, contacts, users), authentication screens (login, password reset), account settings, and activity management components. Users can now interact with the system in Farsi.
packages/Webkul/Admin/src/Resources/lang/fa · high confidence
Added Portuguese (Brazil) language support
The admin interface now supports Portuguese (Brazil) for users selecting this locale. This change introduces the complete set of translation strings for the admin panel, covering areas such as user authentication, account management, lead and activity management, and system settings, ensuring the UI is fully localized for Portuguese-speaking administrators.
_packages/Webkul/Admin/src/Resources/lang/pt\BR · high confidence
Added Turkish language support for the admin panel
The admin interface now supports Turkish, providing localized strings for navigation, user authentication, account management, and activity components. Users can now interact with the system in Turkish, with translations covering core areas such as leads, quotes, emails, and settings.
packages/Webkul/Admin/src/Resources/lang/tr · high confidence
Added Vietnamese language support for the Admin interface
Introduced a new Vietnamese (vi) locale for the Admin panel, providing translations for core UI elements including ACL permissions, user authentication flows (login, password reset), account management, and activity components. This enables Vietnamese-speaking administrators to interact with the system in their native language.
packages/Webkul/Admin/src/Resources/lang/vi · high confidence
Added breadcrumb navigation partial
A new breadcrumb navigation partial has been introduced to the admin interface, allowing users to see their current location within the application hierarchy. The component renders a list of links for previous pages and highlights the current page, supporting both light and dark modes with appropriate text colors and spacing.
packages/Webkul/Admin/src/Resources/views/partials · high confidence
Added console command to process inbound emails
A new Artisan command \inbound-emails:process\ has been added to the application. This command allows users to manually trigger the processing of incoming emails from the mail server by invoking the \InboundEmailProcessor\ service, which handles messages from all configured folders.
packages/Webkul/Email/src/Console · high confidence
Added dashboard shimmer loading components
New shimmer (skeleton) loading components have been added for the dashboard index page, covering sections for open leads by states, overall metrics, revenue by sources and types, total revenue, top persons, top selling products, and total leads. These components provide visual placeholders that mimic the layout of the actual dashboard widgets, improving the perceived loading experience for users.
packages/Webkul/Admin/src/Resources/views/components/shimmer/dashboard, packages/Webkul/Admin/src/Resources/views/components/shimmer/datagrid · high confidence
Added email and attachment contract interfaces and model proxies
The email module now includes empty contract interfaces for Email and Attachment, alongside corresponding model proxy classes (AttachmentProxy and EmailProxy) extending Konekt\\Concord's ModelProxy. These additions establish the structural foundation for the email feature within the Concord module system, allowing for future implementation of actual email and attachment logic.
packages/Webkul/Email/src/Contracts, packages/Webkul/Email/src/Models · high confidence
Added helper for loading package translation files
A new \jsonTranslations\ method has been added to the \Helper\ class in the Core package. This utility allows the application to load language files for specific packages by constructing the path to the locale-specific \app.php\ file within the package's \Resources/lang\ directory, with a fallback to English if the requested locale file is not found.
packages/Webkul/Core/src/Helpers · high confidence
Added interface and proxy classes for Contact entities
The Contact package now includes empty \Organization\ and \Person\ interfaces in the Contracts namespace, alongside corresponding \OrganizationProxy\ and \PersonProxy\ classes in the Models namespace that extend \Konekt\\Concord\\Proxies\\ModelProxy\. These additions establish the structural contracts and proxy wiring for Contact entities within the Concord module system, enabling the framework to resolve and manage these specific model types.
packages/Webkul/Contact/src/Contracts, packages/Webkul/Contact/src/Models · high confidence
Added loading skeleton for the Kanban view toolbar
The Kanban view for the leads index now displays a shimmer loading state for its toolbar. This new component renders placeholder shapes for the search input, action buttons, pipeline switcher, and view switcher controls, providing visual feedback to users while the Kanban data is being fetched.
packages/Webkul/Admin/src/Resources/views/components/shimmer/leads/index/kanban · high confidence
Added reusable spinner component with dark mode support
A new Blade component for the loading spinner has been introduced in the Admin package. It renders an SVG spinner that supports a customizable color prop and automatically adapts to dark mode by switching the text color to white, ensuring consistent visibility across themes.
packages/Webkul/Admin/src/Resources/views/components/spinner · high confidence
Added sample data files for data transfer and updated storage ignore rules
This change introduces sample CSV files (leads, persons, products) into the storage/app/public/data-transfer/samples directory to support data import/export functionality. It also updates several .gitignore files within the storage directory to ensure these new sample files and specific Laravel Excel artifacts are handled correctly in version control, while excluding other generated framework files.
storage · high confidence
Added shimmer loading component for accordion UI elements
A new Blade view component has been introduced at packages/Webkul/Admin/src/Resources/views/components/shimmer/accordion/index.blade.php to provide a skeleton loading state for accordion sections. This component renders a styled placeholder with shimmer effects, ensuring a consistent user experience while accordion data is being fetched or processed.
packages/Webkul/Admin/src/Resources/views/components/shimmer/accordion · high confidence
Added shimmer loading components for lead mail and stages views
New shimmer (skeleton) loading placeholders have been added for the lead view section, specifically for the mail list and pipeline stages. This improves the user experience by providing visual feedback while the lead's email history and stage information are being loaded.
packages/Webkul/Admin/src/Resources/views/components/shimmer/leads/view · high confidence
Added shimmer loading placeholders for Settings attributes and web forms
New shimmer (skeleton) components have been added to the admin interface to provide visual loading states for the Settings attributes page and the web forms datagrid. The \attributes.blade.php\ component displays a two-column layout with shimmering headers and input fields, while the web forms section includes \head.blade.php\ and \body.blade.php\ components that render row-based loading skeletons for the datagrid, improving perceived performance during data loading.
packages/Webkul/Admin/src/Resources/views/components/shimmer/settings · high confidence
Added shimmer loading placeholders for admin UI components
The admin interface now includes visual loading placeholders (shimmers) for images, tabs, TinyMCE editors, and tree structures. These new Blade components provide immediate visual feedback to users while content is being fetched, improving the perceived performance of the admin dashboard.
(repo-wide) · high confidence
Added shimmer loading placeholders for datagrid table views
New Blade components for datagrid table headers and bodies have been added to provide visual loading states (shimmers) when data is being fetched. These components support both standard single-row and multi-row display modes, ensuring a consistent user experience during asynchronous data loads in the admin interface.
packages/Webkul/Admin/src/Resources/views/components/shimmer/datagrid/table, packages/Webkul/Admin/src/Resources/views/components/shimmer/datagrid/toolbar · high confidence
Added shimmer loading placeholders for person view sections
The person view page now includes dedicated shimmer loading components for the activities, stages, and tags sections. These new Blade templates provide visual feedback during data loading, displaying animated placeholders for the activity list tabs and items, the pipeline stages, and the tag list, improving the perceived performance of the person view interface.
packages/Webkul/Admin/src/Resources/views/components/shimmer/person · high confidence
Added shimmer loading placeholders for the mail datagrid
New Blade view components have been introduced to provide visual loading states (shimmers) for the mail datagrid within the admin interface. This includes a main layout component that assembles the toolbar, table head, and table body, alongside specific components for the header row and multiple body rows, ensuring a consistent loading experience when mail data is being fetched.
packages/Webkul/Admin/src/Resources/views/components/shimmer/mail · high confidence
Added shimmer loading skeleton for pipeline kanban view
A new shimmer component has been introduced for the pipeline kanban view, providing a visual loading state that mirrors the structure of the actual kanban cards. This includes placeholders for stage headers, attribute names, and action buttons, with styling that supports both light and dark themes to ensure a consistent user experience while data is loading.
packages/Webkul/Admin/src/Resources/views/components/shimmer/pipelines · high confidence
Added shimmer loading skeleton for the activities index view
A new shimmer component has been introduced for the activities index page to provide a visual loading state. This component renders a placeholder layout that mimics the final structure, including a tab bar with five items and a list of five activity entries, each displaying icon, title, description, and menu placeholders. The design supports both light and dark themes via Tailwind CSS classes.
packages/Webkul/Admin/src/Resources/views/components/shimmer/activities · high confidence
Added shimmer loading skeleton for the leads kanban view
A new shimmer component has been introduced for the leads index kanban board, providing a visual loading state that mirrors the structure of the actual kanban cards, including stage headers, lead card avatars, names, and footer tags. This ensures users see a structured placeholder animation while the kanban data is being fetched, improving perceived performance and UI consistency during load times.
packages/Webkul/Admin/src/Resources/views/components/shimmer/leads/index · high confidence
Added shimmer loading state for the Quotes index page
A new shimmer component has been added for the Quotes index view to provide a visual loading placeholder. This component displays a skeleton layout that mirrors the structure of the actual page, including sections for Quote Information (subject, description, sales owner, expiry, person, and lead link) and Address Information (billing and shipping addresses), ensuring a smoother user experience while data is being fetched.
packages/Webkul/Admin/src/Resources/views/components/shimmer/quotes · high confidence
Added shimmer loading state for the leads datagrid
A new shimmer component has been introduced for the leads datagrid view, providing a visual loading placeholder that mimics the layout of tabs, lead details (title, description, source, close date, value, type, owner), contact information (name, email, phone, organization), and the product section table. This improves the user experience by displaying a structured skeleton screen while the actual data is being fetched.
packages/Webkul/Admin/src/Resources/views/components/shimmer/leads · high confidence
Added shimmer placeholder for tags list
A new shimmer loading component has been added for the tags section in the admin interface. This component renders a series of placeholder blocks to indicate loading state, with a configurable count of tag placeholders and an additional action button placeholder.
packages/Webkul/Admin/src/Resources/views/components/shimmer/tags · high confidence
Added skills validation script
A new \bin/validate-skills.sh\ script has been added to enforce the structure and integrity of the skills directory. This tool validates that the canonical skills directory exists, checks that specific IDE integration symlinks (for .ai, .claude, .codex, .cursor, and .kilocode) point to the correct target, ensures no SKILL.md files exist outside the canonical location, and verifies that each skill's frontmatter name matches its directory name.
bin · high confidence
Admin controllers for marketing campaigns and events
New controllers (CampaignsController and EventController) are introduced in the Settings/Marketing area to manage marketing campaigns and events via the admin interface. CampaignsController provides full CRUD and mass-delete operations for campaigns, including validation for name, subject, email template, and marketing event associations, and exposes endpoints to fetch available events and email templates. EventController provides full CRUD and mass-delete operations for marketing events, enforcing a 60-character limit on event names, requiring a future or current date, and preventing deletion of events that are associated with existing campaigns (both individually and in bulk), returning appropriate status codes and messages for partial or blocked deletions.
packages/Webkul/Admin/src/Http/Controllers/Settings/Marketing · high confidence
Admin header now supports dark mode and dynamic quick-add creation
The admin interface header has been updated to include a dark mode toggle that persists user preference via a cookie and dynamically switches the logo between light and dark variants. Additionally, a new Quick Add feature has been introduced in the header, allowing authorized users to quickly create leads, persons, organizations, products, or mails through a modal dialog with tabbed forms, respecting individual permission checks for each entity type.
packages/Webkul/Admin/src/Resources/views/components/layouts/header · high confidence
Attribute module contracts and Concord proxies introduced
The Attribute module now exposes core domain contracts (Attribute, AttributeOption, AttributeValue) and registers corresponding model proxies via Konekt Concord. This establishes the structural foundation for attribute management, enabling the system to resolve and manage attribute-related entities through the Concord service container.
packages/Webkul/Attribute/src/Contracts, packages/Webkul/Attribute/src/Models · high confidence
CRM core data models and infrastructure introduced
This release introduces the foundational data models for the CRM system, enabling users to manage leads, contacts, products, and activities. Key additions include the Lead model with pipeline stages, expected close dates, and a 'rotten days' calculation to identify stale opportunities; Contact models for Persons and Organizations with support for custom attributes; and an Activity model that tracks events with participants, files, and associations to leads, persons, and products. The update also brings in models for Quotes, Products with inventory tracking, Email threads with attachments, and supporting infrastructure like DataGrid enums for filtering, DataTransfer models for imports, and Google Contact integration for exporting contacts. This establishes the core entity structure upon which the rest of the CRM functionality is built.
krayin/laravel-crm · high confidence
Dashboard UI modernization and PDF export capability
The admin dashboard has been significantly updated with a modernized interface, replacing the previous layout with a new component-based structure and removing legacy UI demonstration code (such as button and badge samples) to provide a cleaner, production-ready experience. Additionally, a new PDF export feature has been introduced, allowing users to generate formatted reports of their dashboard data, including revenue metrics and date ranges, with support for right-to-left (RTL) languages.
packages/Webkul/Admin/src/Resources/views/dashboard · high confidence
Dashboard widgets now use dedicated Vue components with shimmer loading and empty-state placeholders
The dashboard index views have been refactored to use individual Vue components (e.g., \v-dashboard-over-all-stats\, \v-dashboard-open-leads-by-states\, \v-dashboard-revenue-stats\) that render shimmer placeholders while data loads and display specific empty-state illustrations when no data is available. This change improves perceived performance and user experience by providing visual feedback during data fetching and clear messaging when reports are empty, across all dashboard sections including overall stats, revenue, leads, and top performers.
packages/Webkul/Admin/src/Resources/views/dashboard/index · high confidence
Database schema updates for attribute system
This change introduces the core database structure for the attribute system and applies a schema fix. New migrations create the \attributes\, \attribute\_options\, and \attribute\_values\ tables to support storing entity-specific attribute data. Additionally, a migration alters the \attribute\_values\ table by adding a \unique\_id\ column, which is populated with a composite of \entity\_id\ and \attribute\_id\ and enforced as a unique constraint to ensure data integrity.
packages/Webkul/Attribute/src/Database · high confidence
Dynamic custom attribute support for Eloquent models
The \CustomAttribute\ trait has been added to the \Attribute\ package, enabling Eloquent models to store and retrieve dynamic custom values via a separate \attribute\_values\ relationship. This trait overrides standard attribute accessors to fetch values from the database based on a defined mapping of attribute types (such as text, price, boolean, select, email, phone, and lookup) to specific storage columns, and ensures these custom values are included when models are serialized to arrays. It also handles the cleanup of associated attribute values when the parent entity is deleted.
packages/Webkul/Attribute/src/Traits · high confidence
Email datagrid with attachment, tag, and date-range filtering
The admin interface now includes a dedicated EmailDataGrid for the mail section, allowing users to browse emails with columns for sender, subject, content, attachment count (indicated by an icon), and tags. The grid supports filtering by ID, name, tags (via a searchable dropdown), and date range, and displays tags efficiently by batch-loading them. Actions are context-aware: users with 'mail.view' permission can view or edit drafts, while those with 'mail.delete' permission can delete emails, with the action type (view/edit/delete) adapting based on the current route (e.g., draft, trash).
packages/Webkul/Admin/src/DataGrids/Mail · high confidence
Email package service providers initialize inbound email processing and model registration
The email package now registers its core services via two new service providers. EmailServiceProvider binds the InboundEmailProcessor interface to specific implementations (Sendgrid or Webklex IMAP) based on the mail-receiver configuration, registers the ProcessInboundEmails console command, and loads database migrations. ModuleServiceProvider registers the Email and Attachment models with the application's module system.
packages/Webkul/Email/src/Providers · high confidence
Email system database schema and tagging support
The email module's database structure has been established with new migrations for the core 'emails' table (storing subject, source, user type, read status, and JSON fields for sender/recipient details) and the 'email\_attachments' table (linking attachment metadata to emails). Additionally, a new 'email\_tags' pivot table has been added to support associating tags with emails, enabling tag-based organization of email records.
packages/Webkul/Email/src/Database · high confidence
Initial database schema and repository layer for the Quote module
This change introduces the foundational data structures and persistence logic for the new Quote feature. It adds database migrations to create the \quotes\ and \quote\_items\ tables, defining fields for subjects, descriptions, billing/shipping addresses, financial calculations (discounts, taxes, totals), and relationships to persons and users. It also registers the \Quote\ and \QuoteItem\ models via service providers and implements repositories that handle creating and updating quotes, including automatic population of product SKUs/names from the product catalog and managing associated quote items.
packages/Webkul/Quote · high confidence
Initial implementation of Lead, Pipeline, and Stage repositories
This change introduces the core repository layer for the new Lead management feature, adding \LeadRepository\, \PipelineRepository\, \StageRepository\, and supporting repositories for Products, Sources, and Types. The \LeadRepository\ enables creating and updating leads with associated persons, products, and custom attribute values, while also calculating 'rotten days' for lead aging. The \PipelineRepository\ manages sales pipelines and their stages, including logic to handle default pipeline assignment and stage transitions.
packages/Webkul/Lead/src/Repositories · high confidence
Initial release of the Email Template module with database schema and repository support
This change introduces the core infrastructure for the Email Template feature within the Webkul Email Template package. It establishes the \email\_templates\ database table containing \name\, \subject\, and \content\ fields, and enforces uniqueness on the \name\ column via a dedicated migration. The module includes the necessary Eloquent model contract, a repository for data access, and service providers to register the model and load migrations, making email templates available for storage and retrieval within the application.
packages/Webkul/EmailTemplate · high confidence
Initial release of the Tag package
This change introduces the new Tag package, adding the foundational components required to manage tags within the system. It includes a database migration to create the \tags\ table (storing name, color, and user association), a repository for searchable tag operations, and service providers to register the model and load migrations. This establishes the backend infrastructure for the tagging feature.
packages/Webkul/Tag · high confidence
Initial warehouse management data model and repository layer
This change introduces the foundational database schema and backend logic for managing warehouses and their locations. It adds database migrations to create the \warehouses\ table (storing name, description, and contact details), the \warehouse\_locations\ table (linking locations to warehouses), and pivot tables for associating warehouses with activities and tags. On the application side, it registers the \Warehouse\ and \Location\ models via service providers, creates corresponding repositories for data access, and implements custom create/update logic in the warehouse repository to handle associated attribute values.
packages/Webkul/Warehouse · high confidence
Inline editing for form fields
The form component system now supports inline editing for various field types, including email, phone, text, lookup, address, boolean, date, datetime, file, and image. This allows users to edit field values directly within the form context without navigating to a separate edit page, improving workflow efficiency. The implementation includes a new control-group component that handles different input types and provides a consistent inline editing experience with validation and error handling.
packages/Webkul/Admin/src/Resources/views/components/form · high confidence
Introduce MagicAI service for extracting structured data from uploaded files
A new MagicAIService has been added to the Lead package, enabling users to upload files (such as PDFs or images) and have their content automatically extracted and processed by an AI model via the OpenRouter API. The service handles base64-encoded file uploads, extracts text and images from PDFs, manages API key and model configuration from core settings, and returns structured data or error messages to the user.
packages/Webkul/Lead/src/Services · high confidence
Introduce Quote management controller with lead linking and validation
Adds the QuoteController to handle the full lifecycle of quotes (index, create, store, edit, update, search, and lead products). The controller enables linking quotes to existing leads, automatically populating quote details (person, billing address, expiry) from lead data, and includes validation logic to prevent creating quotes without products. It also integrates with the PDF handler and dispatches events for quote creation and updates.
packages/Webkul/Admin/src/Http/Controllers/Quote · high confidence
Introduce Web Forms feature for capturing public leads and contacts
This change adds the Web Forms package, enabling administrators to create, edit, and manage public-facing forms that capture lead or contact data. The feature includes a database schema for forms and attributes, an admin interface with a data grid and ACL-based permissions, and a public submission endpoint that automatically creates leads (with configurable pipeline assignment) or persons. It also provides a JavaScript embed script for public pages, Tailwind-based styling, and multi-language support for the form UI.
packages/Webkul/WebForm · high confidence
Introduce reusable Lookup component for admin forms
Added a new \v-lookup\ Blade component that provides a searchable dropdown interface for selecting or creating records within admin forms. The component supports fetching results via a provided source URL, filtering by configurable keys (defaulting to 'name'), and allows users to add new items directly from the search results if the \canAddNew\ prop is enabled. It includes features like debounced search input, loading states, dark mode styling, and integration with existing form validation rules.
packages/Webkul/Admin/src/Resources/views/components/lookup · high confidence
Introduced activity participant model contracts and proxies
Added the foundational interface and model proxy classes for the Activity, File, and Participant entities within the Activity package. This change establishes the structural contracts and Concord model proxies required to support the new activity participants feature, enabling the system to manage relationships between activities and their associated participants.
packages/Webkul/Activity/src/Contracts, packages/Webkul/Activity/src/Models · high confidence
Introduced new TinyMCE editor component with dark mode and placeholder support
Added a new \v-tinymce\ Blade component that integrates TinyMCE 6.6.2 for rich text editing in the admin panel. This component supports dynamic switching between light and dark themes via a \change-theme\ event, ensuring the editor UI matches the application's current appearance. It also includes a custom 'Placeholders' menu button that dynamically inserts email template variables, and features built-in image upload handling with CSRF protection and error feedback.
packages/Webkul/Admin/src/Resources/views/components/tinymce · high confidence
Introduction of structured MenuItem class for navigation items
A new \MenuItem\ class has been added to the Core package to standardize how navigation items are defined and managed. This class encapsulates menu item properties such as key, name, route, URL, sort order, icon, and info, along with support for hierarchical children. It provides methods to check if an item is active based on the current URL and to retrieve its child items, enabling a more structured and consistent approach to building the application's menu system.
packages/Webkul/Core/src/Menu · high confidence
Introduction of structured navigation breadcrumbs and automated email processing
This change introduces a comprehensive breadcrumb navigation system for the admin interface, defining hierarchical paths for key modules including Leads, Quotes, Mail, Activities, Contacts, Products, and Settings, which ensures users can easily track their location and navigate back through the application hierarchy. Additionally, a new scheduled console command has been added to process inbound emails every five minutes, automating the handling of incoming messages without manual intervention.
routes · high confidence
Live progress tracking for Google Contacts export in datagrids
The datagrid export component now supports a dedicated Google Contacts export format. When this format is selected, the UI switches from a standard download modal to a live progress view that displays a progress bar and real-time statistics (total, exported, duplicate, and failed counts) for the ongoing sync operation, providing immediate feedback to the user during the export process.
packages/Webkul/Admin/src/Resources/views/components/datagrid/export · high confidence
New API resource classes for CRM entities
The Admin package now includes a comprehensive set of new JSON resource classes (ActivityFileResource, ActivityResource, EmailAttachmentResource, EmailResource, LeadResource, OrganizationResource, PersonResource, PipelineResource, ProductResource, QuoteResource, SourceResource, StageResource, TagResource, TypeResource, UserResource, and ActivityParticipantResource) that define the structure of API responses for CRM-related data. These resources standardize how entities like leads, activities, emails, and users are serialized for the frontend, ensuring consistent field exposure and nested relationship handling across the admin interface.
packages/Webkul/Admin/src/Http/Resources · high confidence
New Accordion UI Component for Admin Panel
A new accordion component has been added to the admin interface, providing a collapsible container with distinct header and content slots. This component supports dark mode styling, includes a built-in toggle icon that switches between up and down arrows based on state, and features a shimmer loading placeholder for improved perceived performance during data loading.
packages/Webkul/Admin/src/Resources/views/components/accordion · high confidence
New Activity Data Grid with advanced filtering and lead linking
The Admin panel now includes a dedicated data grid for managing activities (calls, meetings, lunches). This grid allows users to search and filter activities by ID, title, schedule dates, and the user who created them. It displays key details such as the activity title, type, completion status, and associated lead. Users can click on lead titles or creator names to navigate directly to the respective Lead or User management pages, and editing actions are available for users with the appropriate permissions.
packages/Webkul/Admin/src/DataGrids/Activity · high confidence
New Automation module introduces workflows and webhooks
The new Automation module provides a system for defining automated workflows triggered by events on Leads, Activities, Persons, and Quotes. It includes database migrations for storing workflow and webhook definitions, configuration for supported trigger entities, and entity-specific helpers that allow workflows to perform actions such as updating records, sending emails, adding tags, or triggering external webhooks. The module also integrates a webhook service with SSRF protection to safely execute outbound HTTP requests as part of workflow actions.
packages/Webkul/Automation · high confidence
New CLI command to display the Krayin CRM version
A new Artisan command, \krayin-crm:version\, has been added to the core package. This command allows users to quickly check the currently installed version of the Krayin CRM system directly from the terminal by outputting the version string returned by the core version helper.
packages/Webkul/Core/src/Console · high confidence
New CLI-based installer for Krayin CRM
The installer package now provides a command-line interface (\krayin-crm:install\) to automate the initial setup of the application. This tool handles environment configuration, database migrations, and seeding of essential data including countries, states, user roles, and CRM-specific entities like lead pipelines and attributes. It also supports optional flags to skip environment checks or admin account creation, streamlining the deployment process for new installations.
packages/Webkul/Installer · high confidence
New Dashboard helper for aggregating CRM statistics
A new \Dashboard\ helper class has been added to the Admin package to centralize the retrieval of key business metrics. This class aggregates data from dedicated reporting services (Lead, Activity, Product, Person, Organization, Quote) to provide statistics on revenue, lead progress, quotations, and top-performing products and customers. It also handles date range logic for the dashboard display, ensuring the format remains clear across different time spans.
packages/Webkul/Admin/src/Helpers · high confidence
New Data Transfer Import Controller with Queue Processing Fix
A new ImportController has been added to the Settings/DataTransfer module to handle the creation, editing, and deletion of data import records. This controller introduces validation for import types, actions, and file formats, and explicitly casts the 'process\_in\_queue' toggle to a boolean. This boolean casting resolves issue \#2629, where the import process failed to run on the default 'sync' queue because the form submitted the key even when the toggle was off, ensuring that imports correctly respect the user's choice to run synchronously or asynchronously.
packages/Webkul/Admin/src/Http/Controllers/Settings/DataTransfer · high confidence
New Data Transfer module for importing Leads, Products, and Persons
The DataTransfer package introduces a new import framework that allows users to import Leads, Products, and Persons via CSV or Excel files. This includes the necessary database migrations for tracking import states and batches, source readers for file parsing, and specific importers that handle validation, upserting, and deletion of these entities. The system supports queue-based processing for large datasets and provides detailed error reporting for invalid rows.
packages/Webkul/DataTransfer · high confidence
New DataGrid package introduces structured grid components and saved filter persistence
This change introduces the \Webkul/DataGrid\ package, providing a new foundation for data grids with dedicated classes for Columns, Actions, and Mass Actions, along with specific column types (Boolean, Date, Datetime, Decimal, Integer, Text, Aggregate) that handle distinct filtering logic. It adds an export mechanism via \DataGridExport\ to allow grid data to be downloaded as Excel files, and introduces a \SavedFilter\ model, migration, and repository to enable users to persist and reuse custom grid filter configurations.
packages/Webkul/DataGrid · high confidence
New Help Center page with support and resource cards
The admin interface now includes a dedicated Help Center page that displays categorized cards for services, resources, and community/tutorials. Users can access support contacts, documentation, and other help resources directly from this new view, which features a consistent card-based layout with icons and external links.
packages/Webkul/Admin/src/Resources/views/help · high confidence
New IMAP and SendGrid inbound email processors
The system now includes dedicated processors for handling incoming emails via IMAP (using Webklex) and SendGrid. The IMAP processor connects to mail servers, iterates through folders (excluding 'All Mail'), and processes messages from the last 10 days, mapping standard folder names (like INBOX, Sent, Trash) to internal supported types. The SendGrid processor handles individual inbound parse webhooks, parsing headers and bodies to create or link emails, but explicitly does not support bulk folder processing. Both implementations share a common contract and handle attachment uploads and email threading via message IDs and references.
packages/Webkul/Email/src/InboundEmailProcessor · high confidence
New Kanban view and pipeline switcher for leads
The leads index now includes a Kanban board view alongside the existing table view, allowing users to visualize and drag-and-drop leads across pipeline stages. A new view-switcher component enables toggling between the table and Kanban layouts and selecting different pipelines. The Kanban cards display lead details, contact information, assigned users, lead values, and rotten-lead indicators, with support for column settings and stage-specific filtering.
packages/Webkul/Admin/src/Resources/views/leads/index · high confidence
New Lead Data Grid with pipeline filtering and rotten lead detection
The Lead module now uses a dedicated \LeadDataGrid\ class to manage the list view. This grid automatically filters leads based on the selected pipeline (defaulting to the system's default pipeline if none is specified) and introduces a 'Rotten Lead' indicator, calculated by comparing the lead's creation date against the pipeline's configured 'rotten days' threshold. The grid displays key lead details including sales person, source, type, value, expected close date, and tags, and supports filtering by these attributes as well as by the rotten lead status. Additionally, it includes custom attribute values in export data via correlated sub-selects.
packages/Webkul/Admin/src/DataGrids/Lead · high confidence
New MagicAI helper for processing and validating AI-generated lead data
A new MagicAI helper class has been added to the Lead package to handle the extraction, validation, and mapping of lead information from AI-generated responses. This component parses JSON content from AI outputs, validates the data against specific lead and person fields (such as title, value, name, email, and contact number), and formats the result into a structure ready for lead creation, while providing clear error messages for invalid formats or missing data.
packages/Webkul/Lead/src/Helpers · high confidence
New Organization management controller in the Contact package
The system now includes a dedicated OrganizationController within the Contact package, enabling users to create, view, edit, and delete organizations through the admin interface. This controller integrates with the OrganizationDataGrid for listing records and enforces user-based access control via the preventUnauthorizedAccess method. It supports both single and mass deletion operations, dispatching specific events before and after each action to allow for extensibility.
packages/Webkul/Admin/src/Http/Controllers/Contact · high confidence
New PDF generation and SVG sanitization capabilities
This change introduces two new traits to the Core package to enhance document handling and security. The PDFHandler trait adds support for generating PDFs from HTML, including specific logic to correctly render Arabic and Persian content using Mpdf for right-to-left languages and DomPDF for others. The Sanitizer trait provides server-side protection by sanitizing rich-text HTML via HTMLPurifier to remove active content and sanitizing uploaded SVG files to strip malicious scripts and attributes, falling back to regex-based cleanup if the primary sanitizer fails.
packages/Webkul/Core/src/Traits · high confidence
New Quote management interface with PDF export and lead linking
The admin panel now includes a complete Quote system, introducing dedicated views for listing, creating, and editing quotes. The index page features a DataGrid for managing quotes, while the create and edit forms support custom attributes, validation rules, and the ability to link a quote to an existing lead via a lookup component. Additionally, a new PDF generation view allows users to download quotes as formatted documents, with support for RTL languages and locale-specific fonts.
packages/Webkul/Admin/src/Resources/views/quotes · high confidence
New System Configuration data models for structured settings
The system configuration module now uses dedicated \Item\ and \ItemField\ classes to represent configuration sections and their input fields. This change introduces structured data handling for configuration items, including support for child sections, field metadata (such as validation rules, default values, and channel/locale scoping), and specific field types like TinyMCE. Users will benefit from a more robust and consistent backend structure for managing application settings, enabling better integration with frontend forms and validation logic.
packages/Webkul/Core/src/SystemConfig · high confidence
New Tags management page in Settings
A new view for managing tags has been added under Settings, featuring a responsive data grid that displays tag ID, name, associated color, creator, and creation date. The interface supports mass selection actions, inline editing and deletion, and adapts to mobile screens with a card-based layout, while also integrating with the application's dark mode styling.
packages/Webkul/Admin/src/Resources/views/settings/tags · high confidence
New User Group management interface in Settings
The Settings \> Groups section now features a dedicated index page that displays user groups in a responsive DataGrid. Administrators can view group details (ID, name, description), create new groups, and edit or delete existing ones via a modal form, with the interface adapting to mobile screens through a card-based layout.
packages/Webkul/Admin/src/Resources/views/settings/groups · high confidence
New Vue.js plugin architecture for admin UI utilities
The admin interface now uses a structured Vue.js plugin system to provide global utilities and components. This includes internationalized price and date formatting via the admin plugin, HTTP request handling with CSRF protection via the axios plugin, and a global event bus for component communication. It also registers global form validation rules (such as phone, postcode, and date constraints) and localized error messages through vee-validate, alongside UI components like draggable lists, flatpickr date pickers with theme support, and the vue-cal calendar.
packages/Webkul/Admin/src/Resources/assets/js/plugins · high confidence
New Web Forms management interface in Settings
The Settings area now includes a dedicated Web Forms section, providing views for listing, creating, and editing web forms. The list view features a data grid with shimmer loading states and permission-based create buttons. The create and edit pages offer a unified form interface to configure form behavior, including submit success actions, lead creation toggles, and visual customization options like background and title colors via color pickers. The edit page also adds buttons to preview the form and embed it.
packages/Webkul/Admin/src/Resources/views/settings/roles, packages/Webkul/Admin/src/Resources/views/settings/sources, packages/Webkul/Admin/src/Resources/views/settings/web-forms · high confidence
New activities edit form and index view with calendar and table views
The activities module now includes dedicated Blade templates for the index and edit pages. The index view provides a datagrid that supports toggling between table and calendar views, featuring shimmer loading states and mass-action capabilities. The edit view introduces a comprehensive form for updating activities, including fields for scheduling (start/end times), comments, participants (via a multi-lookup component), and associated leads, along with general details like title and type.
packages/Webkul/Admin/src/Resources/views/activities · high confidence
New activity participants selection component with dark mode support
The activity creation flow now includes a dedicated participants selection interface that allows users to add both system users and external persons to an activity. This new component features a search-driven interface with debounced queries to find and add participants, displaying them as removable tags. The UI has been styled to support dark mode, ensuring consistent visibility and usability across theme preferences.
packages/Webkul/Admin/src/Resources/views/components/activities/actions/activity · high confidence
New admin dashboard, data grid lookups, and file upload security controls
This update introduces several new capabilities and security hardening within the admin panel. Administrators can now view a comprehensive dashboard with statistics (revenue, leads, products) and export these reports as PDFs via the new DashboardController. A new DataGridController enables searchable dropdown lookups for datagrid filters, and a HelpController provides access to support resources. Additionally, the TinyMCEController now enforces strict file type validation and sanitizes uploaded SVGs to prevent security risks, while the base Controller class adds authorization helpers to restrict access to records based on user ownership.
packages/Webkul/Admin/src/Http/Controllers · high confidence
New admin interface for creating and editing product attributes
The admin panel now includes dedicated views for managing product attributes, featuring a new list page with a data grid and separate create and edit forms. These forms allow administrators to define attribute names, toggle quick-add functionality, and configure options for select, multiselect, checkbox, and lookup attribute types. The interface includes permission checks to restrict access to attribute creation and editing, and integrates with the existing admin layout and breadcrumb system.
packages/Webkul/Admin/src/Resources/views/settings/attributes · high confidence
New animated flash notification system with RTL support
The admin interface now uses a new Vue-based flash notification component (\v-flash-group\) that displays success, error, warning, and info messages with animated entry/exit transitions. The notifications feature a circular progress timer that pauses on hover and auto-dismisses after 5 seconds. The implementation includes full Right-to-Left (RTL) layout support, adjusting animation directions and positioning for internationalization.
packages/Webkul/Admin/src/Resources/views/components/flash-group · high confidence
New attribute edit components for the Admin panel
The attribute editing interface in the Admin panel has been rebuilt with dedicated Blade view components for each attribute type (text, email, phone, lookup, select, multiselect, price, image, file, textarea, address, date, datetime, boolean, and checkbox). This introduces multi-value support for email and phone fields (allowing users to add multiple entries with work/home labels and unique validation), a new address component with dynamic country/state selection, a lookup component with search, entity retrieval, and optional 'add as new' capability, and standardized file/image handling with delete checkboxes. The central index component now routes to these specific views based on the attribute type, ensuring consistent validation rules and UI behavior across all custom attributes.
packages/Webkul/Admin/src/Resources/views/components/attributes/edit · high confidence
New attribute management repositories introduced
The system now includes dedicated repositories for managing attributes, their options, and their values. AttributeRepository handles the creation and updating of attributes, including cascading saves for select/multiselect/checkbox options, and provides lookup capabilities for entities like users with permission-aware filtering. AttributeOptionRepository manages individual option records, while AttributeValueRepository handles the persistence of attribute values across different entity types, supporting various data types such as booleans, prices, dates, emails, phones, and file uploads with appropriate sanitization and storage handling.
packages/Webkul/Attribute/src/Repositories · high confidence
New attribute rendering components for admin forms and views
Added two new Blade components, \index.blade.php\ and \view.blade.php\, within the \packages/Webkul/Admin/src/Resources/views/components/attributes\ directory. The \index\ component handles the creation/editing of custom attributes, implementing dynamic validation logic (such as required fields and decimal checks for prices) and currency symbol display. The \view\ component manages the display of attribute values, dynamically including type-specific view templates for each attribute.
packages/Webkul/Admin/src/Resources/views/components/attributes · high confidence
New avatar component for displaying user initials
A new \v-avatar\ Blade component has been added to the Admin package, providing a reusable UI element that displays a user's initials inside a colored circle. The component accepts a \name\ prop, extracts the first letter of the first two words, and applies a randomly selected background and text color from a predefined palette to create a distinct visual identity for each user.
packages/Webkul/Admin/src/Resources/views/components/avatar · high confidence
New breadcrumbs component for admin navigation
A new Blade component has been added at \packages/Webkul/Admin/src/Resources/views/components/breadcrumbs/index.blade.php\ to render navigation breadcrumbs in the admin interface. The component accepts \name\, \entity\, and \route\ props and conditionally passes the route to the underlying \Breadcrumbs::view\ helper, allowing for dynamic breadcrumb generation based on the current context.
packages/Webkul/Admin/src/Resources/views/components/breadcrumbs · high confidence
New chart components for bar, line, and doughnut visualizations
The admin interface now includes dedicated Vue components for rendering bar, line, and doughnut charts. These new views (\bar.blade.php\, \line.blade.php\, \doughnut.blade.php\) integrate with the Chart.js library to display data visualizations, with the bar and line charts supporting configurable aspect ratios and responsive styling.
packages/Webkul/Admin/src/Resources/views/components/charts · high confidence
New configuration files for ACL, menu, and core settings
The admin package now includes new configuration files in the \src/Config\ directory that define the application's access control list (ACL), navigation menu structure, core system settings, attribute entity types, attribute lookups, and support resources. These files establish the foundational structure for user permissions, sidebar navigation, general configuration options (such as logo and footer settings), and help/support links within the admin interface.
packages/Webkul/Admin/src/Config · high confidence
New configuration management controller
A new ConfigurationController has been added to handle system configuration operations, including displaying configuration lists and edit views, saving configuration updates via the core configuration repository, downloading configuration files, and searching through configuration items.
packages/Webkul/Admin/src/Http/Controllers/Configuration · high confidence
New contact and product selection components for lead creation
Added new Blade view components for the lead creation workflow: \contact.blade.php\ introduces a dedicated UI for selecting and editing a contact person (including name, email, phone, and organization) using a lookup field that supports searching by name, email, or phone number; \products.blade.php\ provides a table-based interface for adding multiple products to a lead, allowing users to select products via lookup and edit quantity and price inline, with the total amount calculated automatically.
packages/Webkul/Admin/src/Resources/views/leads/common · high confidence
New controller for managing DataGrid saved filters
A new SavedFilterController has been added to handle the lifecycle of saved DataGrid filters. This controller exposes endpoints to store, retrieve, update, and delete saved filters, ensuring they are scoped to the authenticated user and the specific DataGrid source. It integrates with the application's event system to trigger hooks before and after creation, update, and deletion operations, and provides JSON responses with success or error messages for each action.
packages/Webkul/Admin/src/Http/Controllers/DataGrid · high confidence
New controllers for Person activities, Google Contact exports, and tagging
The Admin panel now includes dedicated controllers for managing Persons: ActivityController links activities to persons via a pivot table; GoogleContactExportController enables async exporting of filtered person records to a connected Google account; and TagController allows attaching and detaching tags to persons. PersonController handles standard CRUD operations, including search by name, email, and phone, and prevents deletion of persons with associated leads.
packages/Webkul/Admin/src/Http/Controllers/Contact/Persons · high confidence
New core infrastructure for ACL, menus, and system configuration
The core package now provides dedicated classes for managing access control lists (Acl), navigation menus (Menu), and system settings (SystemConfig), along with corresponding service providers and facades. This introduces a structured way to define hierarchical permissions and menu items via configuration, with the ACL system enforcing role-based visibility (e.g., admins see all, others see only granted permissions) and the menu system supporting dynamic label overrides from configuration. Helper functions (core, menu, acl, system\_config, vite) are added to access these services globally, and the Vite helper is enhanced to support multiple namespaces for asset management.
packages/Webkul/Core/src · high confidence
New data grids for Settings entities
The Settings area now includes dedicated data grids for managing Attributes, Email Templates, Groups, Lead Pipelines, Roles, Sources, Tags, Types, Users, Warehouses, Webhooks, and Workflows. These grids provide searchable, filterable, and sortable listings with edit and delete actions, and enforce data-scoping for Roles, Tags, and Users so that non-administrators only see records within their authorized scope.
packages/Webkul/Admin/src/DataGrids/Settings · high confidence
New data grids for managing organizations and persons in the Contacts section
The Contacts module now includes dedicated data grids for Organizations and Persons, providing a structured way to view and manage contact entities. The Organization grid displays key details like name, address, and associated person count, with support for filtering and mass deletion. The Person grid offers a comprehensive view including name, emails, contact numbers, linked organization, and tags, featuring searchable dropdown filters for organizations and tags. Additionally, the Person grid supports exporting custom user-defined attributes, ensuring that all relevant contact data can be captured in exports even if not displayed in the grid view.
packages/Webkul/Admin/src/DataGrids/Contact · high confidence
New data grids for marketing campaigns and events
Added CampaignDatagrid and EventDataGrid classes to the admin settings marketing section, enabling administrators to view, search, sort, and filter marketing campaigns and events. These grids expose key fields (such as name, subject, status, description, and date) and provide edit, delete, and mass-delete actions, all gated by specific bouncer permissions (e.g., settings.automation.campaigns.edit, settings.automation.events.delete).
packages/Webkul/Admin/src/DataGrids/Settings/Marketing · high confidence
New datagrid component with column settings and responsive UI
The datagrid component in the Admin package has been replaced with a new implementation that includes a column settings dropdown, allowing users to toggle column visibility directly from the toolbar. The table view is now responsive, switching to a card layout on mobile devices and providing a dedicated mobile sort dropdown, while the toolbar and mass actions have been updated with new transition animations for a smoother user experience.
packages/Webkul/Admin/src/Resources/views/components/datagrid · high confidence
New date and datetime picker components with calendar icons
Added new \v-date-picker\ and \v-datetime-picker\ Vue components in the admin interface, wrapping the Flatpickr library to provide date and datetime selection capabilities. These components now display a calendar icon within the input field for better visual indication, and support configuration options such as date formatting, time selection, and disabled dates.
packages/Webkul/Admin/src/Resources/views/components/flat-picker · high confidence
New desktop mega-search component with multi-tab results
The desktop header now includes a new mega-search component that allows administrators to search across products, leads, and persons from a single input field. The component features a tabbed interface to switch between these categories, displaying relevant details such as product names and prices, lead titles and values, and person names and emails. It includes debounced search functionality, loading states with shimmer effects, and links to explore all matching or all items in each category.
packages/Webkul/Admin/src/Resources/views/components/layouts/header/desktop · high confidence
New email management controllers for the admin panel
This change introduces the \EmailController\ and \TagController\ within the \packages/Webkul/Admin/src/Http/Controllers/Mail\ directory, enabling core email handling capabilities in the admin interface. The \EmailController\ provides endpoints for listing emails via a data grid, viewing individual email details with associated attachments and lead/person relationships, and storing or updating emails (including draft saving and sending). It enforces access control by scoping visibility of linked emails to their respective owners. The \TagController\ adds functionality to attach and detach tags from existing emails, allowing users to organize their mail. These controllers serve as the backend logic for the new email datagrid, view pages, and tagging features.
packages/Webkul/Admin/src/Http/Controllers/Mail · high confidence
New email parsing helpers for attachments and character encoding
The Email package now includes a new set of helper classes in the \Helpers\ directory to support email processing. \Attachment.php\ provides a utility for reading and retrieving metadata (filename, content type, headers) from email attachments via stream handling. \Charset.php\ implements a comprehensive charset manager that maps various encoding aliases (such as ISO-8859 series, Windows-125x, UTF-16, and others) to standard names, ensuring correct text decoding. \HtmlFilter.php\ adds HTML parsing capabilities, including tag printing, case normalization, and whitespace handling, likely for sanitizing or rendering email body content. These helpers are utilized by the new \Parser.php\ class to handle multipart messages and decode content correctly.
packages/Webkul/Email/src/Helpers · high confidence
New email sending capability with attachment support
A new \Email\ mailable class has been introduced in the Email package, enabling the system to send emails with specific headers (Message-ID, References) and attachments stored on disk. This class handles constructing the message from email data, including from/to/reply-to addresses, subject, HTML body, and attachments resolved via the AttachmentRepository.
packages/Webkul/Email/src/Mails · high confidence
New import creation, editing, and execution UI for data transfer
The Data Transfer settings section now includes dedicated views for managing imports. Users can create new import jobs by selecting a type (populated from the \importers\ config) and uploading a file, with options to configure the action (append/create-update or delete), validation strategy (stop-on-errors or skip-errors), and allowed error counts. An edit view allows modifying these settings and re-uploading files. The import execution interface provides a step-by-step workflow: validating the CSV file, reviewing validation results (including row counts and specific error messages), and starting the actual import process, with links to download sample files and error reports.
packages/Webkul/Admin/src/Resources/views/settings/data-transfer · high confidence
New import history data grid in Settings
A new data grid has been added to the Settings \> Data Transfer section to display a history of import operations. This grid lists imports by ID, type, state, and timestamps, and provides clickable links to download the original uploaded file and any associated error reports. It also displays a summary of import statistics and restricts import, edit, and delete actions based on the user's specific permissions for data transfer imports.
packages/Webkul/Admin/src/DataGrids/Settings/DataTransfer · high confidence
New inline sections for lead details, products, quotes, and stages
The lead view page now includes dedicated inline sections for managing custom attributes, contact persons, associated products, and linked quotes, along with an interactive stage navigation bar. Users can now edit lead attributes, attach or change a contact person, add and manage products with inline quantity and price editing, and view or manage quotes directly from the lead view. The stage navigation allows users to move leads through the pipeline, with specific workflows for winning (setting a value) or losing (providing a reason) the lead.
packages/Webkul/Admin/src/Resources/views/leads/view · high confidence
New lead management controllers for activities, emails, quotes, and tags
This change introduces dedicated controllers in the Admin package to handle lead-specific interactions, replacing or extending previous monolithic handling. The ActivityController now links activities to leads via a dedicated pivot table. The EmailController extends the base mail controller to transform stored emails into activity timeline entries and supports detaching emails from leads. The QuoteController enables attaching and detaching quotes to leads, and adds the ability to email a quote PDF to the lead's person, with specific support for Arabic and Persian text rendering. The TagController provides endpoints to attach and detach tags to leads. The LeadController itself has been significantly expanded to support pipeline-based Kanban views, mass actions, and AI-driven lead creation with file upload validation.
packages/Webkul/Admin/src/Http/Controllers/Lead · high confidence
New lead management interface with Kanban, tabs, and activity tracking
The Leads module now features a redesigned user interface with dedicated views for listing, creating, editing, and viewing leads. The index page supports both table and Kanban board layouts, while the create and edit forms utilize a tabbed interface to organize lead details, contact persons, and associated products. The lead view page provides a comprehensive overview including lead attributes, tags, and a dedicated activity stream that consolidates emails, notes, files, and quotes. This update also introduces support for 'rotten' lead tracking and integrates with the document generation feature for AI-assisted lead creation.
packages/Webkul/Admin/src/Resources/views/leads · high confidence
New mail management interface with datagrid and view pages
The admin panel now includes dedicated views for managing emails, introducing a new index page with a responsive DataGrid for listing and sorting mail, and a detailed view page that displays email threads, recipients (including optional CC/BCC), tags, and action buttons. This change adds the structural foundation for the mail feature, including the list and detail layouts, though the underlying Vue components and backend logic are handled in other parts of the system.
packages/Webkul/Admin/src/Resources/views/mail · high confidence
New marketing campaign system with scheduled email processing
The Marketing package now includes a complete campaign infrastructure, introducing database tables for marketing events and campaigns, along with corresponding models, repositories, and contracts. A new \CampaignCommand\ console command (\campaign:process\) has been added to handle campaign execution, which is automatically scheduled to run daily via the \MarketingServiceProvider\. The system processes active campaigns by fetching contact emails and queuing personalized emails using the \CampaignMail\ class, which pulls content from linked email templates. This change establishes the backend foundation for automated, event-triggered marketing communications.
packages/Webkul/Marketing · high confidence
New marketing campaigns listing interface with role-based access control
The marketing campaigns section now features a dedicated index view that displays campaigns in a responsive datagrid, supporting both desktop table and mobile card layouts. Access to create, edit, and delete campaigns is now governed by ACL permissions (e.g., \settings.automation.campaigns.create\), ensuring users only see actions they are authorized to perform. The interface includes mass selection capabilities for bulk deletion and integrates with the existing admin layout and breadcrumbs.
packages/Webkul/Admin/src/Resources/views/settings/marketing/campaigns · high confidence
New marketing events listing page with role-based access control
A new index view for marketing events has been added to the admin settings, providing a responsive datagrid that displays event details (ID, name, description, date) in both desktop table and mobile card layouts. The interface enforces role-based access control (ACL) via the bouncer, conditionally rendering the 'Create' button, mass-delete checkboxes, and individual edit/delete actions based on specific permissions (settings.automation.events.create, mass\_delete, edit, delete).
packages/Webkul/Admin/src/Resources/views/settings/marketing/events · high confidence
New media upload components for images and videos
The admin interface now includes dedicated Blade components for managing media assets. The new \images.blade.php\ component provides a grid-based uploader for images with support for multiple selections, drag-and-drop reordering, placeholder display, and error handling. Similarly, the \videos.blade.php\ component introduces a video uploader with preview capabilities, play/pause controls, and the same multi-file and drag-and-drop features. These components standardize how media is added and managed within the admin panel.
packages/Webkul/Admin/src/Resources/views/components/media · high confidence
New mobile mega-search component with product, lead, and person tabs
A new mobile mega-search interface has been added to the admin header, providing a unified search experience across products, leads, and persons. Users can now toggle a search input on mobile devices, which reveals a tabbed dropdown allowing them to filter results by category. The component displays relevant details for each item type (such as name, SKU, and price for products; title and value for leads; and name and email for persons) and includes links to view individual records or explore all matching items in their respective index pages.
packages/Webkul/Admin/src/Resources/views/components/layouts/header/mobile · high confidence
New mobile sidebar drawer component for admin navigation
A new Blade view has been added at \packages/Webkul/Admin/src/Resources/views/components/layouts/sidebar/mobile/index.blade.php\ to render the admin sidebar specifically for mobile devices. This component introduces a collapsible drawer interface that displays the main navigation menu, including support for nested sub-menus and active state highlighting. It also features a dynamic logo header that respects the user's dark mode preference, ensuring a consistent visual experience on smaller screens.
packages/Webkul/Admin/src/Resources/views/components/layouts/sidebar/mobile · high confidence
New module registration and API configuration files added
The core configuration directory now includes three new files: \concord.php\ registers the application's module service providers (including the newly named Automation module) and enables route model binding; \cors.php\ configures Cross-Origin Resource Sharing to allow all methods and origins for the \admin/web-forms/forms/\*\ paths; and \sanctum.php\ sets up Laravel Sanctum for stateful API authentication, defining the user guard, middleware, and default stateful domains.
packages/Webkul/Core/src/Config · high confidence
New organization management interface in the admin panel
Administrators can now create, edit, and list organizations through a dedicated section in the admin UI. The new index page displays organizations in a data grid with shimmer loading effects, while the create and edit forms allow input of standard fields (name, address, postcode) alongside any custom attributes defined for the organization entity type. Access to the create action is gated by the 'contacts.organizations.create' permission, and the interface includes breadcrumbs and responsive styling consistent with the rest of the admin theme.
packages/Webkul/Admin/src/Resources/views/contacts/organizations · high confidence
New person management interface in the admin panel
The admin panel now includes a complete set of views for managing persons, replacing the previous customer-centric structure. Users can create, edit, view, and list persons via dedicated pages (create, edit, view, index). The list view features a datagrid with support for mass actions, sorting, and exporting to Google Contacts. The create and edit forms dynamically render custom attributes and allow linking a person to an organization. The view page provides a detailed profile with tags, activity actions (mail, file, note, activity), and a timeline of interactions.
packages/Webkul/Admin/src/Resources/views/contacts/persons · high confidence
New person view sections for attributes and organization details
The person view page now includes dedicated sections for displaying custom attributes and associated organization information. The attributes section renders a form with inline editing capabilities for non-name custom fields, while the organization section displays the linked company's name, avatar, and full address details, including a direct link to edit the organization record.
packages/Webkul/Admin/src/Resources/views/contacts/persons/view · high confidence
New product data grid with inventory and tag filtering
The admin interface now includes a dedicated data grid for products, allowing users to view and manage items with columns for SKU, name, price, and inventory metrics (in-stock, allocated, on-hand). This grid supports filtering by product attributes, tags, and warehouse context, and provides actions to view, edit, or delete products based on user permissions.
packages/Webkul/Admin/src/DataGrids/Product · high confidence
New product management controllers for activities, tags, and core CRUD
The product administration area now includes dedicated controllers to handle product activities, tagging, and standard resource operations. The new ActivityController links activities to products via a pivot table, while the TagController allows users to attach and detach tags from products. The ProductController provides the core interface for listing, creating, viewing, editing, and deleting products, including specific endpoints for managing product inventories across warehouses and performing product searches.
packages/Webkul/Admin/src/Http/Controllers/Products · high confidence
New product view sections for attributes and inventory
The product view page now includes dedicated sections for displaying product attributes and managing inventory. The attributes section uses an accordion layout to show default and custom attributes with inline editing capabilities. The inventory section displays a table of warehouses and their stock levels (in-stock, allocated, on-hand) with the ability to assign warehouses and add locations via a drawer interface. Both sections support view render events for extensibility.
packages/Webkul/Admin/src/Resources/views/products/view · high confidence
New reporting helpers for dashboard metrics
Added a new set of reporting helper classes in the Admin package to power dashboard statistics. The AbstractReporting base class introduces configurable date ranges (with support for custom day counts and fallbacks) and calculates period-over-period percentage changes. Specific helpers now provide data for Leads (total, won, lost, and progress), Organizations (total and top by revenue), Persons (total and top customers by revenue), Products (top selling by revenue and quantity), Quotes (total), and generic Activity metrics, enabling the admin dashboard to display these aggregated business insights.
packages/Webkul/Admin/src/Helpers/Reporting · high confidence
New repositories for managing Person and Organization entities with custom attribute support
The Contact package now includes dedicated repositories for Person and Organization entities, enabling the creation, updating, and deletion of contacts and companies while persisting custom attribute values. The Organization repository wraps deletion in a database transaction to ensure data consistency, while the Person repository automatically creates or links organizations by name and sanitizes input data to generate unique identifiers based on user, organization, email, and contact number details.
packages/Webkul/Contact/src/Repositories · high confidence
New reusable V-Button component with loading state support
A new Blade component for buttons has been introduced in the Admin package. This component wraps a Vue.js 'v-button' element that supports a 'loading' prop, automatically switching the display to a spinner animation when active, while maintaining the button's title and class styling. This provides a consistent, reusable UI element for actions that may trigger asynchronous operations.
packages/Webkul/Admin/src/Resources/views/components/button · high confidence
New reusable activities list component
A new Blade component at \packages/Webkul/Admin/src/Resources/views/components/activities/index.blade.php\ introduces a reusable, tabbed interface for displaying activities (such as emails, system events, and scheduled tasks) within the admin panel. This component integrates with a Vue frontend (\v-activities\) to render activity items with dynamic styling, support for custom extra types, and empty placeholders, providing a unified view for activity history across different entities.
packages/Webkul/Admin/src/Resources/views/components/activities · high confidence
New reusable activity action components for notes, emails, files, and general activities
The admin interface now includes dedicated Blade view components for creating activities directly from entity pages. This change introduces four new action buttons—Note, Mail, File, and Activity—each opening a modal form to capture specific details (such as email recipients, file uploads, or scheduled times) and submit them via Vue components. These components standardize how users log interactions, providing a consistent UI for adding context to leads, contacts, or other entities within the admin panel.
packages/Webkul/Admin/src/Resources/views/components/activities/actions · high confidence
New reusable attachment upload component
A new \v-attachments\ Blade component has been introduced in the Admin package to handle file uploads. This component provides a user interface for selecting and managing multiple files, displaying them as a list of removable items with their names. It supports configuration for allowing multiple selections, hiding the upload button, and passing validation rules, integrating with the existing form control system.
packages/Webkul/Admin/src/Resources/views/components/attachments · high confidence
New reusable drawer component for admin UI
A new Blade component (\packages/Webkul/Admin/src/Resources/views/components/drawer/index.blade.php\) has been added to provide a consistent, reusable drawer UI element. This component supports configurable positioning (top, bottom, left, right), custom widths, and distinct header, content, and footer slots. It includes built-in animations for opening and closing, manages body scroll locking when open, and exposes events for state changes, allowing developers to easily integrate slide-out panels into the admin interface.
packages/Webkul/Admin/src/Resources/views/components/drawer · high confidence
New reusable dropdown component with dark mode support
The admin interface now includes a new \v-dropdown\ component located in \packages/Webkul/Admin/src/Resources/views/components/dropdown\. This component provides a reusable UI element for dropdown menus, featuring support for multiple positioning modes (bottom-left, bottom-right, top-left, top-right) and built-in dark mode styling for both the toggle area and the menu content. It also includes a dedicated menu item component for consistent list styling within dropdowns.
packages/Webkul/Admin/src/Resources/views/components/dropdown · high confidence
New reusable modal components with responsive positioning and transitions
The admin interface now includes two new Blade components for modals: \v-modal\ and \v-modal-confirm\. The \v-modal\ component provides a flexible, slot-based structure supporting configurable positions (center, top, bottom, corners) and sizes (normal, medium, large), with automatic responsive behavior that centers the modal on mobile devices. The \v-modal-confirm\ component offers a pre-styled confirmation dialog with customizable titles, messages, and button labels, registered globally via an event emitter for easy invocation across the application. Both components feature smooth CSS transitions for opening and closing.
packages/Webkul/Admin/src/Resources/views/components/modal · high confidence
New reusable tab and tab-item UI components
The admin interface now includes new Blade components for rendering tabbed navigation. The \v-tabs\ component manages a collection of tabs, handling active state switching and positioning (left/center/right), while the \v-tab-item\ component renders individual tab content with fade-in animations and automatically registers itself with the parent tabs container. This provides a consistent, reusable pattern for displaying multi-section content within the admin panel.
packages/Webkul/Admin/src/Resources/views/components/tabs · high confidence
New reusable table component system for admin data grids
The admin interface now includes a new set of Blade components for rendering data tables, providing a consistent and styled structure for displaying records. This change introduces components for the table container, header (\thead\), body (\tbody\), rows (\tr\), and cells (\th\, \td\), all pre-styled with Tailwind CSS classes for layout, spacing, and dark mode support. Administrators will benefit from a standardized look and feel for all tabular data views within the backend.
packages/Webkul/Admin/src/Resources/views/components/table · high confidence
New tag management component for admin interface
A new \v-tags\ component has been added to the admin panel, enabling users to attach, detach, and manage tags on entities. The component provides a search interface to find existing tags or create new ones (subject to permissions), displays currently attached tags with their assigned colors, and allows updating tag colors or removing them via dropdown actions. It supports dark mode styling and handles RTL layout adjustments for the dropdown positioning.
packages/Webkul/Admin/src/Resources/views/components/tags · high confidence
New toolbar components for the Leads Kanban view
The Leads Kanban interface now includes dedicated toolbar components for searching, filtering, and customizing card displays. Users can search across all lead fields, apply column-specific filters via a drawer interface, and toggle the visibility of specific data points (such as contact person, sales person, or tags) on individual lead cards through a new card settings dropdown.
packages/Webkul/Admin/src/Resources/views/leads/index/kanban · high confidence
New traits for activity timeline and dropdown options
Added two new traits to the Admin package: HandlesActivityTimeline, which provides a paginated, merged view of activities and emails for records like leads and warehouses, and ProvideDropdownOptions, which centralizes logic for generating dropdown choices such as active/inactive states, users, lead sources, and organizations.
packages/Webkul/Admin/src/Traits · high confidence
New tree selection components with checkbox and radio support
The admin interface now includes dedicated tree-view components for hierarchical data selection. This change introduces \v-tree-checkbox\ and \v-tree-radio\ components, allowing users to select multiple items or a single item respectively within a tree structure. The main \v-tree-view\ component acts as a container that dynamically renders the appropriate input type based on configuration, supporting features like hierarchical selection, custom field mapping (id, label, value, children), and locale-aware label fallbacks.
packages/Webkul/Admin/src/Resources/views/components/tree · high confidence
New user account edit page with password change capability
The admin interface now includes a dedicated page for editing user account details, allowing administrators to update a user's name, email, and profile image. Additionally, this page introduces a new section for changing the user's password, requiring the current password and enforcing a minimum length of 6 characters for the new password.
packages/Webkul/Admin/src/Resources/views/user · high confidence
New validation rules for code and decimal formats
Added two new validation contracts: Code, which enforces that values start with a letter followed by alphanumeric characters or underscores, and Decimal, which restricts input to numbers with up to four decimal places. These rules provide stricter format validation for specific data fields within the application.
packages/Webkul/Core/src/Contracts/Validations · high confidence
New warehouse management interface in settings
The Settings area now includes a complete interface for managing warehouses, featuring a list view with a datagrid, forms to create and edit warehouse details (including contact info and custom attributes), and a detailed view page. The view page displays general and contact information, allows attaching tags, and provides an activity feed for notes, files, and system change logs, all protected by specific inventory permissions.
packages/Webkul/Admin/src/Resources/views/settings/warehouses · high confidence
New workflow management interface in settings
The Settings area now includes a dedicated Workflows section, providing a complete user interface for creating, editing, and listing automation workflows. The index page displays a datagrid of existing workflows with a shimmer loading effect and restricts the 'Create' button to users with the 'settings.automation.workflows.create' permission. The create and edit pages feature a tabbed form layout (Basic Details, Event, etc.) powered by a Vue component, allowing administrators to define workflow names, descriptions, and trigger events.
packages/Webkul/Admin/src/Resources/views/settings/workflows · high confidence
Product module service providers added
The Product module now includes dedicated service providers to initialize its components. ModuleServiceProvider registers the Product and ProductInventory models, while ProductServiceProvider loads the module's database migrations from the Database/Migrations directory.
packages/Webkul/Product/src/Providers · high confidence
Quote management data grid introduced
The admin interface now includes a dedicated data grid for managing quotes, allowing users to view and filter quote records. This grid displays key details such as subject, sales person, person (with a direct link to the contact view), financial breakdowns (subtotal, discount, tax, adjustment, grand total), and dates (expired and created). Users can filter by sales person and person using searchable dropdowns, sort columns, and search by subject. Additionally, a specific filter allows users to toggle between expired and non-expired quotes, and edit actions are gated by the 'quotes.edit' permission.
packages/Webkul/Admin/src/DataGrids/Quote · high confidence
Refactored Settings controllers with stricter access control and new integrations
The Settings area controllers have been rewritten to enforce stricter security and introduce new capabilities. Role and User management now prevents privilege escalation by blocking users from editing their own roles, assigning broader permissions than they hold, or creating accounts with wider data scopes; roles and users are also scoped by the creator. Tag management now restricts search and mass-delete operations to only those records the user is authorized to see. Additionally, new controllers have been added to support Google Contacts OAuth integration, Web Form creation, and pipeline/source/type management, while existing controllers for attributes, email templates, groups, locations, and settings search have been standardized with proper event dispatching and validation.
packages/Webkul/Admin/src/Http/Controllers/Settings · high confidence
Spanish language support added to the Admin panel
The Admin interface now supports Spanish, providing translations for the user interface, menus, and system messages. This change introduces the complete Spanish locale file (es/app.php) for the Webkul Admin package, enabling Spanish-speaking users to navigate and interact with the administration dashboard in their native language.
packages/Webkul/Admin/src/Resources/lang/es · high confidence
Unified skills directory for AI coding assistants
The repository now provides a single source of truth for AI assistant skills by creating symbolic links in \.ai/skills\, \.claude/skills\, \.codex/skills\, \.cursor/skills\, and \.kilocode/skills\ that all point to the central \.github/skills\ directory. This change ensures that various AI coding tools can access the same set of skills without requiring duplicate configurations in each tool-specific folder.
(repo-wide) · high confidence
Warehouse management controllers and activity tagging implemented
The Settings \> Warehouse section now includes dedicated controllers for managing warehouse entities, their associated activities, and tags. The new ActivityController links warehouse records to the system activity timeline via a pivot table, while the TagController allows users to attach and detach tags to warehouses through JSON API endpoints. The main WarehouseController provides full CRUD operations (create, view, edit, update, delete) and a dedicated view for listing products within a specific warehouse, utilizing the WarehouseDataGrid for the listing page.
packages/Webkul/Admin/src/Http/Controllers/Settings/Warehouse · high confidence
Warehouse view page now includes dedicated sections for contact, general, and location details
The warehouse view page has been restructured to display specific information in separate, organized sections. A new 'Contact Information' section allows users to view and edit contact-specific attributes like name, email, and address. A 'General Information' section displays other warehouse attributes. Additionally, a 'Locations' section has been added, enabling users to manage multiple locations within a warehouse through a table view that supports adding and deleting locations via a modal interface.
packages/Webkul/Admin/src/Resources/views/settings/warehouses/view · high confidence
Webhook management interface added to Settings
The Settings section now includes a new Webhooks area, providing a list view (index), a creation form (create), and an editing form (edit). Users can configure webhook endpoints by specifying HTTP methods (POST/PUT), target URLs, custom headers, and query parameters. The interface supports multiple payload content types, including default, x-www-form-urlencoded, and raw formats, and features a live URL preview to verify the constructed endpoint before saving.
packages/Webkul/Admin/src/Resources/views/settings/webhook · high confidence
Removals
Removal of legacy UI asset pipeline and Vue components
The legacy frontend build system for the UI package has been removed. This change deletes the Webpack configuration (\webpack.mix.js\) and the entire source tree for assets, including the main Vue application entry point (\app.js\), all Vue components (such as accordions, modals, tabs, flash messages, and image uploads), custom directives (slugify, debounce, alert), and the associated SCSS stylesheets and SVG icons. As a result, the previous client-side rendering and styling provided by these files are no longer available in this package.
packages/Webkul/UI · high confidence
Removal of legacy admin UI stylesheets
The legacy SASS assets for the admin panel, including the main entry point (app.scss), global variables, mixins, and icon definitions, have been removed. This eliminates the old CSS styling for the admin interface, sidebar, and dashboard components, indicating a shift to a different styling approach or asset pipeline for the admin UI.
packages/Webkul/Admin/src/Resources/assets/sass · high confidence
Removal of legacy admin and role database seeders
The \AdminsTableSeeder\ and \RolesTableSeeder\ classes have been removed from the application. This eliminates the automatic population of the \admins\ and \roles\ tables with default example data (such as the '[e-mail redacted]' account and 'Administrator' role) during database seeding, indicating a shift away from the previous admin-centric user model.
packages/Webkul/User/src/Database/Seeders · high confidence
Removal of legacy admin layout templates
The anonymous-master, master, nav-left, and nav-top Blade layout files in the admin package have been deleted. This removes the previous server-rendered layout structure, including the top and left navigation bars, the anonymous login container, and the associated flash message and error handling scripts, indicating a shift away from this specific layout implementation.
packages/Webkul/Admin/src/Resources/views/layouts · high confidence
Security
Secure attachment storage and email creation logic
The email system now stores attachments on a private disk rather than the public web root, serving them only through authenticated download routes to prevent direct file access or execution. When creating or updating emails, the system automatically uploads attachments to this secure location using randomized filenames and detects content types from file contents instead of trusting client-supplied headers. Additionally, email creation now generates unique identifiers and manages reference IDs for threading, while sanitizing reply-to, CC, and BCC fields.
packages/Webkul/Email/src/Repositories · high confidence
Webhook endpoint validation prevents internal SSRF attacks
The system now rejects webhook endpoint URLs that resolve to private or reserved IP addresses (such as localhost or internal network ranges) during input validation. This change, implemented in the new WebhookRequest validation class, mitigates Server-Side Request Forgery (SSRF) risks by ensuring webhooks only target public addresses. Endpoints containing workflow placeholders are exempted from this check, as their final destination is validated at trigger time.
packages/Webkul/Admin/src/Requests · high confidence
Architecture
Admin panel routes are reorganized into modular files
The admin routing structure has been refactored from a single monolithic file into separate, domain-specific route files (such as auth-routes.php, leads-routes.php, contacts-routes.php, and settings-routes.php), which are then aggregated by the main web.php entry point. This change improves maintainability by isolating route definitions for distinct features like authentication, lead management, and settings configuration, while preserving the existing URL endpoints and controller bindings for the admin interface.
packages/Webkul/Admin/src/Routes · high confidence
Attribute module service provider restructured and migrated
The attribute module's service provider has been reorganized to follow standard Laravel package conventions. The previous console kernel implementation has been replaced with a dedicated service provider that registers the module's configuration and loads its database migrations. Additionally, a new module service provider has been introduced to explicitly register the core attribute models (Attribute, AttributeOption, and AttributeValue) for the system.
packages/Webkul/Attribute/src/Providers · high confidence
Behavioural changes
Activity emails now support ICS calendar file attachments
The common email notification class has been updated to support attaching arbitrary data as file attachments. This enables the system to attach ICS calendar files to activity emails, allowing users to directly add events to their calendars from email notifications.
packages/Webkul/Admin/src/Notifications · high confidence
Activity repository introduces participant management and overlap detection
The Activity repository now supports associating users and persons as participants when creating or updating activities, handling the persistence of these relationships and cleaning up empty form values. It also includes logic to detect scheduling overlaps for activities based on time ranges and participant lists, and provides a query method to fetch activities within a date range while filtering by authorized users and their associated participants.
packages/Webkul/Activity/src/Repositories · high confidence
Activity service provider bindings and model registration
The Activity module now explicitly registers its core models (Activity, File, Participant) via a new ActivityServiceProvider. This ensures that the corresponding contract interfaces resolve correctly in the Laravel container and that the Concord model-proxy registry is populated, preventing resolution errors for components that depend on these models.
packages/Webkul/Activity/src/Providers · high confidence
Added product and inventory model contracts and Concord proxies
The Product package now includes interface definitions for Product and ProductInventory, along with corresponding Konekt Concord model proxies (ProductProxy and ProductInventoryProxy). These additions establish the structural contracts and proxy classes required for the product and inventory modules to integrate with the Concord service provider system.
packages/Webkul/Product/src/Contracts, packages/Webkul/Product/src/Models · high confidence
Added shimmer placeholders for mega-search result categories
The mega-search component in the admin header now includes loading state placeholders (shimmers) for specific result categories, including settings, configurations, leads, persons, products, and quotes, as well as a common address layout. These new Blade view files ensure that the UI displays structured loading animations for these sections while data is being fetched, improving the perceived performance and visual stability of the search interface.
packages/Webkul/Admin/src/Resources/views/components/shimmer/header · high confidence
Admin UI icon system and dark mode styling overhaul
The admin panel's visual presentation has been updated with a new CSS foundation that integrates Tailwind CSS and a custom 'icomoon' icon font, replacing or augmenting previous icon implementations. This change introduces a comprehensive set of new icon classes for administrative functions (such as settings, users, and leads) and includes specific styling fixes for dark mode, ensuring correct rendering of icons, sidebar menus, and body containers in both light and dark themes, particularly improving Right-to-Left (RTL) layout support.
packages/Webkul/Admin/src/Resources/assets/css · high confidence
Admin attributes now support inline editing
The attribute view components in the Admin panel have been refactored to use new inline-editable UI components (e.g., \inline.address\, \inline.text\, \inline.date\). This change enables users to edit attribute values directly within the view interface without navigating to a separate edit form, applying to all standard attribute types including text, email, phone, date, price, and lookups.
packages/Webkul/Admin/src/Resources/views/components/attributes/view · high confidence
Admin authentication and user management migrated to the 'user' guard
The admin panel's authentication and user management logic has been migrated from the 'admin' guard to the 'user' guard. This change replaces the now-deleted AdminController and RoleController with updated Account, Session, ForgotPassword, and ResetPassword controllers that operate on the 'users' table and 'user' authentication guard. For users, this means login, logout, and password reset flows now use the unified user identity system, with session handling and rate limiting applied to the 'user' guard. The account update endpoint now validates against the 'users' table, supports profile image uploads, and enforces stricter access controls by checking user status and permissions before allowing updates or redirects.
packages/Webkul/Admin/src/Http/Controllers/User · high confidence
Admin authentication, authorization, and locale handling enhancements
The admin panel's middleware layer has been updated to improve security and configuration flexibility. The Bouncer middleware now enforces stricter access controls by automatically logging out users whose accounts are disabled or have no permissions, and it implements a fail-closed ACL system that requires explicit role mappings for administrative routes while allowing a specific list of public and self-service endpoints. Additionally, a new SanitizeUrl middleware protects email mailbox navigation by validating folder parameters against a whitelist, and the Locale middleware now allows the default language to be configured via the application settings rather than relying solely on the system default.
packages/Webkul/Admin/src/Http/Middleware · high confidence
Admin email templates redesigned with new layout and styling
The admin email system has been updated to use a new, consistent visual design. The previous \layouts/master\ and \layouts/logo\ templates have been replaced by a new \emails/layout\ component that features a modern Inter font, a centered 640px container, and a unified header/footer structure. Existing emails, such as the 'forget password' notification, have been migrated to this new layout, resulting in updated button colors (from \#0041FF to \#0D8DD5), improved typography, and a more polished appearance for users receiving these communications.
packages/Webkul/Admin/src/Resources/views/emails · high confidence
Admin exception handling now uses localized error messages and custom views
The Admin package's exception handler has been refactored to inherit from Laravel's base Handler and now displays user-friendly, localized error messages for JSON responses (e.g., 401, 403, 404, 500) instead of hardcoded English strings. When debug mode is disabled, non-JSON requests for admin routes now render a specific custom error view (\admin::errors.index\) rather than generic path-based views, and JSON responses now use a 'message' key instead of 'error'.
packages/Webkul/Admin/src/Exceptions · high confidence
Admin interface language file completely rewritten and expanded
The English language file for the admin panel has been completely replaced, expanding from a minimal set of strings to a comprehensive structure covering ACL permissions, user authentication flows, account management, and detailed activity components (mail, files, notes, calls, meetings). This change ensures that all new and existing UI elements in the admin interface have corresponding, accurate translations, replacing the previous sparse or missing language definitions.
packages/Webkul/Admin/src/Resources/lang/en · high confidence
Admin layout structure refactored with new anonymous and tabs layouts
The admin interface layout system has been restructured by introducing new Blade components: \anonymous.blade.php\ for unauthenticated pages (like login), \index.blade.php\ for the main authenticated admin shell, and \tabs.blade.php\ for tabbed navigation. The main layout now dynamically applies dark mode via a cookie, integrates a collapsible sidebar, and conditionally renders a configurable 'Powered by' footer bar based on system settings. Brand colors are now exposed as CSS variables for consistent theming, and the layout structure supports responsive design with updated font families and Vite asset management.
packages/Webkul/Admin/src/Resources/views/components/layouts · high confidence
Admin panel JavaScript stack migrated to Vue 3 with Vite
The admin panel's frontend build system has been upgraded from a legacy Vue 2 setup (using global imports and jQuery) to a modern Vue 3 architecture powered by Vite. This change removes the old \bootstrap.js\ and \app.js\ entry points, replacing them with a modular structure that uses \createApp\ for instance creation, native ES module imports for plugins (such as Axios, VeeValidate, and Flatpickr), and global directives. For users, this represents a significant underlying refactor that improves build performance and code maintainability, though it may affect custom JavaScript integrations that relied on the previous global \window.Vue\ or \window.axios\ objects.
packages/Webkul/Admin/src/Resources/assets/js · high confidence
Admin password notification classes renamed and refactored for user accounts
The admin-specific password reset and update notification classes have been renamed from AdminResetPassword and AdminUpdatePassword to UserResetPassword and UserUpdatePassword, respectively, and refactored to target user accounts instead of admins. The UserResetPassword class now extends Laravel's ResetPassword and uses a dedicated email view for users, while UserUpdatePassword now accepts a User object and sends emails using the user-specific email template, aligning these notifications with the user management domain rather than the admin panel.
packages/Webkul/Admin/src/Notifications/User · high confidence
Admin permission checks now use the user guard and support group-based visibility
The Bouncer class in the Admin package has been refactored to use the 'user' authentication guard instead of the 'admin' guard for all permission checks, aligning admin access control with the user identity system. Additionally, a new getAuthorizedUserIds method has been added to the Bouncer to determine which user IDs are accessible based on the current user's view permission (global, group, or self), enabling more granular data visibility controls for sales owners and group members.
packages/Webkul/Admin/src · high confidence
Admin service provider refactored with new middleware, routing, and event wiring
The Admin service provider has been restructured to improve modularity and security. It now registers new middleware aliases (user, admin\_locale, sanitize\_url) and organizes route loading into separate Admin and Front groups under the configured admin path. A new EventServiceProvider is introduced to handle automatic linking of Persons, Leads, and Activities to emails upon creation or update. The provider also sets up a polymorphic relation map for key models (leads, organizations, persons, products, quotes, warehouses), loads additional configuration files (ACL, menu, core config, attribute lookups/types, support), and registers anonymous Blade components. The ModuleServiceProvider has been updated to extend BaseModuleServiceProvider instead of CoreModuleServiceProvider.
packages/Webkul/Admin/src/Providers · high confidence
Automatic linking of activities, leads, and persons to emails
New event listeners have been added to automatically associate records with emails upon creation or update. When an activity is saved with a lead, person, warehouse, or product ID, the system now attaches that activity to the corresponding entity. Additionally, creating a new lead or person from the email view page will automatically update the email record to link it to the newly created lead or person, ensuring data consistency without manual intervention.
packages/Webkul/Admin/src/Listeners · high confidence
Contact database schema enhancements and relationship updates
The Contact package's database schema has been expanded to support richer person and organization records. New tables \person\_tags\ and \person\_activities\ enable tagging and activity tracking for persons, while the \persons\ table now includes \job\_title\, \user\_id\ (for ownership), and a \unique\_id\ field generated from user, organization, email, and contact number data. The \organizations\ table also received a \user\_id\ column and a unique constraint on the \name\ field. Additionally, the relationship between persons and organizations has been adjusted so that deleting an organization sets the person's organization reference to null rather than cascading the deletion.
packages/Webkul/Contact/src/Database/Migrations · high confidence
Contact package service provider refactored to load migrations
The Contact package's service provider has been renamed from UIServiceProvider to ContactServiceProvider and moved to the Contact namespace. The provider no longer publishes UI assets, loads translations, or registers custom pagination views; instead, it now loads database migrations from the Contact package's Database/Migrations directory. A new ModuleServiceProvider was added to register the Person and Organization models.
packages/Webkul/Contact/src/Providers · high confidence
Core service provider refactoring and new module base service
The core application initialization has been restructured: a new BaseModuleServiceProvider extends Concord's base to handle module bootstrapping, while the main CoreServiceProvider now registers additional facades (ACL, Menu, SystemConfig) and their corresponding container singletons, publishes configuration files for Concord, CORS, and Sanctum, and registers a Version console command. The ModuleServiceProvider has been updated to extend the new BaseModuleServiceProvider and explicitly registers Country and CountryState models alongside CoreConfig.
packages/Webkul/Core/src/Providers · high confidence
Custom checkbox UI for activity completion status
The activity datagrid now displays a custom-styled checkbox for the 'Is Done' status, replacing the previous default input. This change provides a visual toggle that updates the activity's completion status via an AJAX call when clicked, improving the user experience for marking activities as complete directly from the list view.
packages/Webkul/Admin/src/Resources/views/activities/datagrid · high confidence
Database schema updates for core configuration and new location tables
The core database schema has been updated to support new location data and improve configuration storage. New migrations introduce the \countries\ and \country\_states\ tables to manage geographic hierarchy, while the \core\_config\ table has been modified to replace the nullable \locale\ column with standard \timestamps\ and a subsequent migration alters the \value\ column type from string to text to accommodate larger configuration payloads.
packages/Webkul/Core/src/Database · high confidence
Database schema updates for lead permissions, attributes, and configuration
This change introduces three new database migrations to the Admin package. First, it adds a \view\_permission\ column to the \users\ table to control lead visibility settings. Second, it inserts a new 'Expected Close Date' attribute into the \attributes\ table for the leads entity. Third, it modifies the \core\_config\ table to allow the \value\ column to be nullable, providing more flexibility in configuration storage.
packages/Webkul/Admin/src/Database · high confidence
Database seeding delegates to Krayin installer package
The application's database seeding process now delegates to the Krayin installer package's DatabaseSeeder instead of running local seed logic. This change integrates the Krayin installer package, ensuring that the initial database setup and data population are handled by the external package's standard seeder.
database/seeders · high confidence
Desktop sidebar collapse toggle with persistent state
The desktop admin sidebar now supports collapsing to a narrow icon-only width (70px) via a new toggle button at the bottom of the menu. This state is persisted across sessions using a browser cookie, allowing users to customize their navigation space. The change introduces a new view component for the desktop sidebar layout, including the logic for handling the collapsed state and updating the main layout class accordingly.
packages/Webkul/Admin/src/Resources/views/components/layouts/sidebar/desktop · high confidence
Enhanced configuration management with search and SVG sanitization
The CoreConfigRepository now supports searching system configuration entries by title, allowing users to quickly locate settings within the admin interface. Additionally, when saving configuration values that involve file uploads, the system now automatically sanitizes SVG files to prevent stored scripts from being served, addressing a security vulnerability in how uploaded assets were handled.
packages/Webkul/Core/src/Repositories · high confidence
Language files relocated to root lang directory
The English language files for authentication, pagination, passwords, and validation have been moved from the resources/lang directory to the root lang directory. This structural change updates the file paths used to load these translation strings.
lang · high confidence
Laravel 12 application bootstrap and service provider configuration
The application has been upgraded to Laravel 12, replacing the traditional bootstrap/app.php instantiation with the new Application::configure fluent API. This change introduces a centralized bootstrap file (bootstrap/providers.php) that explicitly registers all application and package service providers, including new integrations for Google Contacts, DataGrid, and WebForm. The middleware configuration now explicitly handles stateful frontend requests via Sanctum, excludes specific cookies from encryption (dark\_mode, sidebar\_collapsed), and defines CSRF token exceptions for inbound mail parsing and web forms.
bootstrap · high confidence
Laravel 12 upgrade removes legacy service providers and updates method signatures
The application has been upgraded to Laravel 12, which removes the need for the custom \App\\Exceptions\\Handler\, \App\\Providers\\EventServiceProvider\, and \App\\Providers\\RouteServiceProvider\ classes as these are now handled by the framework's default configuration. Additionally, the \AppServiceProvider\ has been updated to use modern PHP return type declarations (\void\) for its \register\ and \boot\ methods, aligning with the new framework standards.
app/Exceptions, app/Providers · high confidence
Lead database schema refinements and pipeline stage decoupling
The lead management database schema has been updated to support more flexible pipeline configurations and data integrity. Pipeline stages are now decoupled from global stages, allowing them to have unique codes and names within their respective pipelines. The \leads\ table now tracks the specific pipeline stage a lead is in, and several foreign key constraints have been adjusted: \user\_id\, \person\_id\, \lead\_source\_id\, and \lead\_type\_id\ are now nullable with \SET NULL\ or \RESTRICT\ delete behaviors to prevent accidental data loss, while \lead\_pipeline\_stage\_id\ uses \SET NULL\ on deletion. Additionally, pipeline names are now required to be unique, and new columns for expected close dates and rotten days have been added to support sales forecasting.
packages/Webkul/Lead/src/Database · high confidence
Lead module service providers initialized
The Lead module now registers its core models (Lead, Pipeline, Product, Source, Stage, Type) via a new ModuleServiceProvider and loads its database migrations through a dedicated LeadServiceProvider. This replaces the previous generic AuthServiceProvider, ensuring that the Lead module's data structures and migrations are properly bootstrapped when the application starts.
packages/Webkul/Lead/src/Providers · high confidence
Migrated build tooling from Laravel Mix to Vite and Tailwind CSS
The Admin package has replaced the legacy Laravel Mix build configuration with a modern Vite setup, introducing new configuration files for Vite, PostCSS, and Tailwind CSS while removing the old webpack.mix.js. This migration updates the asset pipeline to use Tailwind CSS for styling (including a new brand color variable) and Vite for bundling Vue components and CSS, which changes how assets are compiled and served in development and production environments.
packages/Webkul/Admin · high confidence
Migration to Vite and removal of default welcome page
The application's frontend build system has been updated to Vite, evidenced by the switch from CommonJS \require\ to ES module \import\ syntax in \resources/js/app.js\ and \bootstrap.js\, and the adoption of \import.meta.env\ for environment variables (replacing \process.env.MIX\\\). As part of this integration, the default Laravel \welcome.blade.php\ view has been removed, and a \.gitignore\ file has been added to the views directory to exclude generated assets.
resources · high confidence
New centralized error page layout for the admin panel
The admin panel now uses a dedicated Blade view for displaying HTTP error codes. This new page features a responsive layout that dynamically switches between light and dark mode logos based on user cookie preferences, displays the specific error code and description, and provides clear navigation links to return to the previous page or go to the dashboard, along with support contact information.
packages/Webkul/Admin/src/Resources/views/errors · high confidence
New configuration files and updates to core application settings
This change introduces a suite of new configuration files to support expanded application capabilities, including breadcrumbs, module registration (Concord), IMAP email integration, Vite asset management, mail receiving, repository caching, Sanctum API authentication, and Google services. It also modifies existing core configurations: the application's default authentication guard and provider have been switched from 'admin' to 'user', the database configuration now supports MariaDB and allows table prefixes, the CORS policy is restricted to web-form paths, the filesystem default disk is updated, and the mail configuration adds a failover transport, configurable sender domain, and Google OAuth service credentials.
config · high confidence
New configuration management interface with search and dynamic fields
The admin panel now features a redesigned configuration system, introducing a new index page that displays configuration groups as navigable cards and a dedicated edit page for managing settings. The index page includes a client-side search component that filters configuration items in real-time, while the edit page renders dynamic form fields (such as text, password, number, color, select, and editor types) based on the active configuration item. This change replaces the previous configuration UI with a more structured, searchable, and component-driven approach.
packages/Webkul/Admin/src/Resources/views/configuration · high confidence
New database schema for products, inventories, and related associations
The product package now includes database migrations to establish the core product data structure and its relationships. A new \products\ table stores basic item details like SKU, name, and price. Inventory tracking is handled by a \product\_inventories\ table that links products to warehouses and specific warehouse locations, with a recent update ensuring that deleting a warehouse location cascades the removal rather than nullifying the reference. Additionally, new tables \product\_activities\ and \product\_tags\ are introduced to associate products with activity logs and tags, respectively.
packages/Webkul/Product/src/Database · high confidence
New datagrid toolbar components for filtering, mass actions, pagination, and search
The datagrid toolbar now uses dedicated Blade components (\filter\, \mass-action\, \pagination\, \search\) that render Vue.js-based UI elements. Users can now apply saved and custom filters via a drawer interface, perform mass actions on selected rows with validation and confirmation modals, navigate paginated results with configurable rows-per-page, and search across columns. These components replace the previous inline toolbar implementation, providing a more structured and interactive data grid experience in the admin panel.
packages/Webkul/Admin/src/Resources/views/components/datagrid/toolbar · high confidence
New form request validators and admin-to-user migration
The Admin package now introduces dedicated server-side validation classes for several admin forms, including Attribute, Configuration, Lead, Pipeline, and mass-update/destroy operations, ensuring that inputs like configuration keys, lead attributes, and pipeline stages are validated against trusted server definitions rather than client-supplied payloads. Additionally, the existing AdminForm request has been renamed to UserForm and updated to validate against the users table instead of the admins table, reflecting a migration of the admin user model.
packages/Webkul/Admin/src/Http/Requests · high confidence
New settings index page with dynamic menu cards
The settings index page has been replaced with a new layout that dynamically renders setting categories and their sub-items as interactive cards. Each card displays an icon, title, and description, linking to the respective child setting page, providing a more structured and visual overview of available settings.
packages/Webkul/Admin/src/Resources/views/settings · high confidence
Product repository now manages attribute values and warehouse inventory
The Product repository has been refactored to handle attribute value persistence and inventory management directly. When creating or updating a product, the repository now automatically saves associated attribute values linked to the product entity. Additionally, a new saveInventories method allows updating, creating, and deleting inventory records across warehouses, and a new getInventoriesGroupedByWarehouse method aggregates stock data (in-stock, allocated, on-hand) by warehouse and location. A new ProductInventoryRepository has also been introduced to support these inventory operations.
packages/Webkul/Product/src/Repositories · high confidence
Redesigned admin authentication pages with custom branding and password visibility
The admin login, forgot password, and reset password views have been completely rewritten to use a new centered layout with configurable admin logos (falling back to a default SVG) and a 'Powered by' footer. The login page now includes a password visibility toggle, and all three pages support view render events for extending form controls.
packages/Webkul/Admin/src/Resources/views/sessions · high confidence
Redesigned product management interface with new layout and activity tracking
The product administration views (create, edit, index, and view) have been completely rewritten to use a modern, component-based layout. The create and edit forms now feature a two-column design with a sticky header bar containing breadcrumbs and action buttons, separating general attributes from price/quantity inputs. The index page now utilizes a dedicated datagrid component with shimmer loading effects. The product view page introduces a split-panel layout: a sticky left sidebar for product metadata (name, SKU, tags) and activity actions (notes, files), and a right panel for a comprehensive activity feed that includes notes, files, change logs, and inventory updates.
packages/Webkul/Admin/src/Resources/views/products · high confidence
Refactored user management repositories and removed custom role update logic
The user management layer has been restructured to support a group-based permission system. The \AdminRepository\ was renamed to \GroupRepository\ and now targets the \Group\ contract, while a new \UserRepository\ was introduced to handle user data and retrieve user IDs associated with the current user's groups. Additionally, the custom \update\ method in \RoleRepository\ was removed, reverting role updates to the default repository behavior, and method visibility was standardized to \public\ across the affected repositories.
packages/Webkul/User/src/Repositories · high confidence
Removal of legacy HTTP kernel and controller base class
The application no longer uses the traditional \app/Http/Kernel.php\ file, which previously defined global middleware, route middleware groups, and individual route middleware registrations. Additionally, the \app/Http/Controllers/Controller.php\ base class has been simplified to an empty abstract class, removing the legacy traits (\AuthorizesRequests\, \DispatchesJobs\, \ValidatesRequests\) and the inheritance from \BaseController\. This indicates a shift away from the standard Laravel HTTP kernel and controller structure, likely towards a different routing or middleware handling mechanism.
app/Http · high confidence
Removal of legacy HTTP middleware classes
The application no longer includes the custom Authenticate, TrimStrings, and TrustProxies middleware classes. This change removes the custom redirect-to-login logic for unauthenticated users, the specific exclusion of password fields from string trimming, and the manual proxy trust configuration (relying on the framework's default behavior instead).
app/Http/Middleware · high confidence
Removal of legacy admin routes and cleanup of helper file
The centralized admin route definition file (routes.php) has been removed, eliminating the hardcoded login, password reset, logout, and dashboard routes that were previously defined there. Additionally, the HTTP helpers file has been cleaned up by removing unnecessary indentation and ensuring proper PHP closing tag formatting, which standardizes the code style for the bouncer helper function.
packages/Webkul/Admin/src/Http · high confidence
Repository model handling updated with new resetModel method
The base Eloquent Repository class now includes a new resetModel method that re-instantiates the underlying model instance, allowing users to clear cached model states. Additionally, the getModel method now accepts an optional $data parameter, changing its signature to support passing data during model retrieval. Minor code style adjustments were also applied, including removing unused imports and standardizing brace placement.
packages/Webkul/Core/src/Eloquent · high confidence
Updated UserFactory return type annotation
The docblock for the \unverified\ method in \UserFactory\ now uses the short class name \Factory\ instead of the fully qualified namespace \\\Illuminate\\Database\\Eloquent\\Factories\\Factory\. This is a minor code-style adjustment that does not alter runtime behavior but aligns with modern PHP conventions for type hinting within the same namespace.
database/factories · high confidence
Upgrade to Laravel 12 and PHP 8.3 with modernized build tooling
Krayin CRM now requires PHP 8.3 and has upgraded to Laravel 12, introducing stricter type checking and a new application bootstrap structure. The traditional \app/Http/Kernel.php\, \app/Console/Kernel.php\, and \app/Exceptions/Handler.php\ files have been removed; middleware, scheduling, and service providers are now configured directly in \bootstrap/app.php\ and \routes/console.php\. The legacy \server.php\ development server and \webpack.mix.js\ build configuration have been deleted and replaced with a \vite.config.js\ setup using the \laravel-vite-plugin\. Additionally, the \doctrine/dbal\ dependency has been removed in favor of Laravel 12's native column modification capabilities, and the \phpunit.xml\ configuration has been updated to reflect these structural changes.
(repo-wide) · high confidence
User management schema refactored and extended with new tracking columns
The database schema for user management has been restructured to support a more granular permission model and improved auditability. The 'admins' table has been renamed to 'users', and the 'admin\_password\_resets' table to 'user\_password\_resets', reflecting a shift from an admin-centric to a general user-centric identity model. A new 'groups' table and a many-to-many 'user\_groups' pivot table have been introduced to allow users to be organized into groups, with a unique constraint added to group names to prevent duplicates. Additionally, an 'image' column has been added to the users table to support profile pictures, and a 'created\_by' column has been added to both the users and roles tables to track which user originally created each record, with foreign keys set to nullify on deletion.
packages/Webkul/User/src/Database/Migrations · high confidence
User model refactored with API tokens, image support, and group associations
The User model (renamed from Admin) now supports API authentication via Laravel Sanctum's HasApiTokens trait and includes new fillable fields for user images, view permissions, and creator tracking. It exposes an image URL accessor and includes a new many-to-many relationship to User Groups, allowing users to be associated with multiple groups via the user\_groups pivot table.
packages/Webkul/User/src/Models · high confidence
User model updated for Laravel 12 compatibility and security
The User model has been refactored to align with Laravel 12 standards. The \MustVerifyEmail\ interface was removed in favor of using the \UserFactory\ for testing. The \$fillable\ and \$hidden\ properties now use strict \list\<string\>\ type annotations. The \$casts\ property was converted to a \casts()\ method, which now explicitly casts the \password\ attribute to \hashed\ for improved security and includes the \email\_verified\_at\ datetime cast.
app/Models · high confidence
User module model registration and service provider cleanup
The User module now registers Group, Role, and User models instead of Admin and Role, reflecting a shift from admin-centric to user-centric data structures. Additionally, the service providers have been refactored to use BaseModuleServiceProvider, simplified the UserServiceProvider by removing an empty register method, and applied code style fixes.
packages/Webkul/User/src/Providers · high confidence
Fixes
Add ViterNotFound exception for missing Vite namespaces
A new ViterNotFound exception class has been introduced in the Core package to handle cases where a Vite namespace is missing. When this exception is thrown, it provides a clear error message instructing users to add the missing namespace to the \config/krayin-vite.php\ file, improving debugging clarity for Vite configuration issues.
packages/Webkul/Core/src/Exceptions · high confidence
New input directives for debouncing and XSS protection
The admin interface now includes three new JavaScript directives to improve input handling and security. A \debounce\ directive delays input change events to reduce processing load, while a \dompurify\ directive automatically sanitizes HTML content to prevent cross-site scripting (XSS) attacks. Additionally, a new \tooltip\ directive provides customizable, position-aware tooltips for UI elements.
packages/Webkul/Admin/src/Resources/assets/js/directives · high confidence
Redesigned Users management interface with responsive datagrid
The Users settings page now features a completely rebuilt index view that replaces the previous layout with a modern, responsive datagrid. Administrators can now view user details (ID, name, email, group, status) in a structured table on desktop screens, while the interface automatically switches to a card-based layout for mobile devices. The update also introduces visual improvements such as profile image support, consistent dark mode styling, and sticky header navigation with breadcrumbs.
packages/Webkul/Admin/src/Resources/views/settings/users · high confidence
Test coverage
Added Person factory for contact model seeding; Added Playwright e2e test configuration and gitignore; Added Playwright end-to-end tests for Admin module; Added end-to-end security tests for admin authentication, ACL, and privilege escalation; Added end-to-end tests for Admin settings management; Added language file key consistency test; Added security test coverage for authentication, installation, and input sanitization; Added test fixtures and data for admin e2e testing; Initial test suite setup with Pest and feature tests; New Playwright e2e test utilities for Admin panel; New Playwright page objects and core locators for Admin e2e tests.
Dependencies
Project rebranded to Krayin CRM with Laravel 12 upgrade and modular package structure
The application has been rebranded from Laravel to Krayin CRM, upgrading the core framework from Laravel 8 to Laravel 12 and requiring PHP 8.3. The codebase has been restructured into a modular architecture with new Composer packages for Activity, Attribute, Contact, Email, Lead, Product, Tag, WebForm, Installer, and more, replacing the previous monolithic layout. Front-end tooling has shifted from Laravel Mix to Vite, upgrading Vue from version 2 to 3 and Tailwind CSS to 3.3, while adding new dependencies for PDF generation, data handling, and form validation.
(dependencies) · high confidence
Updated frontend build assets and upgraded Vue.js to v3.5.40
The public-facing JavaScript and SVG assets have been rebuilt, including a new icon for the Activities module. The underlying frontend framework has been upgraded to Vue.js version 3.5.40, which is now bundled in the main application script.
public · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 92
- Architecture 92
- Maturity 54
- Readiness 46
- Security 85
- Accessibility 40
Changes since last survey
- 300 commits — 138 feature/other, 162 fixes
By area
- (repo) — 150 commits
- packages/Webkul — 120 commits
- (root) — 15 commits
- .github/workflows — 3 commits
- config/app.php — 2 commits
- config/concord.php — 2 commits
- docs/superpowers — 2 commits
- public/admin — 2 commits
- tests/Feature — 2 commits
- .github/skills — 1 commit
- bin/validate-skills.sh — 1 commit
Notable commits
- fix: GUI installation fixed
- fix: Merge branch '2.2' into fix/2045-quote-pdf-logo
- fix: Merge branch '2.2' into fix/2407-missing-translations-clean
- fix: Merge branch 'krayin:2.2' into fix/2014-kanban-previous-month-sales
- fix: Merge branch 'krayin:2.2' into fix/2045-quote-pdf-logo
- fix: Merge branch 'krayin:2.2' into fix/2112-responsive-ui-page-zoom
- fix: Merge branch 'krayin:2.2' into fix/2145-person-filter-by-tag
- fix: Merge branch 'krayin:2.2' into fix/2149-multi-pipeline-dashboard
- fix: Merge branch 'krayin:2.2' into fix/2232-webform-pipeline-field
- fix: Merge branch 'krayin:2.2' into fix/2550-kanban-infinite-scroll-duplicates
- fix: Merge branch 'krayin:2.2' into fix/2558-group-selection-view-permission
- fix: Merge branch 'krayin:2.2' into fix/2559-idor-agent-record-access-control
- fix: Merge branch 'krayin:2.2' into fix/2584-webhook-validation
- fix: Merge branch 'krayin:2.2' into fix/2586-quick-add-permission
- fix: Merge branch 'krayin:2.2' into fix/2588-quick-add-page-refresh
- fix: Merge branch 'krayin:2.2' into fix/2616-unrestricted-role-assignment
- fix: Merge branch 'krayin:2.2' into fix/2616-unrestricted-role-assignment
- fix: Merge branch 'krayin:2.2' into fix/2616-unrestricted-role-assignment
- fix: Merge branch 'krayin:2.2' into fix/2616-unrestricted-role-assignment
- fix: Merge branch 'krayin:2.2' into fix/2616-unrestricted-role-assignment
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
krayin/laravel-crm was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 570a8db102607f1c191f239f06f6db06ec8b942b — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.