Files
hub/CHANGELOG.md
kelly 5bbc740962 feat: Implement Phase 9 (Campaign UX) and Phase 10 (Conversations/Messaging)
- Add marketing_channel_id to broadcasts table
- Create Campaign views (index, create, edit, show) with modern UX
- Implement test send functionality with provider abstraction
- Create Conversations data model (conversations, participants, messages)
- Create Messaging inbox UI with conversation threads
- Link broadcast sends to conversation system
- Add Marketing nav section (premium feature, gated by has_marketing flag)
- Update BroadcastController with sendTest method
- Create MessagingController with conversation management
- Add SMS provider support (Twilio, Telnyx, Cannabrands)
- Create comprehensive platform naming and style guide

Phase 9 Complete: Full campaign management UX
Phase 10 Complete: Messaging foundation ready for two-way communication
2025-11-20 23:43:47 -07:00

34 KiB

(2025-10-23)

Bug Fixes

  • add background color to Choices.js dropdown items (fcf3689)
  • add background to nested choices list container (36a66d6)
  • add high-specificity selectors for dropdown background (c7de8d5)
  • add libpq-dev for PostgreSQL extension and show build output (e800eab)
  • add missing Action import in LatestNotifications widget (3b12568)
  • add missing compliance document methods to Business model (0c3a935)
  • add null user checks to OrderNotificationService (a81c9a0)
  • add overflow-visible to parent containers for dropdown menus (dd5b7d2)
  • add z-index and opacity to dropdown to prevent see-through (1991941)
  • apply conditional dropdown-top to invoices table last row (8e41203)
  • broken product images on order show page (7af3403)
  • center empty state icon above 'No Locations Yet' text (5041fec)
  • change notification actions to redirect instead of returning JSON (16621ce)
  • change notification ID type from int to string for UUID support (a53ce10)
  • connect Analytics navigation link to actual route (592a05d)
  • convert business license type to dropdown in Filament admin (95764a1)
  • correct anime.js import path for ES modules (67e1ed2)
  • correct brand colors column name from brand_colors to colors (ba4bd33)
  • correct Business model relationships and remove non-existent fields (911865e)
  • correct business relationship reference in buyer invoice view (Bug #9) (0f3939c)
  • correct Company-Location relationship foreign key (5b1969c)
  • correct data format for ApexCharts treemaps and Cal-heatmap (080e1c5)
  • correct database column names and currency handling in analytics (b0c7b2d)
  • correct database references from MySQL to PostgreSQL in README (3a4fe0a)
  • correct invoice-brand relationship path (Bug #9) (b1dcb36)
  • correct picking ticket complete route name (Bug #8) (f0596b2)
  • correct picking ticket route name in seller order view (a41cdf1), closes #7
  • correct Section import for Filament 4 Schema API (26583b1)
  • correct user_type default and invoice business_id bug (559d705)
  • force Choices.js dropdown to stay closed on page load (9ddc883)
  • handle null user in invoice show view for manual invoices (ad2d7f8)
  • handle null user in picking ticket view (92cbc21)
  • handle null user in seller invoices index view (7e1c6a0)
  • handle null user in seller order show view for manual invoices (a772502)
  • improve dark mode text readability with white text (9264b8b), closes #e3f1eb #ffffff
  • improve UX when no contacts exist for invoice customer (5c7d9e6)
  • install PHP intl extension and dependencies for Filament (0ef61eb)
  • make Choices.js vendor dropdown compatible with DaisyUI theme (a032d98)
  • make invoice creation page header theme-aware for dark mode (5940ed1)
  • make locations page header theme-aware and add icon (91fcf1e)
  • make vendor dropdown reactive to dark mode toggle (4b62fab)
  • move postgres to services section and add Composer caching (bef77df)
  • only show 'awaiting buyer approval' after invoice is sent (ea6d2ef)
  • prevent Choices.js dropdown auto-opening and clean up single-select display (36b7e5e)
  • prevent dropdown menu clipping in table rows (b831dd4)
  • remove @apply directives causing invalid CSS variables (6409436)
  • remove Alpine x-for from vendor select to fix scope error (5dc5379)
  • remove Alpine.js code and restore working toggle implementation (2a8f072)
  • remove Alpine.js code causing text rendering issues (4e1706d)
  • remove Canna brand - now 12 brands total (d228dd1)
  • remove Cannabrands as brand - it's a company only (59db949)
  • remove HtmlString label causing text overflow on toggles (eed5e57)
  • remove images column conflict with images() relationship (79dbb2b), closes #5
  • remove inappropriate email availability checking from login form (56b9a32)
  • remove invalid Tab::description() method call (fac1f45)
  • remove non-existent locations relationship from change fulfillment modal (8174aad)
  • replace $order->company with $order->business in buyer order view (7751604), closes #6
  • resolve ambiguous column references in analytics queries (c960754)
  • resolve double-encoding issue with vendor names containing apostrophes (6b37783)
  • resolve JavaScript errors in analytics charts (608c14a)
  • restructure BrandResource to correct namespace and add navigation (a6fe91a)
  • simplify notification widget by removing table actions (059e220)
  • target active state for Choices.js dropdown background (712ce5b)
  • update app layout theme and simplify DaisyUI theme config (4c38493)
  • update correct field when applying picked_qty changes (d6d4ef1)
  • update notification view to use correct layout and styling (dc5627e)
  • update tests for new user model structure and disable Vite in testing (c165bf9)
  • update to anime.js v4 API syntax (cd80da1)
  • update UserApprovalService and phpunit config for new schema (a617272)
  • upgrade CI to PHP 8.3 to match composer.lock requirements (8bddf54)
  • use @apply with DaisyUI utilities for Choices.js theming (7aeb56d)
  • use company as location (multi-location not yet implemented) (6ddfab4)
  • use computed primary color for chart gradient (dd46a92), closes #3b82f6
  • use correct anime.js v4 two-argument API (edd488d)
  • use DaisyUI CSS variables with !important for Choices.js (9a42e25)
  • use dropdown-top for table action menus (DaisyUI pattern) (9a7ad53)
  • use hardcoded theme colors instead of CSS variables (57328fa), closes #ffffff #dcdee0 #1e2328 #181c20 #2c3034 #f0f4f8
  • use HtmlString for dotted underline tooltip on primary toggles (b85e0a2)
  • use inline-flex for locations header to prevent icon floating (e0e4094)
  • use line_total column instead of non-existent subtotal in analytics (0d5904c)
  • use map syntax for environment variables in Woodpecker CI (53d6f44)
  • use named export for anime.js v4 (d6cf85c)
  • use server-side Blade conditionals for empty data handling (f31289b)
  • use Storage::url() for product images in invoice show view (0a0dbd1)
  • use Storage::url() for product images in picking ticket view (2a3e4f9)
  • use theme-aware colors for page headers and icons (e68df40)
  • use theme-aware colors in invoices stats cards and table (102a2ed)

Features

  • Add AdminPanelProvider and dashboard_url helper function (8628e44)
  • add ApexCharts and anime.js for dashboard enhancements (7fca649)
  • add Arizona cannabis compliance info to invoice PDF (25cc2e7)
  • add batch selection UI to marketplace and cart (1ccef51)
  • add batch tracking and MSRP support to invoicing (f2cadb2)
  • add BOM (Bill of Materials) management system (f1d9684)
  • add buyer UI for pickup selection and management (57c9407)
  • add configurable tax rates for Arizona B2B cannabis compliance (dd60485)
  • add data migration commands for legacy system import (cf06bcb)
  • add database migrations for batch tracking system (4f53fde)
  • add Docker image building to CI pipeline + deployment docs (c658193)
  • add drag-and-drop reordering to BOM components (83a9f71)
  • add Filament admin interface for batch management (e002322)
  • add finalize & send functionality for manual invoices (05a0e74)
  • add gitlab ci starter (4c3185c)
  • add license field validation and storage to location controller (d77a138)
  • add license_type field and clean up Business model (3b4da67)
  • add light/dark mode support to ApexCharts (c2dbf28)
  • add light/dark theme toggle with sun/moon icons (5bf5b7c)
  • add location and contact selection to invoice creation form (e5f2dda)
  • add location license number to invoice PDF (f6dda38)
  • add Makefiles (5d3c5d5)
  • add marketplace controllers and documentation for buyer/seller structure (eb6db6d)
  • Add multi-step signup onboarding process (65c6149)
  • Add new blade component files for sidebar and layout components (2f88152)
  • Add new blade components for Filament panels (d6ac894)
  • Add new view files for authentication and dashboard pages (80f008c)
  • add notification infrastructure and policy documentation (Day 15 - Part 1) (9e4d4de)
  • Add onboarding confirmation page and file upload endpoint (b843788)
  • add optimized BOM UI with advanced features (b0261b9)
  • add PDF export for BOM (94bc897)
  • add per-brand revenue visualization with color-coded legend (b00155c)
  • add picking workflow for manual invoices (18685fa)
  • add pickup integration - models and database layer (a231b4a)
  • add pre-commit hook for automatic code formatting (8ec361f)
  • add product pricing and business enhancements (0560d5a)
  • add RelationManagers and actions to ProductResource (fd1c27e)
  • Add RetailerResource functionality (831f758)
  • add roles, seeders, and new packages (6c07ce9)
  • Add RolesOverview and UserStats widgets (5ddb1c8)
  • add seller notification widget to Filament admin dashboard (04fa99d)
  • add status and version routes (6d72d88)
  • add stock filter to products page (392a8ea)
  • Add SuperAdminSeeder for initial super admin user (645d26e)
  • add tax configuration UI and location license management (87d3572)
  • Add user menu and theme switcher components (43426ed)
  • Add UserResource and related classes and pages (cdae421)
  • add utility commands for data cleanup and fixes (52ecf0b)
  • add vendor management and component images (b04e2b6)
  • complete shipping manifest system with buyer access and PDF improvements (031136d)
  • comprehensive auth system improvements and user management enhancements (766d416)
  • comprehensive test data setup and account type analysis (c8987b1)
  • convert license type to dropdown with official Arizona types (246779b)
  • create fully onboarded test businesses in DevSeeder (0d0334c)
  • create separate authentication controllers and views for buyers and sellers (684e947)
  • create unified registration landing page with user type selection (87b862c)
  • dynamically pull seller business info on invoice PDF (be0ef68)
  • enforce single primary contact/user with info icon tooltip (edb69ed)
  • fix component images migration to use product_images table (c1cb84f)
  • implement batch tracking models and relationships (8a753ad)
  • implement Brand model with 14 actual brands (49d4f11)
  • implement business management features (contacts, locations, users, profiles) (38ac09e)
  • implement buyer order and invoice management portal (Day 13) (aaad277)
  • implement buyer-specific Nexus dashboard with Marketplace Platform-style navigation (9b72a8f)
  • implement buyer/seller routing structure with dual registration options (5393969)
  • implement buyer/seller user type separation in database layer (4e15b3d)
  • implement CalVer versioning system with sidebar display (197d102)
  • implement Choices.js for vendor selection dropdown (3c25bb4)
  • implement CompanyResource with approval workflow (08d3271)
  • implement complete business/company migration from old CRM (2f163db)
  • implement complete Docker containerization for development and production (7629500)
  • implement complete email and notification system (Day 15 - Part 2) (3183c8b)
  • implement complete Nexus dashboard layout with Iconify integration (9cb9fcc)
  • implement complete order management system with picking workflow (f9fa249)
  • implement complete user approval and dashboard workflow (7f51605)
  • implement comprehensive analytics dashboard with 5 visualizations (fdfe204)
  • implement comprehensive business setup form with all CRM sections (e39623d)
  • implement comprehensive buyer dashboard with real-time stats (Day 14) (98284a6)
  • implement comprehensive notification system and ZOD form validation (138abc1)
  • implement comprehensive Profile and Settings pages (8eeee6a)
  • implement core Business model and multi-tenancy architecture (3883719)
  • implement CRM-inspired theme and remove logos from auth forms (6bc6e3e), closes #014342 #015b59 #e3f1eb #172B4D #344767
  • implement DaisyUI 5.x custom theme syntax (433b712)
  • implement fleet management system with delivery scheduling (7781de5)
  • implement interactive dashboard with ApexCharts and anime.js (3cf5c63)
  • implement Lab model and StrainSeeder for cannabis compliance (a26c0fc)
  • implement manual admin approval workflow for user registration (ead8916)
  • implement payment term surcharges at checkout (cf148a8)
  • implement product migration command with dry-run support (ba2f434)
  • implement Product, Strain, and Component models with BOM system (d4aebad)
  • implement ProductResource in Filament with cannabis-specific features (5d7f7d6)
  • implement seamless primary toggle switching with Livewire (fe790d2)
  • implement seller notification system (Day 16) (c024cd8)
  • implement unified single login for all user types (c00e869)
  • implement UUID-based storage paths for multi-tenant isolation (2b6f2df)
  • improve manual invoice workflow to skip picking stages (ca0bda4)
  • integrate batch selection in marketplace and cart (af96aba)
  • migrate business-level contact fields to Contact records (d97534d)
  • migrate to first_name/last_name fields and fix authentication routing (42a6f13)
  • models: Add retailer_id field to User model and migration (25d8e71)
  • optimize form field widths and add Alpine.js formatters (e58c0ab)
  • optimize theme colors for UX and accessibility (ee8c7b8), closes #015b59 #e3f1eb
  • remove standard /register route, use only /b/register (f4de7da)
  • rename businesses table and model to companies (cd02403)
  • replace Spatie Laravel PDF with DomPDF for all PDF generation (e3cb8b2)
  • successfully upgrade Filament from v3 to v4 (cd77339)
  • update business registration form to match main register styling (b4b4324)
  • update dashboard page title and breadcrumb for multi-tenant future (0f872b6)
  • update invoice PDF to display contact and location information (79fc856)
  • update manifest PDF template for pickup/delivery (c7e9f95)
  • update seller/admin views for pickup display (9f98ab3)
  • upgrade Pest testing framework to v4.0 (24c2eb2)

Performance Improvements

  • optimize animations for 60fps performance (2180897)
  • optimize primary toggle switching for instant response (ccbbd33)

Reverts

  • Revert "refactor: match products filter styling to components page" (8578e36)
  • display actual database values for component units (239390b)
  • remove multi-brand chart implementation (b51a4a0)
  • restore working primary toggle implementation (02135f2)