CreataCRM Features Added from r9667 to r9875
Period: October 17, 2025 - February 10, 2026
Total Commits: 208 revisions (r9667 - r9875)
Contributors: Josh, Reece
📅 October 2025
🔄 MYOB Integration Improvements (October 2025)
Invoice Sync (r9668)
- MYOB invoice sync now uses correct filter on date and last payment date when syncing data from MYOB
📧 Email Enhancements (October 2025)
Exchange Integration (r9672)
- Improvements with Email popup with Exchange
- 2025 feature list documentation
🛠️ Job Management (October 2025)
Component Purchase Orders (r9673)
- Fixed component Purchase Order on Jobs
- Added mappings for component purchase orders to work correctly
📅 Scheduler Improvements (October 2025)
Activity Modal Enhancements (r9674)
- Added address search for location field in scheduler activity modal popup
- Added option for default new customer when creating customer from activity scheduler modal
📊 Table Builder Enhancements (October 2025)
Grouping Options (r9675)
- Table builder add disable grouping option
- Grouping for any column that uses a collection editor is always disabled
🔗 Data Model Updates (October 2025)
Job Associations (r9676, r9677)
- Removed many to many associations on Job
- Project file updates
📍 Address Search (October 2025)
Sale Address Improvements (r9679)
- Address search on SaleAddressEdit.vue includes company now
- Added criteria for Notifications
💰 Sales & Reckon Integration (October 2025)
Ship Date Support (r9680)
- Add ShipDate to Sale BO
- When sending sale quote or order to Reckon add ShipDate to the invoice
🔧 System Improvements (October 2025)
Field & Action Updates (r9681, r9682)
- Fixed aliases on job link classes
- Required fields override for actions and record space merging required fields from actions
📅 November 2025
📦 Purchase Order Enhancements (November 2025)
Material Management (r9683)
- Added order to SaleAddMaterialsAction
- Created AddMaterialLinesToPurchaseOrderAction
- Added header to ProductServiceDisplay.vue
🏢 Supplier Management (November 2025)
Supplier Dashboard (r9684, r9685)
- Improvement of SupplierDetailView.vue
- Added Product Tab and Bill Tab
- EmailAddress on Supplier to verify button
- Clean of SupplierDetailView and added actions buttons Layout/SupplierDetailViewLayout.ts
- Created SupplierDashboard
- Fixed BillViewMode.vue and BillEditMode.vue crashing
- Fixed PurchaseOrderDetailView.vue not loading
🏢 Company Features (November 2025)
Parent Company Support (r9686)
- On Company use ParentCompany option
🔌 Integration Services (November 2025)
Slack Integration (r9687, r9688)
- Added a Slack controller
- Fixed up the SlackEventsController
⚙️ Workflow Enhancements (November 2025)
Workflow Blocks (r9689)
- Added UnixTimestampToDateActivity block
📋 Board Improvements (November 2025)
Drag and Drop (r9690)
- Improvements with dragging and dropping for boards
📊 Opportunities & Leads (November 2025)
Display Enhancements (r9691)
- Added orderby for opps and leads and style improvements
💰 Price List Management (November 2025)
Price List Detail View (r9692, r9694)
- Add expression editor
- Add price list detail view, add rules action and update cache action
- Improvements on Price List BasicTable.vue
- Added Pagination
- Added Expression editor
- Added 2 Actions AddCompaniesAction.ts AddContactsAction.ts
- Improvement design for Price List
🎨 UI Components (November 2025)
Opportunity Cards (r9693)
- Added a popup layout 2 for Opportunity/OpportunityCard.vue
- Improvements to arrange of widgets connected to it
🏢 Company Divisions (November 2025)
Division Management (r9695, r9696)
- Added DIVISION button on company
- Added AttachDivisionsAction.ts
🔍 Search Improvements (November 2025)
Linked Record Search (r9697)
- Allow searching in all linked record columns header filter select thing
📝 Editor Enhancements (November 2025)
Basic Editor (r9698, r9699)
- Improvement to basic editor
- Added NumberCompare
🎨 Styling Updates (November 2025)
Style Standards (r9702, r9705)
- Fix the BasicTable/BasicTableBody.vue deep issue
- Added styles on summary
- BasicTable.vue refresh false
- Style improvements for creatacrm
- Starting to make style standards
⚙️ Workflow & Notifications (November 2025)
Expression Editor Integration (r9703, r9704)
- Commit changes when updating workflow service name
- Increase z-index of notifications window so it sits over the scrollable table header
- Expression editor - fix duplicated suggestions
- Add expression editor to custom field expression for calculated field
- Use expression editor to allow criteria of Notifications to be edited
💰 Sales Lines Editor (November 2025)
Quantity Fixes (r9706)
- Fix sales lines editor attempting to set the Quantity on a line to the old value of the product service field when it changes
🎨 Modern Line Items (November 2025)
UI Components (r9707, r9708)
- Added ModernLineItem.vue WIP and other fix ups
- Fix up vuejs/creatacrm-components/vue.config.js because of typescript issue fork-ts-checker parallel: false
- Improvement with SaleLinesEditor/Lines/
📊 Survey System (November 2025)
Survey Features (r9711, r9712, r9717)
- Add survey detail view
- Add survey editor widget
- Add survey results table widget - auto generate table config based on survey questions, switch to different config for different survey
- Add generate table config action - generate table config based on survey, overwrite existing or create new if not exists
- Detect changes in survey and ask to update changes to table config
- Surveys save ranking answers
- Fix display of date fields in results table
- Add indicator to survey editor if there are unsaved changes
- Change display column of checkbox field to drop-list
- Remove some debugger statements
💰 Reckon Sales Integration (November 2025)
Quote & Order Actions (r9713, r9714, r9715, r9716, r9719)
- Added complete code for createorder and createquote
- Added 2 reckon actions from Reckon:
- Create Reckon job off a sale
- Link reckon jobs from customer
- Link reckon jobs on orders section
- Added popup create job
- Sales quote to reckon jobs
- NewSaleOnOppsComponent.vue spinner
- Fix up ReckonGroupItem as it was not saving of sales order
- Added groups to display on ReckonSalesOrderDetailView.vue
- Fix sending groups to Reckon sales order
🛠️ Job Creation from Sales (November 2025)
Component Items (r9718, r9726, r9727)
- On Sale Detail Layout v1, on create Job on Quote
- Added Component Items
- Custom job Name popup
- Changed save on the sale to check if there is no customer
- Also added create jobs to OrderContent.vue and CreateJob
- PO Drop Down on QuoteContent.vue
📦 Purchase Order Improvements (November 2025)
Supplier Filtering (r9721, r9722)
- Searching for Item on Purchase Order Line can be filtered by linked Supplier if setting in Settings bo is enabled
- Fix being able to create purchase order from Sales Order Lines on Sale when there are no Sales Order Lines
- Purchase order action on v1 sale view now uses component select modal
- Purchase order line field on quote item noncloneable
- Slightly changed quantity check when creating line data in ComponentPurchaseOrderModal
- Fix non-record space issue in SalesOrderToInvoiceAction
💰 Reckon Groups (November 2025)
Group Handling (r9723, r9724, r9725)
- Fix up Reckon Groups for CreataCRM Sale order to Reckon Sales or invoice
- Improvements to the Purchase order on a QuoteContent.vue
- Missing elements to the purchase order on quotecontent
📋 Quote Approval (November 2025)
Approval System (r9728)
- Added SaleQuote Approval
🎨 UI Enhancements (November 2025)
Command Buttons & Popovers (r9729, r9730, r9732, r9733, r9735, r9736, r9737)
- Added popover on CommandButton.vue
- OrderContent.vue added popover tips
- Alternative color on quotelines
- Added CreataBlue to SaleContentEdit.vue and SaleContentView.vue and QuoteContent.vue
- Fix up on QuoteContent.vue for createjob and more features
- Added Style for SalesOrderLines.vue and others
- Added Styles for Sales for InvoiceContent.vue, PurchaseOrders/PoContent.vue
- Fix up ComponentPurchaseOrderModal.vue, PartialInvoiceFromQuotePopup.vue
- Styles for QuoteContent.vue, PoContent.vue PurchaseOrders/PoContent.vue, OrderContent.vue
- Footer and header for sales
📊 Dashboard Views (November 2025)
Sales Dashboards (r9734)
- Added SalesQuote Sales Order and Sales Invoice Dashboard Views
- Added sideActions on Nav/NavManager.cs
🔌 Plugin Support (November 2025)
Customization (r9738)
- Customise the SaleCustomerEdit.vue and SaleContentView.vue to have plugins
📅 December 2025
🔗 Webhook System (December 2025)
Distribution Service (r9739, r9743)
- Add webhook distribution service
- Modify postal message tag field to include public server url for all non-campaign emails that use the creatamail Postal endpoint
- Add events to hook on and clean up for MiniApp ObjectSpaceProvider
- Cleanup and error handling for webhook distributor
📅 Timeline Enhancements (December 2025)
Campaign Events (r9740, r9741)
- Added CampaignEventEntry.vue for Timeline/DateGroup.vue for Sales
- Added Timeline/TimelineHelper.js for all entry
- Added Styles for TimelineCalendarDateGroup.vue
💰 Reckon Conversion (December 2025)
Group Fixes (r9742)
- Fix up the SalesOrderConverter for Groups again
- Fix up InvoiceConverter for groups again
💰 Sales Creation (December 2025)
Job to Sale (r9744)
- Change sales creation from job - remove option to create sale and just always do it
- Reckon invoice import - if we complete an import if an invoice without setting the Customer, set the Customer to the TopLevelCustomer (if we found it)
- Remove Browsable(false) from TopLevelCustomer property on Reckon Invoice
🎨 Navigation Styling (December 2025)
Menu Updates (r9745)
- New styles for Nav/CreataMenu.vue and Tabs and Contact Tabs
📦 Purchase Order Design (December 2025)
UI Improvements (r9746)
- Creata design for purchase order
📋 Kanban Board (December 2025)
Board Feature (r9747)
- Added Kanban Board
📦 Warehouse Management (December 2025)
Warehouse Features (r9748)
- Warehouse Improvements:
- Added Flat Items List View
- Added search in the api WarehouseController.cs to get to pagination
- Added Menu in the warehouse detail View
- Added 3 actions:
- Add location
- OpeningStockComponent.vue
- OpeningStockTrackedComponent.vue
📊 Survey Fixes (December 2025)
Loading Issues (r9749)
- Fixing up survey not loading
🛠️ Job to Sale Order (December 2025)
User Experience (r9750)
- Fix up Job to Sale Order
- Better user experience
- Popover and click to Sales
- Also fixing tool tips on scheduler not working
🔒 Security Roles (December 2025)
Customer Restrictions (r9751)
- Added New Security Roles that stops users from adding Customers
🔄 Reckon Sync (December 2025)
Deduplication (r9752)
- Dedup the items from controller in ReckonSync
🔢 Number Templates (December 2025)
Template Enhancements (r9753)
- Fix number template prepend requiring data between its brackets
- Add Count option to number template - returns number of items of current type in the database plus one (1)
- Prepend is now optional in a number template, if no prepend is specified PrependCount will do the same thing as Count
📧 Email Templates (December 2025)
Error Handling (r9754)
- Add Error on Sending Merge Templates, doesn't hide
📅 Email Events (December 2025)
Timeline Integration (r9755)
- Added email events on Opportunities/OpportunityDetailView.vue for timeline
- Added Nav/NavManager.cs email menus
- Activity attached when sending email
💰 Reckon Invoice (December 2025)
Crash Fix (r9756)
- Sending Reckon invoice on a Sales order when creating a contact and then a invoice crash on creating a invoice, fix this
📅 Scheduler Filtering (December 2025)
Activity Type Filter (r9757)
- Added a Activity Type Filter for the Scheduler.vue
- So users can narrow down the Activity Displayed
- Right delete for Tasks and Activity
📋 Board Popovers (December 2025)
UI Fix (r9758)
- Fix the popover popup on boards
📱 Mobile Upgrade (December 2025)
Framework Updates (r9759, r9760, r9761-r9777)
- Update mobile to Quasar 2 + Vue 3 + Node 22
- Upgrade to Node 20
- Multiple build script fixes for:
- NVM version handling
- Quasar build issues
- ESLint configuration (changed console.log and debugger from "error" to "warn")
- Java 21 upgrade on server
- Gradle daemon issues
- Gradle version upgrades (8.0.2 → 8.5 → 8.13)
- Android Gradle Plugin compatibility
- Missing version properties in build.gradle
📅 January 2026
📱 Mobile App Improvements (January 2026)
Login & Configuration (r9807, r9808, r9810-r9818)
- Fix reckon invoice line view
- App settings now affects options in the main nav without having to refresh the view
- Fix login and other fixes
- Increased retry limit: from 50 (5 seconds) to 150 (15 seconds) to allow more time for slow API calls
- Improved logging: logs every 10 retries to reduce noise, and logs detailed config state when it times out
- Ensured retry starts in mounted: even if config isn't ready, it starts the retry logic
- Fix up logging and other improvements
- Move debug console to appsettings
Date & Time Input (r9819)
- Added new date picker for time like Apple which was called CrmTimeInput.vue does date and time
- Added save loaded for ActivityModalContent.vue and others
Detail View Fixes (r9820)
- Fix dial on the detail views
🎨 Layout Designer (January 2026)
Detail View Layouts (r9821, r9822, r9823, r9824)
- Added DetailViewLayout for Mobile
- This is the CompanyDetailView.vue
- Added DetailViewLayout designer
- Fix the issue when we have web hooks from site.creatacrm.com/api/Postal/All it will handle this
- Added missing item
- Add another missing file
📊 Survey System (January 2026)
Standalone Survey (r9825, r9826)
- Reduce the Survey from 200mb vue js to 1 mb size which we can add to the web Site
- Added survey-entry.js
📱 Android App (January 2026)
Download Support (r9827, r9828)
- Adding Download to Android
- Fixing up the dialing of the phone on the app
🎨 Designer Enhancements (January 2026)
Settings & Tabs (r9829, r9830, r9831, r9832, r9833)
- Added Types and edit settings for Designer.vue
- Added Tabs on Mobile for CompanyDetailView.vue for DetailViewLayout
- Added designer to ContactDetailView.vue on Quasar
- Added database updates for mobile for company and contact detail view
- Added reckon plugin
- Fix download link
📊 Survey Printing (January 2026)
Print Support (r9834)
- Added YYYY-MM-DD mm:ss on StringToDateBlock.cs
- Add Print to Survey to Job company and contact
📅 Date Tracking (January 2026)
Last Email Date (r9835)
- Added LastEmailDate on Contact Company and Opportunities
- Add LastEmailDate property to Company.bo.cs
- Add LastEmailDate property to Contact.bo.cs
- Add LastEmailDate property to Opportunity.bo.cs
- Update Activity OnSaving to set LastEmailDate for Email activities
- Added LastStageChangedDate Field on Opportunities
- ActualWonDate Field - Added to Opportunity.bo.cs with UtcTimeZoneConverter, automatically set in the OnChanged method when Status changes to ClosedWon
- ActualLostDate Field
⚙️ Workflow Blocks (January 2026)
Null Handling (r9836, r9837)
- Add a NullCheckActivity block before your StringToDateActivity
- Set the TheObject input to your date data source
- The activity will output IsNotNull as true or false
- Use an If/Then condition block with the IsNotNull result
- Add date been null in SetMemberValueActivity.cs
📋 Process Management (January 2026)
Process Editor (r9838, r9839)
- Added A new process to ProcessList.vue with delete process
- Added Assign to another Stage in ProcessEdit.vue
💰 Reckon Sync (January 2026)
Invoice Sync Action (r9840)
- Added a Action to Sync a Reckon Invoice and improve or fix invoiceSync for Reckon
📁 Document Management (January 2026)
Image Preview (r9841)
- Added Preview for images for DocumentFolders.vue
🐛 Bug Fixes (January 2026)
CMS Crash Fix (r9843)
- Fixed CMS crash relating to MyobObjectSpaceWatcher registering handlers for ManyToManyAlias collections
- The bug was exposed when SalesOrder.Jobs, Job.SalesOrders, Invoice.Jobs, Job.Invoices ManyToManyAlias properties were accessed
- The fix handles both XPBaseCollection and XPManyToManyAliasList
📊 Collection Enhancements (January 2026)
Nested Properties & Templates (r9844)
- Enhanced Collection and CollectionPill components with nested property support and calculated captions
- Fixed blank pill display issue by using getPropertyValue() for Record objects
- Added support for nested property access using dot notation (e.g., "Item.Name", "Item.QuantityOnHand")
- Implemented template expression support for calculated captions combining multiple fields
- Fixed DevExtreme E1047 error by disabling header filtering for collection-pill columns
- Updated deprecated DxHeaderFilter allowSearch to use search.enabled syntax
- Fixed NullReferenceException in FilterConverter.cs when searching collection columns
- Fixed SQL conversion error when filtering collection columns with template expressions
💬 Popup Comments (January 2026)
New Column Type (r9845)
- Added new "Popup Comments" column type for TableBuilder
- Target: Text/String fields with multiline comment support and timestamp notes
- Features:
- Popup modal editor with CreataCRM brand styling
- Multiline textarea with auto-focus
- "Add Note" button that prepends timestamped entries
- Timestamp format: [DD/MM/YYYY HH:mm:ss] followed by two line feeds
- Configurable fixed column width and maximum height
- Scrollable view with word-wrap support
📅 Timeline Calendar (January 2026)
Company Timeline (r9846)
- ShowTimelineCalendarAction.ts - Action class
- ID: 'show-timeline-calendar:Company'
- Icon: calendar
- Color: #2C86D3
- Requires a single Company record
- ShowTimelineCalendarActionComponent.vue - Vue component that shows UiFabricModal with TimelineCalendar
🐛 Sales Order Fix (January 2026)
Object Reference Error (r9847)
- Ticket 4029 - Edit Sales order - 'Object reference' error
🔍 Polymorphic Filtering (January 2026)
Collection Filter Fix (r9848)
- Fixed polymorphic collection filtering for DevExtreme TableBuilder
- Problem: Filtering on polymorphic collection properties (e.g., MyobItem.Name in ItemSalesOrderLine) was causing InvalidPropertyPathException
- Solution:
- Enhanced polymorphic filter detection to handle AggregateOperand
- Updated all filter detection methods
- Fixed in-memory filtering evaluation to use contains matching (case-insensitive)
- Added comprehensive debug logging
🐛 Job Invoices (January 2026)
Non-clonable Fix (r9849)
- Ticket 4037 - Added nonclonable to Invoices on jobs
💰 Price List (January 2026)
Expression Validation (r9850)
- Price List In update cache swal a warning on bad Expressions
- Added Edit and Save and View on the layout
💰 Reckon Groups (January 2026)
Group Preservation (r9851)
- SalesOrderLines.vue - Fixed PreventGroupModification default value: changed from true to false so groups are editable by default
- Fixed bundle loading: updated search criteria to include bundles even when a price list is active
- Fixed endless spinner: handled empty bundles by creating header/subtotal and properly closing the modal
- ReckonSettings.cs - Added PreserveGroup property (defaults to true)
- SalesOrderConverter.cs & InvoiceConverter.cs - Updated all methods to check both PreventGroupModification AND PreserveGroup
- Fix Reckon XML generation issues and add diagnostic logging
- Fix empty address/company name causing XML parsing errors
- Add XML sanitization for CustomerAdd/Mod
📎 Opportunity Attachments (January 2026)
Attachment Fix (r9852)
- Fixed typo: Changed "linkFieldName": "Opportunties" → "Opportunity"
- Added Attachments collection field to Opportunity recordSpace config
- Added OpportunityAttachment type with fields (Oid, Name, Category) and linked fields (Opportunity, Folder)
- Fixed bug in Documents.vue: Changed :LinkToFieldName="recordType" → :LinkToFieldName="actualLinkField"
- Rewrote created() method to detect if linkFieldName is a collection field and derive PayloadType correctly
📋 Kanban Board (January 2026)
Process Persistence (r9853, r9854)
- Fix: Process saving and selection persistence in JobKanbanBoard
- Save process edits to TaskProcess table for virtual kanban mode
- Added saveProcessesToTaskProcess() and calculateStageDiffs() methods
- Extended Preferences.ts with jobKanbanSelectedProcess for persistence
- Use database Oid as process ID instead of nanoid() for consistency
- Process selection now persists across page reloads
- Drag and drop at the right spot
⚙️ Workflow Blocks (January 2026)
Date Formatting (r9855)
- Add missing WorkflowName property to web config
🔔 Push Notifications (January 2026)
Error Handling (r9856)
- Added Try catch to the postpusherNotifer
📅 February 2026
📱 Mobile Layout Designer (February 2026)
Widget System (r9857, r9858, r9859, r9860, r9861, r9862)
- Mobile Layout Designer: Implement widget-based layout system with grid layout support
- Major Features:
- Mobile layout designer and editor (NavEditor) for configuring mobile menu items
- Widget-based layout rendering system for mobile devices
- CSS Grid layout support using areaTemplate for flexible area positioning
- Mobile layout preview and editing capabilities
- Widget System:
- TableWidget: Full-featured data table with pagination, sorting, filtering, and row click navigation
- ChartWidget: DevExtreme charts (bar, line, pie) with aggregated data support
- BoSearchWidget: Business object search filter with repository-scoped filtering
- EnumFilterWidget: Enum value filter dropdown
- ActionsContainerWidget: Action buttons and dropdown menus
- HeaderWidget: Title display without breadcrumbs
- ButtonWidget: Command buttons with code action support
- ModalWidget: Dialog modals with variable binding
- CardWidget, ListWidget, TextWidget, ImageWidget, HtmlTemplateWidget: Content widgets
- PlaceholderWidget: Fallback for unsupported widget types
- Layout Features:
- areaTemplate grid layout: Define area positions using CSS Grid
- Flexbox area styling: Support for row/column layouts, flexWrap, gap, placeContent, placeItems
- Repository-scoped filtering: Filters applied per repository within layouts
- Edit mode: Toggle to show/hide area headers and item labels for cleaner view
- Navigation:
- Mobile NavEditor: Design and configure mobile menu sections and items
- Custom items: Support for custom menu items linked to mobile layouts
- Layout routing: Dynamic routing to mobile layouts via /Mobile/Layout/{layoutName}
- Fix up Web.config added slack and added new tablebuilder api
- Manage layouts design for mobile
- Mobile shop chart
🛠️ Job & MYOB Integration (February 2026)
Order & Invoice Fixes (r9863, r9864)
- Fix order when creating job items in table on job
- MYOB OS Watcher: On Invoice save set Myob Job from a Job if there's a Job that has a MYOB Job linked
- Fix truncation not matching field size when creating invoice lines to send to MYOB
🛒 Mobile Shopfront (February 2026)
Product Card Templates (r9865, r9866)
- Restore and enhance dynamic product card template loading in mobile shopfront
- Restored dynamic template loading functionality
- Re-implemented loadCardTemplate() method to fetch templates from ClientPageResource named "QuasarProductCardTemplateMobile"
- Added fallback mechanism: if handler returns empty, fetches via API
- Enhanced cache-busting for template loading
- Added dynamic mappings support - parses JSON mappings from ClientPageResource.Mappings field
- Added ItemType badge color helper - Maps ItemType values to Quasar color scheme
- Fixed Vue reactivity warning - Wrapped component definition with markRaw()
- Allows clients to customize product card templates without recompiling code
💰 Sales & Reckon Actions (February 2026)
Authorization Fixes (r9867, r9868)
- Fix missing over rights from reckon for SaleDetailView.vue added actions back in and CompanyDetailView.vue
- Authorization working
⚙️ Workflow Blocks (February 2026)
Date Formatting & URL Blocks (r9869)
- Add workflow block for formatting dates - currently only Iso8601, options can be added later
- Modify GetFromUrl block to allow sending a body (optional), changes to Post if body is added
📦 Warehouse & Stock Management (February 2026)
Stock Locations Popover (r9870)
- Added Stock Locations Popover in Quote Lines
- Added StockLocationsPopover component to QuoteLinesGroup.vue
- Matched the format from SalesOrderLines.vue (single
with template blocks) - Consolidated plugin columns (Myob, Reckon, Xero) into single column with templates
- Added IInventory, ReckonItem, and ReckonItemGroup mappings to QuoteContent.vue
- Warehouse Mapping Fixes:
- Added Warehouse property to FakeQuote object in QuoteContent.vue
- This ensures Quote.Warehouse is available in QuoteLinesGroup.vue for stock locations popover
- Warehouse Locations Loading:
- Added async loadWarehouseLocations() function in OrderContent.vue
- Loads Locations when a different warehouse is selected for fulfilment
- Fixed null reference error in Actions.js when warehouse.Locations is undefined
- Added defensive checks for warehouse.Locations before accessing
- UI Improvements:
- Enhanced warehouse display in PickContent.vue with better styling
- Improved warehouse selection modal in OrderContent.vue with custom header, description, and styled buttons
- Updated stock required modal to use table format instead of list
- Changed warehouse-info background to rgba(200, 228, 250, 0.8) with darker grey text
🛠️ Job Creation (February 2026)
Order to Job Fix (r9871)
- Order to Create Job fix up
📥 File Downloads (February 2026)
Select All Option (r9872)
- Added selected all to download file
💰 Sales Total Editing (February 2026)
Reactive Total Changes (r9873)
- Reactive change of total edit mode will change the fields
📊 CollectionPill Enhancements (February 2026)
HTML Styling & Excel Export (r9874, r9875)
- Enhanced CollectionPill column type with mail merge support, HTML styling, line feed option, and improved Excel export functionality
- Mail Merge Support:
- Supports
` and[FieldName]` formats - Handles nested properties (e.g.,
Item.QuantityOnHand) - Resolves template expressions like
Item.Name - Item.Number - Properly handles numeric values including 0 and boolean values
- Supports
- Line Feed Option:
- Checkbox in Options.vue to display each collection item on a new line
- CSS styling to change flex direction to column when enabled
- HTML Styling:
- Checkbox to enable HTML styling
- HTML editor modal (HtmlFieldEditModal) to edit HTML templates
- Support for `` placeholder
- Conditional expression support
- XSS protection via HTML escaping
- Excel Export Enhancements:
- "Display HTML in Export" checkbox in TableBuilder toolbar
- HTML-to-Excel rich text conversion:
- Converts HTML tags (
<b>,<i>,<u>,<span>, etc.) to Excel formatting - Preserves font colors, background colors, bold, italic, underline
- Applies cell fill (background color) to entire Excel cell
- Supports conditional styling based on field values
- Converts HTML tags (
- Plain text export option (default) that strips HTML tags
- Technical Details:
- Parses HTML using DOM API
- Converts hex colors to Excel ARGB format (FF + RGB)
- Maps HTML tags to ExcelJS properties
- Updated styling: Changed from bright blue (#2C86D3) to lighter blue (#E3F2FD) with darker blue text (#1976D2)
📊 Summary Statistics
By Month
| Month | Commits | Period | Key Focus Areas |
|---|---|---|---|
| October 2025 | ~15 | Oct 17-31 | MYOB Sync, Email, Scheduler, Table Builder |
| November 2025 | ~60 | Nov 1-30 | Price Lists, Surveys, Reckon Integration, Sales |
| December 2025 | ~50 | Dec 1-31 | Webhooks, Timeline, Mobile Upgrade, Warehouse |
| January 2026 | ~60 | Jan 1-31 | Mobile Layouts, Collections, Comments, Kanban |
| February 2026 | ~23 | Feb 1-10 | Mobile Widgets, Shopfront, Workflow Blocks, CollectionPill, Warehouse |
By Category
| Category | Features | Impact |
|---|---|---|
| Mobile App | 40+ | High |
| Sales & Quotes | 35+ | High |
| Reckon Integration | 25+ | High |
| Table Builder | 25+ | High |
| Survey System | 15+ | Medium |
| Workflow Blocks | 12+ | Medium |
| Price Lists | 10+ | Medium |
| Warehouse Management | 8+ | Medium |
| Webhooks | 5+ | Medium |
| Kanban Boards | 5+ | Medium |
By Developer
| Developer | Commits | Percentage |
|---|---|---|
| reece | ~146 | 70% |
| josh | ~62 | 30% |
🎯 Major Milestones
October 2025
- ✅ MYOB invoice sync improvements
- ✅ Scheduler activity modal enhancements
- ✅ Table builder grouping options
- ✅ Reckon ShipDate support
November 2025
- ✅ Supplier dashboard and management
- ✅ Price list detail view with expression editor
- ✅ Survey system with auto-generated table configs
- ✅ Reckon job creation from sales
- ✅ Quote approval system
- ✅ Sales dashboard views
December 2025
- ✅ Webhook distribution service
- ✅ Timeline campaign events
- ✅ Mobile app upgrade to Quasar 2 + Vue 3 + Node 22
- ✅ Warehouse management improvements
- ✅ Security roles for customer restrictions
- ✅ Number template enhancements
January 2026
- ✅ Mobile DetailViewLayout designer
- ✅ Survey standalone version (200MB → 1MB)
- ✅ LastEmailDate tracking on Contacts, Companies, Opportunities
- ✅ Collection nested properties and template expressions
- ✅ Popup Comments column type
- ✅ Polymorphic collection filtering fixes
- ✅ Kanban board process persistence
February 2026
- ✅ Mobile Layout Designer with widget system
- ✅ Mobile shopfront with dynamic product card templates
- ✅ Workflow date formatting blocks
- ✅ Enhanced GetFromUrl block with POST body support
- ✅ Stock locations popover in quote lines
- ✅ Warehouse location loading improvements
- ✅ CollectionPill HTML styling and Excel export enhancements
🚀 Top 10 Features of This Period
- Mobile Layout Designer — Complete widget-based layout system with grid support
- Survey System — Auto-generated table configs, standalone version, print support
- CollectionPill Enhancements — HTML styling, mail merge, Excel export with rich text formatting
- Collection Enhancements — Nested properties, template expressions, calculated captions
- Reckon Integration — Job creation, group handling, invoice sync improvements
- Price List Management — Expression editor, detail view, company/contact actions
- Mobile App Upgrade — Quasar 2, Vue 3, Node 22, Java 21, Gradle 8.13
- Popup Comments Column — Timestamped notes with multiline support
- Warehouse Management — Stock locations popover, location loading, flat items list
- Webhook Distribution — Service for distributing webhooks with error handling
💡 Innovation Highlights
Mobile Experience
- Widget-based layout system for complete customization
- Dynamic product card templates for shopfront
- DetailViewLayout designer for mobile views
- Standalone survey component (99.5% size reduction)
Data Management
- Nested property access in collections
- Template expressions for calculated captions
- CollectionPill HTML styling with conditional expressions
- HTML-to-Excel rich text conversion
- Polymorphic collection filtering
- LastEmailDate tracking across entities
Integration
- Reckon: Job creation, group preservation, invoice sync
- MYOB: Invoice sync improvements, job linking
- Webhooks: Distribution service with error handling
User Experience
- Popup Comments with timestamped notes
- Expression editor for calculated fields
- Activity type filtering in scheduler
- Timeline calendar for companies
Workflow Automation
- Date formatting blocks (ISO8601)
- Enhanced GetFromUrl with POST body support
- NullCheckActivity for date handling
- UnixTimestampToDateActivity block
🔧 Technical Improvements
Architecture
- Mobile widget system with 15+ widget types
- Repository-scoped filtering
- CSS Grid layout support
- Dynamic template compilation
Code Quality
- Fixed CMS crash with ManyToManyAlias handling
- Polymorphic filter detection improvements
- Error handling in push notifications
- Comprehensive debug logging
Performance
- Survey size reduction (200MB → 1MB)
- Cache-busting for dynamic templates
- Retry logic improvements (5s → 15s)
- Gradle and build optimizations
Security
- Security roles for customer restrictions
- Authorization fixes for Reckon actions
- Webhook error handling
📖 Documentation
ANDROID_STUDIO_UPGRADE_GUIDE.mdDEVELOPMENT_NOTES.md(updated)- Mobile DetailViewLayout documentation
- Collection properties documentation
- Widget system architecture docs
Generated from SVN log: r9667 - r9875 (208 commits from October 17, 2025 to February 10, 2026)