Carspace User Dashboard WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA
New carspace-user-dashboard -React
★ 0stars
8release downloads
v5.11.0latest · 5mo ago
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/samsiani/carspace-user-dashboard/releases/download/v5.11.0/carspace-dashboard-v5.11.0.zipUpdates itself. It ships its own updater (Plugin Update Checker), so new versions appear under Dashboard → Updates.
Car dealer CRM dashboard — React SPA with WordPress REST API backend.
Description
Replaces the WooCommerce My Account dashboard with a self-contained React single-page app. Lets dealers see their assigned cars, invoices, port-images, support tickets, and notifications. Admins manage transport prices, auction fees, title codes, and user tiers from the same UI.
- React SPA mounted via the
[carspace_app]shortcode - REST API namespace
carspace/v1powers every screen - Auto-updates from GitHub Releases (no .org plugin directory needed)
Changelog
5.11.0
- Persist
dealer_fee_paidandcommission_paidper invoice. The form had inputs for "how much of the dealer fee / commission has been paid" since v5.x, but the backend silently dropped them on save andhydrate_invoicereturned0hardcoded — same data-loss pattern as v5.10.0's items / customer fields. Adds DB v2.1: two newDECIMAL(12,2) DEFAULT 0columns onwp_carspace_invoices, idempotent migration, and full create / update / hydrate wiring. - Redesign the print invoice (
InvoicePrint) to match the dashboard's visual language — Geist + Noto Sans Georgian font stack, restrained slate typography, the platform's blue accent on the vehicle row icon, lighter card backgrounds with the same 10 px radius the dashboard uses. Adds@page A4margins, hides empty sections (no vehicle row when there's no car, no notes block when the field is empty). The previous design used a heavy dark-gray brand mark andInter— both replaced. - Bundle Noto Sans Georgian (variable) so Mkhedruli characters render correctly in the dashboard and the printed invoice without any external CDN.
5.10.0
- Fix invoice round-trip: items / customer email / customer phone / customer company now persist correctly across save → reload → edit. The form's data shape was
{ description, quantity, unit_price, total, paid }per item, but the DB schema only hadmake,amountetc., so on save the API stuffeddescriptionintomakeandtotalintoamount, droppingquantityandunit_priceentirely. On read, those fields came back as the legacy keys, so the edit form sawdescription=undefined, quantity=undefined, unit_price=undefinedand rendered empty. - DB v2.0: add
description VARCHAR(255),quantity DECIMAL(10,2),unit_price DECIMAL(12,2)towp_carspace_invoice_items, andcustomer_email VARCHAR(255)towp_carspace_invoices. Migration is idempotent — INFORMATION_SCHEMA-checked; existing rows keep theirmake/amountvalues, andhydrate_invoicefalls back to those when the new columns are NULL so legacy invoices read coherently. update_invoice_endpointnow also acceptscustomer_phone(writescustomer_personal_id),customer_email, andcustomer_company_name— they were silently dropped before.hydrate_invoicenow returnscustomer_email,customer_phone, and per-itemdescription,quantity,unit_price,total(in addition to the legacymake,amountkeys for any caller still reading those).
5.9.2
- Dashboard chart:
<ResponsiveContainer width="100%" height="100%">would log "width(-1) and height(-1) of chart should be greater than 0" on first render because parent height resolution from a<CardContent>wasn't immediate. Set the chart's height to a fixed220(matches the wrapperh-[220px]), so recharts no longer needs to ask the parent at all. Cosmetic console warning gone, charts render the same. - Removed redundant
await import('@/stores/car-store')inlib/api.ts— the store was statically imported by 5 other files anyway, so the dynamic import was a no-op that produced a Rollup warning on every build.
5.9.1
- Fix blank dashboard on v5.9.0 caused by an
Uncaught TypeError: O is not a functionin the recharts chunk. The previous Vite manualChunks config splitrechartsandd3-*into one bucket while their bundled-d3 helpervictory-vendorfell into the catch-allvendorchunk — that chunk boundary in the middle of recharts' cyclical d3 imports broke runtime evaluation. Drops the manualChunks catch-all and lets Rollup attach lazy-route-only deps (recharts → DashboardPage, react-day-picker → date filters, @tanstack/react-table → grids, react-hook-form/zod → forms) to whichever lazy chunk imports them. First paint goes from ~265 KB gz to ~225 KB gz on non-dashboard routes. - No PHP / DB changes.
5.9.0
- React SPA bundle split. The single 1.6 MB main bundle is gone — first paint now downloads ~265 KB gzipped (main + react-vendor + vendor) instead of ~468 KB. Each route is its own chunk loaded on demand:
recharts(~75 KB gz) only downloads when the dashboard opensreact-day-picker+date-fns(~19 KB gz) only when a date filter mounts@tanstack/react-table(~14 KB gz) only on Cars / Invoices gridsreact-hook-form+zod(~28 KB gz) only on form pages
- Vendor chunks are content-hashed and stable between releases — a code-only update means the browser re-downloads
main(~38 KB gz) and the changed page chunks, not the entire app. - React source is now version-controlled at github.com/Samsiani/carspace-dashboard-source.
5.8.0
- DB v1.9: add
vin_lowerSTORED generated column onwp_carspace_invoice_itemsplus a new compound index(vin_lower, invoice_id). Every VIN lookup (inget_by_vin,get_buyer_by_vin,batch_vin_lookup, andget_dashboard_stats) was rewritten to compare againstvin_lowerdirectly, removing theLOWER(it.vin)function call that previously defeated the index. The oldidx_vin_invoice (vin, invoice_id)is dropped — it's no longer referenced by any query and was costing write overhead on every invoice item insert. - No data change: the column is computed from the existing
vincolumn at write time by MariaDB itself, so existing rows are populated automatically.
5.7.1
- Add this readme.txt so WordPress shows the plugin description and changelog on the Plugins page and in update notifications.
5.7.0
- Auto-updates: ship plugin-update-checker so future releases on GitHub appear automatically on update-core.php.
- DB v1.8: drop redundant indexes (
idx_vinon items,idx_user_statuson notifications) — both were strict prefixes of compound indexes added later, so they cost write overhead with zero read benefit. next_invoice_number()now flushes WP's option cache after the raw atomic UPDATE so callers don't get the pre-increment value.- SPA shell emits
<link rel="modulepreload">for every dynamically-imported chunk in the Vite manifest. - Removed duplicate
global $wpdb;inget_dashboard_stats().
5.6.0
- Vite manifest cached via
wp_cachewith a version-stamped group; saves onefile_get_contents+json_decodeper SPA page hit. Cache-Control: private, max-age=300on/transport-prices/locations,/auction-fees,/auction-fees/fixed,/title-codes— admin-managed reference data that rarely changes.Carspace_Notification::count_unread()cached per-user (5 min TTL) with precise bust oncreate/mark_read/mark_all_read/delete/bulk_delete. Both the admin-bar badge and/notifications/unread-countREST endpoint benefit.get_carsWP_Queryswitched tofields=idsand skips implicit meta/term cache priming, since the explicit batch primes that follow already do that work.
5.5.0
- Versioned-key transient cache for
/dashboard/statsand/userswithcarspace_bust_data_cache()busting on invoice mutations,assigned_user/ pricing meta changes, and user create/update/delete. - Removed three
wp_ajax_*handlers inhelpers/notifications.phpthat duplicated REST endpoints. - Pruned ~340 KB of legacy code:
deact-assets/, unusedendpoints/*,endpoints/car-invoices/,helpers/render-table.php+table-parts/,helpers/dashboard-cards.php,helpers/ajax-handlers.php.
5.4.0
- Initial public release of the React SPA rewrite (production version on artcase.ge).
Releases
10 releases. Each count is every asset in that release; expand a row for the breakdown.
Tag
Published
Assets
Downloads