Docked chat, advanced Sales Log columns, and ex-GST F&I reporting
Team chat now behaves more like a live dock, Sales Log views have deeper column and export controls, and F&I gross profit is labelled and calculated on the same ex-GST basis as the rest of reporting.
Changes & improvements
This release tightens the everyday operating surfaces around the bottom dock, team chat, calculator, Sales Log custom views, and dealership gross-profit reporting.
The main theme is control: faster access to the right conversation, clearer control over which Sales Log columns display or export, and more explicit ex-GST handling for F&I profit wherever the numbers appear.
Team chat is easier to reach from anywhere
The bottom-right chat control now behaves like a small chat dock. Recent direct messages and channels can appear as conversation avatars beside the main Chat button, so users can jump straight into a thread without opening the full list first.
Unread chat counts now update the dock avatars as new messages arrive, and opening a specific avatar launches the floating chat panel directly into that conversation.
The chat panel itself has been refreshed with search, clearer channel/direct-message grouping, channel privacy/member context, better skeleton loading states, and more polished empty states.
Active chat threads now listen for live message inserts and edits, reconcile optimistic outgoing messages, refresh conversation previews, and mark conversations read from the current panel.
Support remains pinned separately for managers and owners so internal team chat does not bury the support entry point.
The bottom dock and utility controls feel more cohesive
The primary bottom navigation, new-deal button, Companion button, utility controls, chat dock, and popovers now share the same motion language and tighter icon sizing.
The calculator moved into the bottom-left utility cluster beside Help & info, while chat owns the bottom-right corner. This keeps the app's persistent tools separated by job: reference and calculator on the left, conversation on the right.
Floating panels now animate in and out consistently, and the calculator's pop-out starts near its new launcher instead of the old bottom-right position.
The mobile bottom nav can scroll horizontally when space is tight, reducing the chance that dock controls collide on narrow screens.
Sales Log views have advanced column controls
Sales Log now includes an Advanced column options dialog inside Table controls. It gives users one place to search columns, reorder displayed columns, show or hide columns, pin left or right, adjust widths, choose text wrapping, and set per-column alignment.
Saved table views can now remember whether a column is included in current-view exports independently from whether it is displayed on screen. That means a manager can keep a working column visible while excluding it from an exported file, or include a useful export column without making the active grid noisy.
The export path now respects those current-view export settings when exporting visible columns.
The advanced dialog also includes quick access to the active table view, fit-widths, and restore-default controls so larger Sales Log setups can be managed without bouncing between separate menus.
Gross profit and F&I reporting are aligned ex-GST
Itemised F&I income and cost lines are now stripped to ex-GST profit using the dealership's GST settings before they flow into the dashboard performance card, F&I dashboard, GP pivot, report pivot, daily summary, projected GP report, header target chip, and deal finance totals.
Imported total_fni_profit fallbacks are still treated as authoritative imported GP figures when there are no itemised finance lines, matching the same override/pinned-profit approach used elsewhere in reporting.
F&I labels now say ex GST in the Finance dashboard, report schema, header chip, import mapping, and deal finance totals so users can see which basis the number is using.
Missing GST settings now fall back to the established dealership default of 15% inclusive, which keeps older dealership rows on the same product rule as native deal calculations.
Deal math and promotions are clearer
The core GP formula now treats customer promotion value as already reflected in the customer sale price, preventing that discount from being added back into gross profit.
Promotion dealer cost now keeps the real net effect of dealer cost minus support, including cases where support exceeds cost and increases GP.
Deal finance totals now show promotion dealer cost more directly, and the form preview uses the same ex-GST finance-profit helper as the reporting surfaces.
Smaller workflow polish
Pipeline cards now wrap their salesperson, finance-status, and progress pills more safely so longer labels do not crush the card footer.
GST settings copy no longer hard-codes New Zealand in the UI, while still using the dealership's configured rate for calculations.
Import mapping now labels gross profit, vehicle GP, and F&I profit as ex-GST so imported SalesLogs are clearer at mapping time.
The keyboard shortcuts modal now lists Cmd/Ctrl+K for global search.
A read-only GP reconciliation script was added under scripts/ops for comparing stored GP against the current ledger model when auditing dealership numbers.