RWM 2026 · NEC Birmingham, 16–17 SeptNinety seconds to beat our planner.Play the game
Showing for

Release Notes

See what's new across the AiOne product suite. We ship updates daily.

4071Updates
226Days of History
7Products
1292New Features
Wednesday, 17 June 20262026-06-17
AIOne Mobile22 updates
  • Fixinvalidate schedule/route cache after offline workflow resync (55d4868a)2068802
  • Fixhold the lock overlay through a TERMINATION too (abc3ce50) (#142)047fb4f
  • Fixhold a "submitting" overlay after a gated SOD until the lock lands (abc3ce50) (#141)d64bbf3
  • Fixterminated SOD → red banner + Redo button after dispatcher clears it (abc3ce50) (#140)7088890
  • Fixterminate-reopen SOD gating + brand theming on SOD/workflow (abc3ce50) (#139)b57beb3
  • Fixvertically centre stop-detail action button labels (abc3ce50) (#138)48d7fd5
  • Fixfast-poll for ANY server-cleared route lock, not just SOD approval (abc3ce50) (#137)de05971
  • FixSOD per-day gating + faster approval poll + resume on last page (abc3ce50) (#136)c8faa60
  • Fixpre-fill the redo SOD form from the rejected submission (abc3ce50) (#135)6147fd2
  • Fixgive the driver a Redo button when Start of Day is rejected (abc3ce50) (#134)55e5ffc
  • Fixlock the whole Route screen when route is locked (abc3ce50) (#133)c280b21
  • Fixper-segment workflow — single header, full height, return to Route (#132)17d9acb
  • Fixshow SOD on the Schedule tab for no-pickup routes (ticket abc3ce50) (#131)4040e71
  • Fixgate route until SOD is APPROVED, not just submitted (ticket abc3ce50) (#130)77f9fee
  • Fixenforce mandatory SOD lock on Route tab + stop details (ticket abc3ce50) (#129)1c1b3ed
  • Fixcode-login form full height (ticket 73a6a304) (#128)dcfd658
  • Fixlandscape consistency pass (workflow / exception / calendar / stop buttons) (#127)9811163
  • Fixstop number excludes pickups in workflow modal (c53d22cc) (#126)6203cd0
  • Fixdate-picker highlights any browsed month + month header wrap (#125)8616ddc
  • Featureschedule date-picker day-highlights + month status breakdown (#124)b9808cc
  • Fixlandscape parity — modal orientation + notch insets + group action bar (#123)b472c31
  • Fixkeep date navigation on the no-route screen (landscape) (#122)1bf876e
FlowSmart1 update
  • Fixscope GET /for-entity by productCode (abc3ce50)f44217d
SolveSmart18 updates
  • FixControl Room must show the LATEST SOD/EOD submission, not the earliest (abc3ce50)2d8251a
  • Fixexpose 'terminated' as a SOD redo state (abc3ce50) (#422)2bd8027
  • Fixterminated SOD must re-require after dispatcher clears the lock (abc3ce50) (#421)0ccee57
  • UIshrink SOD/EOD awaiting-approval "!" badge (c53d22cc follow-up) (#420)ec4c8ca
  • Featureshow driver's fail/skip reason in the route-lock banner (c53d22cc follow-up) (#419)d6bf257
  • Improvementslim route-lock notice into one thin banner (c53d22cc follow-up) (#418)054b421
  • Featureapprove SOD/EOD submissions in-place + "!" awaiting-approval chip (c53d22cc follow-up) (#417)484f3b6
  • Fixsurface rejected-SOD answers for redo pre-fill + drop SOD-DIAG log (abc3ce50) (#416)a3041bc
  • Fixactually resolve @aione/workflow-components to 1.22.0 (c53d22cc) (#415)56659f8
  • Feature/tickets command — list a user's open tickets (#414)0e9d4cb
  • Updatebump @aione/workflow-components to ^1.22.0 (c53d22cc) (#413)3305900
  • Fix/ticket wizard + suite-wide binding for FixSmart ticketing (#411)893dfb9
  • Updatetemp [SOD-DIAG] log to pinpoint approval-gate failure on YPO (abc3ce50) (#412)03b3e4e
  • Fixfailed/skip lock + EOD-skipped messages use drop-off number (c53d22cc) (#410)d134118
  • Fixenforce SOD approval lock after loading moves route to in_progress (abc3ce50) (#409)8c52a46
  • Fixmake failed/skipped ack banner truly global (c53d22cc) (#408)e1142a0
  • Fixposition transit-rule breaks (lunch) by time, not the solver's fromStopId (#407)68b8a2d
  • Fixsuppress SOD loading-leg ops "stop completed" emails (2a341974) (#406)a5a6f8f
Tuesday, 16 June 20262026-06-16
AIOne Mobile12 updates
  • Fixlandscape modal notch insets, compact floating workflow footer, scroll-to-error (#121)24d71da
  • Fixstay on Stop Details through status flow + landscape reason/picker modals (#120)0b2e871
  • Fixcompact landscape action bar + keep workflow in landscape (#119)b1d96da
  • Fixapply left/right safe-area insets to all screens for landscape (#118)81f2a96
  • Fixlandscape layout + Route-tab back behaviour for stop details & workflows (#117)2fe80a8
  • Featuredismissible EOD modal (ae47b877 ask 2) (#116)7cb4369
  • Fixper-trip delivery unlock for multi-trip routes (multi-trip load-gate) (#115)00cc02d
  • Fixseed vehicle specs on dispatch load, not just the route map (51d60338) (#114)2fcd130
  • Fixseed vehicle specs in Settings, not only the route screen (51d60338)c5781e4
  • Featurelet drivers dismiss the Start-of-Day modal to browse first (a4b17c2e) (#112)962483f
  • Fixsuppress customer emails for SOD pickup-loading completions (2a341974)46343d7
  • Featuredriver "Update delivery location" on the stop screen (548c42f8)1eeb998
SolveSmart38 updates
  • Featureglobal failed/skipped lock visibility + pickup-excluded stop number (c53d22cc) (#405)0365906
  • Featureper-rule "Rules Applied" breakdown for Job Rule Templates (#404)aec7ce0
  • Fixapply distance-band Job Rules to nearest plan depot (#402)7bb49b0
  • Featurerelocate Hard Arrival into timing fields, remove Night Shift & Tip On Site toggles (ticket 74bb15d2) (#403)a783817
  • Featuremulti-select depots on Capacity View (#401)2f61589
  • FeatureJob Rule Templates — rules-only templates for captured jobs (#400)35b6fed
  • Featureadd default job shape to job type (ticket f6593a85) (#399)7aa7505
  • FixCapacity depot dropdown sizes to content + hover titles (9b42893a) (#398)bf0ce69
  • Fixremember newly-typed job addresses as CustomerSites (dd75151e) (#396)82ed44f
  • FeatureSystem Jobs table fills available height in step 2 (#397)d439c18
  • Featuresurface EOD early-end reason in the route debrief (ae47b877 ask 3a) (#395)b8f1715
  • Fixlift auto-unlink notification above fullscreen overlay (#394)97b645c
  • Fixexpose blockEodWhileSkipped in dispatch workflowConfig (ae47b877 ask 1) (#392)66e03ac
  • FeatureCapacity View - loaded-window toggle + default to All depots (#393)13fa472
  • Fixroute debrief actual times in UK local not UTC (BST -1h, follow-up 6eede9b2) (#391)759aa2a
  • Fixmove "jobs auto-unlinked" toast out of Route Analysis header (#390)64a41e7
  • Fixguard Truck Dimensions inputs against mm-entered-as-cm (51d60338) (#388)a76d190
  • UIwiden route-stats vehicle pill for "reg · driver" (83acc541)05d63f4
  • Fixrequire-loaded gate must be per-trip, not whole-route (multi-trip) (#387)10ccf4e
  • Fixdelivery window read in local time, not UTC (BST -1h bug, 6eede9b2) (#386)029dcaf
  • FixSOD start-gate must not fire on pickup/loading completion (c2c40c32) (#385)75ea123
  • Fixfail over to RouteOne when Icepack solve hits an infra error (502/timeout) (#373)f996a7f
  • Featureone-click Remove driver button on the driver card (#383)6a39389
  • Featureshow linked driver name in Route Analysis map + stats views (83acc541)c5c45af
  • Fixrestore multi-trip route lines + add-drop connectors without phantom diagonals (156f4ba0 / b0f0b6d7) (#368)2db52fe
  • FixinterStop time = pure drive, not depart->arrive gap (964cab17) (#381)0e6ffd2
  • FixHard Arrival pins job via x5 drop penalty to RouteOne (78376b92) (#382)29a0983
  • Fixmandatory-SOD lock must not deadlock the dispatch display (c2c40c32) (#380)64d8494
  • Fixactually remove driver when Change Driver selection is cleared (#379)b4f02bb
  • Featureserver-enforce mandatory SOD before route start (a4b17c2e follow-up) (#378)ae1f36f
  • FixSOD loading must not email customers per pickup leg (2a341974)32a8227
  • FixSOD/route lock must gate ALL stop actions, not just arrive/start (a4b17c2e) (#376)2c9b28f
  • Fixgate Scenario Settings to admin/manager + fix domain-wipe (27553f02) (#374)2fcde20
  • Fixjob status no longer stuck "Scheduled" when visits were rescheduled (ticket d2c6bcb3)ad70957
  • Improvementbaseline body-FK audit for location-update controller + test7f4db9c
  • Featurecustomer delivery-location update + approval workflow (548c42f8)d169577
  • Fixmatch linked driver by vehicle id, not just registration (#371)1a94e6f
  • Featureblock impossible delivery windows before solve (#370)a439694
Monday, 15 June 20262026-06-15
AIOne Mobile5 updates
  • FeatureSA vehicle licence-disc scanner field (vehicle_disc) [0f935110] (#109)8e77362
  • Featuresurface EOD-while-skipped / route-lock 409 messages in app (#108)0a1ed0b
  • Featuredriver "Request reschedule" affordance [f1e453d0] (#107)1c09b79
  • Featureapply axle load to HERE truck profile (native) — 51d60338 part 3 (#106)32109da
  • Fixseed HERE truck profile from dispatch vehicle specs (51d60338) (#105)74f22ec
SolveSmart15 updates
  • Featurecollect-only zones — enter to collect, avoid for transit (#369)1d6e857
  • FixRevert "fix(ss): correct route lines + breaks on multi-trip / edited routes (#358)" (#367)4031907
  • Featureshow linked driver name next to vehicle on Route Analysis (83acc541) (#366)40d71e9
  • Featureadd "All time" range option to exceptions filter (46dfcd2b) (#365)378cf49
  • Featurefailed/skipped-stop ack lock + EOD-while-skipped gate (ac38755f, 7fdad76a) — backend+settings (#364)673874b
  • Featuredriver route date-change requests — backend + Control Room (org-gated) [f1e453d0] (#363)8490eba
  • Fixinclude vehicle specs in dispatch payload for app HERE profile (#362)771b2a5
  • Fixadd Clear Local Cache link to resolve cached-session login failures (#361)0a13830
  • Fixcorrect route lines + breaks on multi-trip / edited routes (#358)9968421
  • Fixwrap Jobs-tab status icons in Tooltip+Button (copy the ⓘ construct) (#359)2bc0463
  • Fixenforce SOD approval lock on route start, not just display (a4b17c2e) (#360)7c3246b
  • Fixuse native title for Jobs-tab status-icon hover hints (#357)a4de7c1
  • Fixrole-aware landing + MS route guard (68d16ffd) (#355)6281c7f
  • Fixrender Jobs-tab icon tooltips in document.body so they aren't clipped (#356)9889f51
  • Featureshow full address on job card + explain Jobs-tab icons (#354)e756449
Saturday, 13 June 20262026-06-13
SolveSmart5 updates
  • Fixmove worker-result callback off /api/scenarios (blanket JWT gate) (#353)5be1b22
  • Fixsocket_timeout > BLPOP timeout (redis-py 8.x spurious TimeoutError) (#352)f49484f
  • Fixproduct-aware AIOne sender + remove deprecated M365 fallbacks (#351)6577b28
  • FeatureRedis queue + worker pool for horizontal solve scale (7c6e41b8) [v1, flag-gated] (#350)82656c2
  • Featuredismissible viewport advisory for cramped dense views (4bd699b5) (#349)86372dc
Friday, 12 June 20262026-06-12
AIOne Mobile18 updates
  • Fixstop double-counting storage total (e4bd7559) (#104)6d7ea87
  • Fixdistinguish HERE component packs + honest storage total (e4bd7559) (#103)09b6427
  • Fixshow region names + total storage in the installed list (e4bd7559) (#102)438a7a7
  • Fixshow installed regions + treat alreadyInstalled as success (e4bd7559) (#101)0a50da8
  • Fixcreate the event emitter lazily so pre-init listeners survive (e4bd7559) (#100)65447ab
  • Fixlive-fill calc operands resolve filled values (c6f2e4e6) (#99)4112b48
  • Fixinitialise HERE SDK on the Map Management screen (e4bd7559) (#98)3c48f13
  • Fixlift Skip/Report/Start-Work sheets above the keyboard (c996142e) (#97)8a5cbd2
  • Fixbind iOS event emitter to HereEventEmitter so download/navigation events deliver (e4bd7559) (#95)95f5c27
  • Fixrebuild MapDownloader before download + on-screen diagnostics (e4bd7559) (#96)a6245ef
  • Updatebump version to 1.7.16 (#94)6be63bc
  • Fixpad OptionPickerSheet by the real safe-area inset (a734913c) (#92)a707464
  • Fixmodular headers for AppCheckCore's Google pods (unblock build) (#91)1783637
  • Featurehyperlink field — display-only tappable link (250d15dd) (#90)0e22b6c
  • Fixretain HERE download listener so progress fires (+ valid region) (#89)3aaaadd
  • Featuredropdown + searchable sheet for select/multiselect fields (a734913c) (#88)bec41b7
  • Featuresystem-data in rules/calcs, lookup rule action, step visibility (abde063d, f30fe3ee, 318b91d9) (#87)6e298ab
  • Fixinitialise HERE SDK before downloading from Settings (#86)6cc4e7d
FlowSmart5 updates
  • Fixregister download-all before the :attachmentId routes (tickets e7652c5c, 27625cd0) (#69)9c42125
  • FeatureMOT History API as vehicle-lookup vendor fallback (0f935110) (#68)e0a3176
  • Featurehyperlink field — non-input validation skip + PDF link line (250d15dd) (#67)0c9be15
  • Featurecomplete-terminated endpoint, lookup rule stamping, system-data calc operands, step visibility (#65)aaa4038
  • Fixreject separator chars in completion-copy-email recipient (#64)1303b73
SolveSmart19 updates
  • Featurecustom workflow statuses — settings CRUD + Workflows tab (ticket ee3f4771) (#348)de5c29c
  • Featureorg-level default for same-location service time adjustment (27553f02) (#347)93a05c9
  • Fixper-trip reverse + trip swap on multi-trip routes (FixSmart 5945d469) (#346)1216a92
  • Fixorder unpacked bundle members by their own time windows (ticket c3b772a5) (#345)85c4648
  • Fixrescue unplanned jobs on idle vehicles after district merge (a9f3826f) (#344)2b55bed
  • Featurewire ModelSmart visit lifecycle into WhatsApp customer notifications (157ab101) (#343)8a95b7c
  • Featuretelematics device layer + speeding/geofence alerts on Fleet tab (b65031b6) (#342)3fe7fc2
  • Fixcodify VITE_ORI_API_URL in prod compose (drift fix) (#341)4b45308
  • Updatedrop vestigial prod-aione route-one service from compose (22ce13b6) (#235)86eede7
  • Featurelegacy SW cleanup at boot + 'new version' reload prompt on /worker (9053e9cf) (#338)a02f46f
  • FixEdit User modal name changes were silently ignored for existing users (1c454e8d follow-up) (#340)a348bc3
  • Updatebump @aione/workflow-components to 1.20.0 — hyperlink field (250d15dd) (#339)ccddefc
  • Feature'Last stop completed' driver event alert (8f9b7ba0) (#337)6d7b61d
  • FeatureSOD approval gates route unlock; terminated-SOD complete override (a4b17c2e) (#336)99d673d
  • Fixforward ?token= auth on download-all so photo ZIP works (e7652c5c) (#332)4ae414e
  • Updatebump @aione/workflow-components to 1.18.7 — Submitted date filter (162cf156) (#335)8819e90
  • Fixlasso-select yellow ring lost CSS specificity war on DOM markers (ticket e514fbe2) (#334)a157381
  • Featureper-depot handling time, replacing hidden hardcoded 10-min seed (3a16a62a) (#333)d7d1b1e
  • Fixshow yellow selection ring on lasso-select when clustering is on (#331)6f28902
Wednesday, 10 June 20262026-06-10
AIOne Mobile5 updates
  • Fixkeep StopReasonModal usable when the keyboard is up (c996142e) (#85)5e59daf
  • Featurerender question reference images in the mobile form (#84)f651837
  • Featurelock the day read-only after End-of-Day is submitted (#83)e338088
  • Fixpreserve answers when reopening a rejected workflow (#82)7d239e5
  • FixStopActionSheet caps + scrolls — bottom actions reachable (f856c1c9) (#81)70ee83e
FlowSmart1 update
  • Featuresurface reference image attachments on /preview (#63)7f2fdb8
SolveSmart13 updates
  • Updatebump @aione/workflow-components 1.18.5 -> 1.18.6 (frontend) (#330)27adf16
  • Fixrender imported pre-planned loads on the solve map (91c0ca89) (#329)cedfb50
  • Featureshow question reference images in web workflow execution (#328)c8880cc
  • Featureimport resources on the Resources tab (594f75f6) (#327)9245aa4
  • Fixclose the deferred IDOR follow-ups (staged uploads, MS eval cache, MS workflow proxy) (#326)c657ce2
  • Fixtransition route to completed on EOD so Clear Dispatch works (#325)1d7d4e2
  • Docsrecord the 2026-06-10 multi-tenant IDOR sweep (PR #323) + deferred items (#324)e8164f7
  • Fixclose cross-tenant IDOR / body-FK gaps in SS controllers (#323)629deb9
  • Fixhonour requiredSkillsAny vehicle-skill gate (07726b7d) (#322)8628209
  • Fixroute depot line, yellow multi-select highlight, confirm-on-close for AddJobModal (#320)2a64b51
  • Featureadd voice transcription fallback to SS/MS Ori client (#319)7f522bd
  • Featureadd "Ask Ori" re-summon item to SS/MS user menu (#318)d6c3242
  • Updatebump aione-ai-persona 0.1.13 -> 0.1.17 (#317)cefa1ad
Tuesday, 9 June 20262026-06-09
AIOne Mobile7 updates
  • Removedremove dead per-product message APIs (b17fd3bd decommission) (#80)8511623
  • FeatureMapSmart + ModelSmart driver messaging in the field app (b17fd3bd) (#77)e23ba60
  • Fixstop action sheet — bottom options clear the home indicator (f856c1c9) (#79)9bf7d36
  • Fixhint when a calculated field is awaiting inputs (c6f2e4e6) (#78)089f5e8
  • Fixkeep session on transient refresh failures (stop auth-restart logouts) (#76)f340004
  • Updatebump version to 1.7.14f13f117
  • Featureadd tsc --noEmit gate + clear accumulated type debt (a0434cb5) (#75)01f1e59
SolveSmart33 updates
  • Fixwiden route details panel to 28%/560px (#316)0694ddb
  • Fixdark text for Customer ID tag (teal-on-teal was low contrast) (#315)b09669b
  • Featureroster-sync participants on Control Room load (SS + MS) (#314)b1a2524
  • Fixtighten job-card columns + drop "ID:" label (#313)9909145
  • Fixtable-like fixed columns on the job cards + smaller ID text (#312)75c1d3b
  • Fixcharge depot loading time per trip, not at customers (88812969) (#311)68d4614
  • Updatedrop driver_messages table — history migrated to aione-messaging (#310)06535d4
  • Fixdetails panel fills its container (drop the 400px cap) (#309)f48d05d
  • Fixlet job-card customer names use the widened panel width (#308)b5d9304
  • Fixwiden route-analysis details panel + reclaim card right margin (#306)b8baae5
  • Updatedecommission dormant SS driver-message backend (b17fd3bd) (#307)e80545f
  • Fixdrive the ModelSmart Messages list from the resource roster (b17fd3bd) (#305)9910ebe
  • Featureoffice↔field-worker messaging — backend (b17fd3bd, phase 1) (#301)6ab28c8
  • Fixcustomer id from model, search→dropoff, arrival in popup (c7231e8f, 018f313c) (#304)b096a61
  • Featureimport individual setup tabs (594f75f6) (#303)24c2c0e
  • Featurealso persist unplanned clustering + proximity toggles (dae7c1e8) (#302)df236d9
  • Fixclear a wrongly-dispatched day with typed confirmation (25dbd522) (#300)2cc90c3
  • Featureremember the 'show unplanned markers' toggle (dae7c1e8) (#299)9ea2c7d
  • Fixdefault absent vehicleRelations type to INCLUSIVE (07726b7d) (#297)dff6d70
  • Featureshow Customer ID on the route map popup + details panel (c7231e8f) (#296)f56b95a
  • Featureselecting a searched job also shows its route on the map (018f313c) (#295)7679ca9
  • UIrebrand: user-visible "AI" → "Ori" in SolveSmart/ModelSmart UI (#294)af9267e
  • Featurequantity per rate component on job creation (97d710f8) (#293)053fe80
  • Fixbump @aione/workflow-components 1.18.2 -> 1.18.5 (b9cafbdd builder fix) (#292)fdcac79
  • Fixpass issuing admin's email so "Issued by" is correct (#291)9df4363
  • Featureself-heal un-placed stops on imported plans (e896aa38) (#290)95aefe8
  • Featureweekday scheduling for road restrictions (9267b59d) (#289)0a11a87
  • Fixrender imported pre-planned loads on the map (91c0ca89) (#287)9cdc381
  • Featurejob/visit search in the ModelSmart map search boxes (018f313c) (#288)7d1aca0
  • Featuresearch jobs/customers in the route map search box (018f313c) (#286)be4a7a9
  • Fixper-trip capacity uses the trip's own load, not absolute onboard (07a72e45) (#285)047fc23
  • Fixcode-login fallback token carries products.solvesmart.resourceId (3ed436d7) (#284)b4022c1
  • Fixassigning a workflow to a job type no longer unlinks it from others (a6507ab2) (#283)23efcaa
Monday, 8 June 20262026-06-08
SolveSmart2 updates
  • Featurechoose which rate components apply to a job (6a49e302) (#282)be7127e
  • Fixconditional OVERRIDE rule with multiple skill actions keeps all, not just the last (a97bd3e8) (#281)49fb45e
Friday, 5 June 20262026-06-05
AIOne Mobile5 updates
  • Featureshow distinct schedules on the driver schedule screen (f8bae508) (#74)157f2d5
  • Fixcode-login fetches SS/MS profile, not just MapSmart (no-account bug) (#73)6e8b0e2
  • FixMapSmart notification settings are local-only (no 404 save) (#72)f0a12eb
  • FixAbout screen shows the real binary build number, not stale app.json (#71)4bf3d1f
  • Fixcoerce base lat/lng to numbers — Base Location screen crash (9baf2f9b) (#70)632bd17
FlowSmart1 update
  • Fixsupport exporting a selected set of submissions (80e4f4d4) (#62)fd19fa3
SolveSmart16 updates
  • Fixupdate-quantities blank cell leaves dimension unchanged (77192749) (#280)b15a64d
  • Fixrender break deterministically from recorded placement (#279)feeec51
  • Fixdefault AIONE_AUTH_URL to prod auth host when unset (#278)987ae68
  • Fixvisit-only timeline + window wait + lunch break (Issues 1-3) (#276)32bbf5e
  • Fixstop on-route jobs showing as Pre-route (Assign 409) (#275)30d9f07
  • Featureunplanned panel search, click-coords-to-zoom, quick-allocate (#274)44f200e
  • FeatureDriver Code login for SolveSmart resources (WIP — backend done, UI next) (#269)5d1e6b2
  • Fixstop phantom "Replenish" trips on Icepack service jobs (#272)a51c13b
  • Fixpre-route cards show dimensions + solver coordinates (#273)5449072
  • Fixenrich pre-route unplanned cards with address/customer from JSON model (#271)fba2ab8
  • Featureunplanned panel scrolls + richer job cards (8f57b525) (#270)04fe390
  • Featureemit vehicle regs + org name for distinct-vehicle cost billing (#268)d56a120
  • Featurereport per-solve cost/usage to the RouteOne dashboard (#264)e594a69
  • Featuredeep-link auto-selects the driver in the Control Room (#267)7c1d8ec
  • Featureadd job details + driver comment to SS event notifications (#266)865c0c4
  • Fixin-app driver-event notifications never reached cross-org recipients (#265)0e396dd
Thursday, 4 June 20262026-06-04
AIOne Mobile12 updates
  • Fixlogin wordmark via separate asset; restore app icon/splashf211913
  • Updatelogin wordmark logo + clearer forgot-password button56641e8
  • Updatecanonical copyright line (match landing)f2dbfae
  • Fixuse server answers (not stale local draft) when reopening a rejected workflow (ac5cf312) (#66)b88f628
  • Fixtrack keyboard height directly for message compose bar (cec9ccd1 v2) (#65)00ca654
  • Fixuse Location.time (not .timestamp) for GPS fix stamping (#64)0023ad8
  • Updatebump version 1.7.12 -> 1.7.13 (#63)eb025b7
  • Fixstamp GPS fixes so nav progress + reroute work (ticket e0166374) (#62)8d8fafd
  • Updatebump version 1.7.11 -> 1.7.12 (#61)a618b12
  • Fixlift message reply box above keyboard on Android (ticket cec9ccd1) (#60)33d08eb
  • Updatebump version 1.7.10 -> 1.7.11 (#59)a6f4811
  • Fixsegment-start arrival on any point, mute sweep leg, hardier reroute (#58)c0b57ab
FlowSmart7 updates
  • Fixallow resubmitting a rejected workflow (cutover regression, ac5cf312) (#61)eb4b113
  • Fixcurrency fields honour the workflow-level defaultCurrency (ticket a51c119c) (#60)3759b83
  • Fixrender vehicle_lookup field as its registration, not [object Object] (3eb8116e) (#59)aa73843
  • Featurerender standalone currency fields with their currency symbol (a51c119c) (#58)06f23d6
  • Fixresolve worker_name from the submitter for context-less submits (fb909952) (#57)bb74120
  • Fixdon't let a retried create-and-submit clobber stamped answers (521a7b6f) (#56)ad0a488
  • Updateuse sharp (native) instead of jimp for submission-photo downscaling (#55)562f44e
SolveSmart26 updates
  • Fixresolve SolveSmart access codes in organisation-skills endpointc7d9058
  • Fixuse product-aware label in shared import template wizard (#262)6acebca
  • Featureexpose NDD frequency/period/gap fields in job import templates (#261)53e8d90
  • Fixpresign photos in the rejected-workflow resubmit draft (ac5cf312) (#260)59e3e8f
  • Fixhide map 'Peak 0%' for zero-load routes [242ef4d3] (#259)277b7c5
  • Updatecanonical copyright line "AI ONE POWERED BY OMNIA SMART TECHNOLOGIES" (match landing)98655ac
  • Fixhide quantity/dimension inputs for Service jobs [242ef4d3] (#257)a041473
  • Fixdisable HTTP caching on field-app endpoints (stale 304 → "No Account Found") (#256)947fe17
  • Fixservice jobs render as single 'Service' visit + zero load [242ef4d3] (#255)d2abd46
  • Fixhide pickup fields for Service/Collection job shapes [242ef4d3] (#254)722251c
  • FeaturejobShape — service-only (no-pickup) jobs [242ef4d3] (#249)11da948
  • Featureunread badge on the Exceptions menu item (83df0397) (#253)375c744
  • Fixallocate unplanned jobs within their own dispatch (aa452346) (#252)c766492
  • Fixdefault the project Workflows tab to most-recent submission first (ticket eb0588dc) (#251)77f365b
  • Featureemit real-solver contract packet + geocoding for pre-planned load imports1dc0d32
  • Featureadd Rules step to the solve-template wizard (b57e8a72) (#246)6bae808
  • Fixpresign photos in rejected-workflow revision answers (ac5cf312) (#248)e226f8c
  • Fixresolve customer via snapshot customerId, not jobRef=stopId (5e34fa0c) (#247)9548665
  • Featureadd "Stop — Customer" mapping field (372d8e7b) (#245)df6545f
  • Fixvertically center secondary stat card values (#244)652999a
  • Fixgate solely on the platform 'standpipes' Feature (fa58ad59) (#243)a7fc1b6
  • Updatebump @aione/workflow-components 1.18.1 -> 1.18.2 (eb0588dc) (#242)7b6377f
  • Fixpopulate Job column for stop-level submissions (d1d36c3c) (#241)62dd823
  • FixRouteOne progress shows elapsed, not a stale 600s OR-Tools budget (#240)79374a8
  • FeaturePyVRP constraint parity with OR-Tools/Icepack (22ce13b6) (#239)80ff8cf
  • Featureenforce vehicle-class/relation compatibility in PyVRP (22ce13b6) (#238)6b81771
Wednesday, 3 June 20262026-06-03
AIOne Mobile9 updates
  • Updatebump version to 1.7.10 (#57)9e735e8
  • Featuredrivers can start a conversation + red unread badge (a6761ad7) (#56)9a348c9
  • Featureshow Water company (standpipe) on the SolveSmart stop detail (fa58ad59) (#55)7ed7e13
  • UIalign 1.7.9 version across lockfile + build.gradle (#54)121fb24
  • Updatebump version 1.7.8 -> 1.7.9 (package.json — the source app.config.js reads) (#53)4ab5d07
  • Featuremessage unread badge + new-message notification (5c6724b5) + 1.7.9 release prep (#52)20dad42
  • Featurevoicenote recorder field (expo-av) — d0a90193 (#51)c2927bc
  • Fixsave/show base location for MapSmart sweepers (ticket 7c9b270c) (#50)c036670
  • Fixfire segment/group completion workflows on the Route screen (#49)f622439
FlowSmart5 updates
  • Updatestored inlineMediaCount so lean reads never detoast answers (93b6190d) (#54)163b619
  • Featurebackend support for 'voicenote' field — transcription + render (d0a90193) (#53)c073649
  • Fixinclude jobTypeLinks in template list/get so default workflow shows (4da61109) (#52)f72ea9b
  • Featureuse Google reverse-geocode with in-process cache (ticket 303a7775) (#51)c3f500d
  • Fixresolve vehicle_registration from context (#49)a6888fd
SolveSmart33 updates
  • Featurerender multi-trip routes (reload stops) + only count feasible routes (22ce13b6) (#237)186cf24
  • Fixkeep route-analysis axis on real activity, not midnight (4e3f618e) (#236)22bd301
  • Fixmulti-trip (reload-at-depot) so capacity-bound fleets fit — the real Gregory's fix (22ce13b6) (#233)b1cd6f4
  • Fixshow unplanned jobs across all the date's dispatches (db9d489c) (#234)19a7e3e
  • Featureunread driver-message badge on the Control Room menu item (a57a326a) (#232)8304ac5
  • Fixsync job status on mobile + public workflow completion (a5e8a3ac follow-up to #212) (#226)b9e31ea
  • Fixcap per-district PyVRP runtime so solves don't grind the whole-problem budget (22ce13b6) (#231)427e18b
  • Featureper-file pickup depot in jobs import (242ef4d3) (#230)a29b88f
  • FeaturePyVRP honours the AURA/SPARTA/TERRA/OPTIMA/POLIS profiles + becomes the default engine (22ce13b6) (#229)c6926c6
  • Updatess-mobile: drivers can start conversations + unread-count endpoint (a6761ad7) (#228)57e0f53
  • Featureopt-in PyVRP/HGS decomposition engine (beats Icepack on coverage) (22ce13b6) (#227)ea1b45c
  • Fixshow standpipe field whenever the Admin toggle is on (fa58ad59) (#225)dba2ba6
  • Fixpopulate Job code + location in workflow submissions list (d1d36c3c) (#224)bee1888
  • Featurebump @aione/workflow-components -> 1.18.1 (Voice Note in add-field palette, d0a90193) (#223)eec99d6
  • Updateparallelise OSRM chunked matrix fetch (bc28d031) (#222)c320cdd
  • Updatebump @aione/workflow-components 1.17.0 -> 1.18.0 (3a92228d) (#221)dc86f8f
  • Feature"All depots" capacity view across the whole fleet (94fc1430) (#220)b1e6ccc
  • Updatebump @aione/workflow-components 1.16.1 -> 1.17.0 (voicenote field, d0a90193) (#219)78ebad4
  • Featureinline depot / class / cost-class dropdowns on the vehicles table (d72df896) (#218)935a440
  • Fixfire job_scheduled customer notification on dispatch (wrong stopType filter) (5e34fa0c) (#217)adfe714
  • Fixallow customers to subscribe to the workflow_completed notification event (1a48c463) (#216)b507630
  • Fixjob edits to rate components (and other state fields) silently dropped on save (617e96a3) (#215)185d1be
  • Fixnode-based HEALTHCHECK for backend image (not wget) (#214)9266525
  • Fixmake job duration editable without collapsing the time window (be5480eb) (#213)8ef0a24
  • Featureadd in-app/control-room channel for driver events (#208)a988b09
  • Fixauto-complete job when its completion workflow is approved (a5e8a3ac) (#212)04a6fad
  • Fixbump workflow-components to 1.16.1 (Vehicle group renders)710192b
  • FixLinux-correct lockfile for workflow-components 1.16.0bee025d
  • Fixbuild frontend image with no-cache (ticket 303a7775) (#211)b4b3e91
  • Featuresupply vehicle_registration to system-data contexte998cd9
  • Fixcache-bust frontend Vite build per commit (ticket 303a7775) (#210)5a4ac9c
  • Featurepoint frontend address lookups at canonical AddressesApi (ticket 303a7775) (#209)a7e8f97
  • Fixfleet marker click opens popup only, not the drawer too3c29a0f
Tuesday, 2 June 20262026-06-02
AIOne Mobile5 updates
  • Updatebump version 1.7.7 -> 1.7.8 (#47)6d224c1
  • Fixmap build/update profiles to EAS environments so HERE creds inject (#46)5121698
  • Fixprofile Active status, per-entity exception gate, HERE-creds build guard (#45)8b21636
  • Update1.7.7 (#44)f2ce8d1
  • Featuresign-in with a resource login code (#33)33a8b87
FlowSmart1 update
  • Featurelean mode on /for-entities to skip answers JSON (93b6190d) (#48)794aea0
SolveSmart17 updates
  • Fixclamp fleet driver speed to 0 (no negative mph)5aaa6e3
  • Featurefleet tab zoom-on-select + plot breadcrumbs from popupefa6cd2
  • Fixfleet tab renders without a driver selection82bf3fa
  • Featuregate fleet tab by Control Room; flag "no signal" drivers3c23e65
  • Featuregate "Where's my fleet" tab behind controlRoomFleet feature199ae1b
  • Feature"Where's my fleet" last-known driver location tabdc182e9
  • Updatelean + parallel workflow fetches on project open & Workflows tab (93b6190d) (#207)05aadd6
  • Fixheal-on-archive leaves completed jobs on the old template9520084
  • Featureexpose Pickup Duration as an import target fielda05ca1c
  • Fixvehicle swap treats requiredSkillsAny as OR, not ANDe3d98eb
  • Featureheal-on-archive — usage/reassign endpoints + adapter + components 1.15.0 (#206)18bded0
  • Featureper-job rate prepopulation from job type + customer (09b66994) (#204)2387463
  • Fixsuffix or skip bulk-imported jobs that collide with completed jobs (#205)d5ee486
  • Fixresolve visit resource by numeric id when assignedResourceId holds it (#203)86d4d16
  • Fixseed a depot location per selected vehicle depot (multi-depot planning) (#202)e7a670d
  • Fixrevive soft-deleted user when re-adding to an org (ticket 68117332) (#201)88fee69
  • Fixwiden merged bundle window to fit summed service time (ticket 14c8b0cc) (#200)a11feef
Monday, 1 June 20262026-06-01
AIOne Mobile6 updates
  • Fixauto-refetch Group Details on app resume (ticket 722affc8) (#43)173bf3f
  • UIguard production builds against shipping a stale version (b48649b1 follow-up) (#42)4c2d6e5
  • Updatebump version 1.7.5 -> 1.7.6 (#41)d301dd8
  • Featureper-product Fastest/Shortest route optimisation setting (ticket b48649b1) (#40)cd4766f
  • Fixpin Submit to a safe-area footer so it can't render off-screen (ticket 89fe54b2) (#39)46941d9
  • Fixstamp the resource's own entity on reports (tickets ebe111ef, f3f333b6) (#38)a20d57c
FlowSmart5 updates
  • Fixatomic upsert on localId to stop duplicate rows (#47)0e6dfcf
  • Fixicon-only bulk toolbar buttons to stop overflow (#24)a48828e
  • Featureadd Compare to the SubmissionsDrawer bulk toolbar (#23)d827f92
  • Featureallow comparing submissions across different templates (#22)c2c6135
  • Featureadd WorkflowSubmissionCompareModal for side-by-side submission diffs (#21)3b46a44
SolveSmart20 updates
  • Fixreorder hint uses per-trip label for current position (#199)1c5331a
  • Updatebump @aione/workflow-components to 1.14.3 (#198)57e1087
  • Updatebump @aione/workflow-components to 1.14.2 (#197)fdf1216
  • Featureallow cross-template submission compare + bump workflow-components to 1.14.1 (#196)8973c5c
  • Fixzoom-aware co-location spread + teal current chip in reorder (#195)b32f27f
  • Featureadd submission Compare to workflows tab + bump workflow-components to 1.14.0 (#193)c519689
  • Fixreadable co-location spread + correct trip grouping in reorder chips (#194)f00f6ec
  • Fixadd Move-to-Unplanned icon to reassign popup header (#192)7aae835
  • Fixoffset depot/home marker from co-located breaks + scale spread with crowd (#191)7f9d60e
  • Fixdefault trip sequence + pinned reassign header + trip-aware reorder (#190)d6d3503
  • Fixtrip-2 marker colour, reassign-popup scroll, search-box gap (#189)6c3214f
  • Fixtrip-sequence map markers, second-trip line colour, reassign chips (#188)d342048
  • Fixresolve workflow template names to ids on import (#186)a731a69
  • Fixshow unpacked job count/capacity for grouped solves (ticket 14c8b0cc) (#187)7328935
  • Fixresolve workflow template names to ids on import (#185)268582e
  • Fixdedupe submit path via deterministic localId (Fix-2) (#184)b979eee
  • Fixdeterministic draft localId so autosaves dedupe (#183)c73dd97
  • Featuresame-location job grouping for solves (ticket 14c8b0cc) (#181)18df7ef
  • FixFix Photos column always '-' on MS Project Workflows tab (#182)b755230
  • Fixhonour requiredSkillsAny in scenario solve builder (ticket 37cf708f) (#180)401d8ce
Friday, 29 May 20262026-05-29
AIOne Mobile1 update
  • Fixbackstop so unresolved workflow ids can't white-screen (#37)ac1f1d3
Thursday, 28 May 20262026-05-28
AIOne Mobile13 updates
  • Fixrejected workflow → "In Progress" on both job cards (285a3482 round 2) (#36)cce5a54
  • Fixnormalize legacy single-object photo answers (fa1a87ff round 2) (#35)9182c99
  • Featureadmin-curated failed-reason picker + photo + GPS (cf12ab00) (#34)c14131d
  • Fixmain job-card banner shows "Awaiting approval" too (285a3482) (#32)c1f68ab
  • Fixmain job-card banner shows "Awaiting approval" too (285a3482) (#31)ae57ae6
  • Fixdefensive photo init + global async error capture (fa1a87ff) (#30)6d7ff52
  • Fixproactive token refresh + fresh-GPS on navigateToSegment (7be3248f) (#29)7bd6346
  • Fixtrust authStore for productMode after email login (85250d04)cc70d74
  • Fixsegment-close workflow + sweeper timing (68880b76) (#27)608519c
  • FeatureErrorBoundary persists + POSTs crashes to backend (fa1a87ff)0e3a144
  • Featuretap submitted workflow row to view read-only (aa4162d4)db18ff9
  • Fixbump version to 1.7.5 at the real sources + restore remote version195955f
  • FixappVersionSource local + explicit build numbers (fix 1.7.4 override)f61b4b9
FlowSmart12 updates
  • Updatealign master with prod's GHCR-pull shape (post-incident, INC-2026-05-28-01) (#46)2bd203b
  • Fixrender schema.summaryStepConfig.fields in submission PDF (b95a25c0) (#45)7d151cf
  • Featureper-template downloadFilenamePattern (b4b0ce4d)3af45b7
  • Fixexception photo + lat/lng + structured labels in workflow PDF (#42)61160c6
  • Fixrender summary fields + final workflow signature (b95a25c0)54cbe24
  • Fixembed signatures directly, skip JPEG re-encode (52d32aee) (#41)3dabea2
  • Fixphoto grid + step divider + Q-A spacing + system_data italic (fab1f83d) (#40)41a8ebf
  • Fixrender schema.summaryStepConfig.fields in submission view (b95a25c0) (#20)2796e2b
  • Fixtoken-button save uses explicit value, not stale closure (b4b0ce4d) (#19)f2014af
  • Featureper-template downloadFilenamePattern setting + token picker (b4b0ce4d)0ad5ecc
  • Featureexception attachments + lat/lng + structured layout in submission modal (#17)5576ae3
  • Fixproduct-aware system_data source dropdown (3ee9d538)f97b0f4
SolveSmart20 updates
  • Fixreplace chunky default scrollbar on side menu with MapSmart-style thin grey rail (#179)5985d7b
  • Fixscenarios import-modal copy + Rules > Solve Templates tooltips (#178)c59b8a5
  • Fixchat-isolation in SS/MS — entity+user scope + logout scrub (#177)8c02593
  • Fiximport creates a NEW scenario, not attaches to an existing one (PR #169 correction) (#176)5df982e
  • Updatebump @aione/workflow-components ^1.13.1 → ^1.13.3 (b4b0ce4d + b95a25c0) (#174)eff21ca
  • Featurewire Solve Templates tab into the Templates page (PR #169 follow-up) (#173)3ac33a9
  • FeatureSolveTemplate epic — import pre-planned routes as completed SolveRuns (JP's Pre-Planned Loads) (#169)569377a
  • Fixrelay Content-Disposition + Length so PDF filename pattern actually reaches browser (b4b0ce4d) (#172)3e8aa8a
  • Updatebump @aione/workflow-components ^1.12.6 → ^1.13.1 (b4b0ce4d)7286d32
  • FeatureView workflow report link on per-stop job card (bc4c7cae) (#168)ac5ecaa
  • Fixforward attachments + lat/lng on submission exception fetch (#167)b92eb34
  • Updatebump @aione/workflow-components ^1.12.5 → ^1.12.6 (3ee9d538)8bb836e
  • Fixbuild context from route snapshot, not just Job (3ee9d538)6ebbd68
  • Fixde-duplicate distance-band entry in "Rules Applied" panel (cfed7ffc follow-up) (#164)1d0561c
  • FeaturePOST /api/mobile/client-error sink for app ErrorBoundary (fa1a87ff)604a2c8
  • Fixreturn workflow answers for all submitted statuses (aa4162d4)9de9720
  • Fixsurface custom-field columns from MS Import Templates (38993fce)64c060e
  • Fixdistance-band rule no longer silently overrides later-priority rules (cfed7ffc) (#161)7cf612e
  • Fixstrict-product resourceId + org-scoped resource lookup (85250d04 P0)db49832
  • Fixshow solve name in Recent Solves table on the dashboard (56c9bdca) (#158)1d7303e
Wednesday, 27 May 20262026-05-27
AIOne Mobile10 updates
  • Updatebump version 1.7.4 -> 1.7.59e8f111
  • Featuresoft "Update available" nudge for store/native releases66d15f4
  • Fixcheckout with lfs:true so the Android HERE SDK (.aar) is real, not a pointer3c201ff
  • Fixlive auto-calc in rejected workflow + awaiting-approval job status9721bf0
  • Featurebuild in CI + appVersionSource remote (reproducible builds, gold standard)9c3b38b
  • Updatenormalize line endings so the fingerprint is OS-independente0f590a
  • Fixset EXPO_TOKEN at job level so the fingerprint guard can authb0ff9a6
  • Fixmake CI OTAs match the build fingerprint (S3 SDK fetch + fail-loud guard)2dd0353
  • Fixreset password against both stores so Sweeper users can reset (632e4090) (#14)b37bf3e
  • Featureminimum-supported-version gate (fa1a87ff / c130d56c)df38b63
FlowSmart5 updates
  • Fixrestore image compression + bold-label layout (fab1f83d, 68426d36) (#39)97a7aba
  • Fixnewest-first default + flatten workflowName (d1c404f9, ac988372) (#38)fe1da66
  • Fixbranch-aware required-field validation (TxP Post Office P0) (#37)745c2ed
  • Fixaccept pre-resolved exceptions on submission PDF (8c42b9e8) (#36)20e7b7b
  • Fixclose reopen modal on success when there's no revision link (3b1b0b3e) (#12)82ef4a8
SolveSmart12 updates
  • Fixremove duplicate approval-notification email (d6efdd4f) (#157)cde1e38
  • Fixaccess-code self-registration never created aione-auth account (85250d04) (#156)d8258d0
  • FixScheduled Visits map legend + descriptive job-ID error (e90f7f9b, a2bd84a1) (#155)7ee25ca
  • Updatebump @aione/workflow-components ^1.12.4 -> ^1.12.5 (3b1b0b3e) (#154)885e425
  • Updaterestore strict npm ci now that the lockfile is consistent (#153)2badb48
  • Fixfix driver-event email link + add context (78a130c0) (#150)3ae44f6
  • Fixland on Approvals tab from approval-email deep-link (1525dabf) (#149)96f35bc
  • Fixmatch day-exceptions on the date part (0e4c38ee) (#148)a03025d
  • Fixclear route lock on SOD/EOD reopen (3b1b0b3e) (#147)3f53393
  • Fixinclude job-card exceptions in SolveSmart PDF (8c42b9e8) (#152)7d8ef32
  • Updateregenerate lockfile with the aione-ai-persona subtree (#151)e92a013
  • Fixtether off-road job markers to the route line (#146)2531cd1
Tuesday, 26 May 20262026-05-26
AIOne Mobile11 updates
  • Featurereport app version to aione-auth (c3738afd)87a4ce6
  • Update1.7.45f344cb
  • Updateset versionCode floor to 37 (last shipped) so autoIncrement mints 38256f702
  • Fixmake fingerprint runtime reproducible across environments (#6)119a780
  • Fixroute-lock grey-out + exception stop/route linkage (#5)2c18641
  • Fixstop versionCode/buildNumber bumps changing the fingerprint runtime (#4)c601620
  • Improvementpublish OTA updates from CI to stop fingerprint drift (#3)b56e156
  • Fixfield-app workflow batch: crash fixes (c130d56c) + read-only view (aa4162d4) + rejected-stop resubmit (6f14acf1) (#2)884034a
  • Updatebump versionCode 35 → 36 (35 already on Play Store)aa6ba5c
  • Update1.7.30afdb2b
  • Fixshow platform-correct build number + workflow safe-area providera0e3b96
FlowSmart5 updates
  • Fixrestore "Exceptions reported" section in submission PDFs (8c42b9e8) (#35)581dd63
  • FixrequireAdmin honours top-level role (MS/SS admin-edit 403) (#34)315a682
  • Fixwire approvalLinkBase through submit routes (ticket 1525dabf) (#33)4f5f6ba
  • FixACTUAL fix for repeating-step required-field validator (#31)16d8881
  • FixFix repeating-step required-field validation (TxP submit blocker) (#30)54a8fec
MapSmart1 update
  • FixMapSmart approval-email deep-link base (ticket 1525dabf)50e3b81
Platform3 updates
  • Updateaccept body-FK baseline +1 in auth.ts (c3738afd)3dfe79b
  • Featuretrack + display mobile app version per user (c3738afd)de36f13
  • Featureadd Ori (features.ori) to SolveSmart + ModelSmart (#29)14f6b09
SolveSmart12 updates
  • Featurewrite oriApiUrl into config.json (VITE_ORI_API_URL) (#145)fd7300d
  • Featureembed Ori orb in SolveSmart + ModelSmart (Omnia-gated) (#144)100c1a5
  • Fixrecover ModelSmart solves orphaned in 'solving' on restart (2a6fe58d) (#142)9ccd0fa
  • Fixrate-component import columns + fix(control-room): exception stop badging (#141)c6d25f3
  • Featuremulti-depot planning — select multiple/all depots at step 1 (abbc5563) (#143)83f5973
  • Featuresurface latest stop workflow submission status to mobile (6f14acf1) (#140)bc79ae1
  • Fixshow actual submitter (resource) name on submissions list (f6cb4a48) (#139)e148f33
  • Featureinternal email alerts on driver events (78a130c0) (#138)0f1ae49
  • Fixproduct-supplied approval deep-link bases (ticket 1525dabf) (#134)e2498f9
  • Fixorg-scope visit-status sync in approval proxy (body-FK hardening) (#137)ebfca0c
  • Fixresync package-lock.json (workflow-components 1.12.4 + uuid) (#136)7a2d0e2
  • Fixscope Approvals tab by projectId (post-cutover regression) (#135)abaf3a6
Sunday, 24 May 20262026-05-24
FlowSmart8 updates
  • ImprovementWhitelist summary + auto-send fields in updateTemplate (#29)ede8367
  • FixFix PDF video/file link missing when worker uploads image (#28)cad257a
  • UpdateBump /api rate limit from 200/15m to 10k/15m (#27)de7229f
  • Fixfilter pending approvals by productCodeb847abc
  • Update1.12.4 — render matrix as table, vehicle_lookup as registration string (#11)ea5ca75
  • Update1.12.3 — render video/file attachments as download links in SubmissionsDrawer (#10)9bf36e2
  • Update1.12.2 — dedup attachments in SubmissionsDrawer too (#9)ff4cc99
  • Fixdedupe photo attachments by s3Key (1.12.1)961b686
Platform1 update
  • FeatureOri per-entity toggle on MapSmart entities (#28)11ddae0
SolveSmart15 updates
  • Fixfixup: tsc narrowing for archived workflow backfill (#133)795f27f
  • Fixshow archived workflow name in Edit Job (#fda5e3f0) (#132)d64f16c
  • UpdateBump workflow-components → 1.12.4 (#131)82c23bf
  • Fixuse real File ctor (not mutated Blob) (#130)d0a7fcc
  • Fixwire reference-attachment upload in MS+SS builder pages (#129)132f7fc
  • UpdateBump @aione/workflow-components 1.12.1 → 1.12.2 (#128)438e9af
  • Fixbump @aione/workflow-components 1.11.0 → 1.12.1 (attachment dedup) (#127)55cb081
  • Fixlogo upload filename field mismatch (#126)f72c5f9
  • Fixvisit.status sync on approve/reject + diag for template-404 (#125)81f8039
  • Fixembed workflow templates in MS visit-detail (whitescreen) (#124)2554559
  • Fixtranslate jobId/visitId query parame2976c2
  • Fixun-stub six handlers stranded by cutover (ticket 437cf4f5) (#122)9d8447f
  • Fixun-stub six handlers stranded by cutover (ticket 437cf4f5)1552bda
  • Fixenrich Job Details with template names + submission status72c8afe
  • Fixwire workflows tab to fetch submissions from aione-workflowsa91a855
Saturday, 23 May 20262026-05-23
AIOne Mobile2 updates
  • Update1.7.249e4f41
  • Fixlive system_data values in mobile form-fill (ticket 4bf8ea4b) (#1)aeb65ec
FlowSmart13 updates
  • Fixdrop stage-2 prisma generate, prisma client lives in dist/ (#25)260cfb3
  • Fixcopy generated prisma client from builder, restore PR-21-lineage lockfile (#24)008b2ec
  • UImigrate NPM_TOKEN to BuildKit secret (prevent layer leak) (#23)2c1e927
  • Updatere-export workflow shapes from @omniasmarttech/aione-workflow-types v2fecb484
  • FeatureJWT GET /api/templates/:id/field-index for ss-monorepo DataSmart5f0e075
  • FixrequireAdmin null-guard on products map (live prod 500) (#20)8530dfa
  • Featureaccept entityType + entityId + systemDataContext on submit (#19)2185bcf
  • Fixset NODE_AUTH_TOKEN on npm ci so transitive @omniasmarttech/* deps install (#7)93896ba
  • Updatere-export canonical workflow types from @omniasmarttech/aione-workflow-types@^2.0.0 (1.12.0) (#6)f6f6d19
  • Fixmatrix grid render + approvals photo presign (bundled with 1.11.0)0a42788
  • Fixshow in-flight loading toast on Download PDFc953e22
  • Featurepromote workflow shape types — Schema/Step/Field/Settings/Triggers (v2.0.0)8b1e12b
  • Featurepromote WorkflowManagementPage to shared packagebf2284b
InvoiceSmart1 update
  • Fixdon't auto-apply template when multiple match equally (f28b8e3e) (#24)e35ebcb
MapSmart17 updates
  • Fixservice-level time-window imports overwrite, never inherit (ticket 764839c8)d707a5e
  • FeatureOri assistant in the MapSmart Control Room (#114)3d6c693
  • Updatebump to ^1.11.0 + regen lockfilebed9d63
  • Fixcentralize X-Sandbox-Id injection + cover direct-fetch sitesaa67bbb
  • Fixinject X-Sandbox-Id on streaming-response fetches tooae48a03
  • Fixhandle RealDictCursor in apply_sandbox_schedule_replacementa33a892
  • Fixservice_schedules.id is UUID, cast NULL::uuid in CTE override side5dc9600
  • Updatebump @aione/workflow-components 1.1.0 → 1.10.0c7497b7
  • Fixdefault selection tool to freeform lasso across all maps55f2583
  • Featureroute all service_schedules reads through merged CTE3344725
  • Featureroute all service_schedules writes through sandbox helperdb81996
  • Featureschedule-override foundation (no callsite changes)ddd3a64
  • Featuremove toggle into actions strip, surface on Variable Servicese0d86eb
  • Featuresave-as-new — fork sandbox state into brand-new service_typesbf34154
  • Fixwire get_services_geojson(_streamed) through services_resolved CTEfb3ecf2
  • Fiximport OVERRIDEABLE_COLUMN_NAMES in services_controller1499225
  • Fiximport sandbox helpers in services_controller0cb0b73
Platform1 update
  • FeatureOri add-on feature flag (per-org billable) (#27)060a99f
SolveSmart23 updates
  • Featurerestore test-file typecheck — add @testing-library/dom + drop tsconfig exclude (#118)68adfdc
  • Featureexceptions on the map — standalone markers + sub-icon on linked stops (ticket 0e4c38ee) (#117)78550b1
  • Featureper-driver telematics filter when N>3 drivers selected (ticket cd70d476) (#116)eb0c982
  • Fixalign root vite to 8.0.13 + add overrideca5611e
  • Fixexclude *.test.tsx from app tsc (vitest gates them separately)7879c46
  • FixTableComponent cast + waitFor import63a0937
  • Updatetolerate lockfile drift with npm install (parity with Dockerfile)ff15ce3
  • Removedforward field-index to aione-workflows, delete local duplicateb60f811
  • Updatere-export workflow shapes from @omniasmarttech/aione-workflow-types v2906112c
  • Featuremount shared WorkflowManagementPage4cdffe8
  • Fixwire Approvals/Help tabs + clickable submissions drawere7c653c
  • Fixpresign inline photo refs so 2nd+ photos render (#107)f770546
  • Fixpresign inline photo refs so 2nd+ photos render in submission modal (ticket 437cf4f5)5a2732c
  • Updateconsolidate(ms/ss): MSWorkflows + SSWorkflows now use shared WorkflowsPage (ticket 437cf4f5 follow-up) (#106)5e47d24
  • Updateconsolidate(ms/ss): MSWorkflows + SSWorkflows now use shared WorkflowsPage (ticket 437cf4f5 follow-up)f83eda7
  • Fixphoto count shows 0 — count both attachment rows + inline answer-map refs (ticket 437cf4f5) (#105)4374c70
  • Updateticket 437cf4f5: full SSOT cutover (workflows → aione-workflows) for Saturday 2026-05-23 (#90)7ad6cbd
  • Fix2-col unplanned strip + shift PENDING pills down (#104)44b861b
  • Featurecluster + proximity toggles in unplanned strip (Planning parity) (#103)9d2ab69
  • Fixunplanned strip below action-bar, EnvironmentOutlined icon (#102)45f36f4
  • Fixpreserve drive-time + cost stats after route editse5ac4c7
  • Fix2-col action-bar + Planning-identical unplanned toggle group (#101)ad84aed
  • Fixreplace proximity Segmented with red unplanned toggle on action-bar (#100)5a381fc
Friday, 22 May 20262026-05-22
FlowSmart2 updates
  • Fixexplicit link annotation for video/file attachments (ticket 8480dc37)985d00e
  • Featureexceptions section in online detail modal (ticket 8c42b9e8)15afc3b
InvoiceSmart2 updates
  • Fixwiden QBO connect button so label clears the qb glyphdd0e1cb
  • Fixchain X-Forwarded-Proto from upstream so SSO redirects workbf7f5ca
MapSmart36 updates
  • Fixallow X-Sandbox-Id in CORS preflight880fa5f
  • Featuretrail polyline connecting consecutive events per device (#99)d51d23d
  • Fixshow effective time windows in the table (ticket 5781f061)f4df972
  • Fixeffective time windows in API + Fixed Services table + Variable Services template (ticket 5781f061)9cf0779
  • Fixextend Time Window pair columns to Fixed + Variable Services (ticket 5781f061)2c8b914
  • Fixroot-level alias for /reset_password + /forgot_password (ticket c9e549f8)bf44d3b
  • FixfetchWithAuth returns parsed JSON, not a Response (#98)5ba361d
  • FeatureSolveSmart-style map action bar — Stops / Tracking / Telematics toggles (#97)1f6b916
  • Fixwiden initial fetch window 1h→24h (#96)587e932
  • Fixwire sandboxes_bp into app.py blueprint registration214feca
  • Featuresame-origin proxy for live events so cookie-auth Control Room can see them (#95)91fc283
  • Fixsplit Time Windows import/export into 5 Start/End column pairs (ticket 5781f061)cc1ff1c
  • Fixper-user Fixed Services sandbox mode + RouteOne solverafe7886
  • Featureclose the loop — RoadSegments + ServiceTags + ServiceHubs (#93)cf9f68f
  • Fixadd anthropic to requirements-docker.txte33e8be
  • Fixdefault resource_type to 'driver' on waste entitieseeea4e2
  • FixTileLayer URL — {z}/{x}/{y} not {z}/{y}/{x}f1128f4
  • Featurefilter-collapse + 8-layer map dropdown on Active Sweeping Services (#92)f14e67f
  • Fixdebug(control-room): log marker positions on each map render833c72f
  • Featurefilter-collapse + 8-layer map dropdown on Route Optimisation (#91)6b11d4d
  • Fixsync binding on every save, not only on serial change (#90)2b4474b
  • Fixsingle-select on row click + UK-bounds map guardcfec51a
  • Featuremulti-driver combined view across checked rounds3375898
  • Fixfilter-collapse + 8-layer map dropdown on Fixed Services + Reports/Review (#88)d998ffc
  • FeatureSS-parity rebuild — date-nav, view tabs, multi-select, searcha0fd832
  • Featurevehicle assignment is human-driven, with capacity warninga76694e
  • FeatureVS single-column actions + 8-layer map dropdown across pages (#87)58fff95
  • FeatureSS-parity row layout + vehicle reg + AI debrief5d23b8c
  • Featureroll out filter-collapse + flex-grow actions across pages (#86)7e7cf24
  • Featurepreview unassigned rounds + assign-driver modal copy62edcaf
  • Fixmove password-reset token to URL fragment (ticket d82e49ed)0362df7
  • Fixkill horizontal scroll on actions button grid (#85)de9b85e
  • Featureshow unassigned rounds + assign-driver flow + history fieldsbc463ea
  • Featurebulk-edit service-level time windows (#84)46f14ca
  • Featurefull HH:MM in labels + pre-seed override from UPRN windows (#83)5a83363
  • Fixembedded modal layout + wrap-around window flag (#82)56bdac3
Platform1 update
  • Fixsend productBindings when creating a tenant (#26)9409cc9
SolveSmart25 updates
  • Featuretelematics trail polyline + horizontal stop-status legend (#99)5b0b003
  • Featuretelematics events overlay + SolveSmart-style map action-bar (#98)fe5e13c
  • Fixsplit Unplanned tab into bucket-panel + map (#97)2428e3e
  • Featurecutover to shared aione-telematics — proxy reads, drop local store (#96)183f095
  • Fixsurface solveName in comparison modal (ticket dacb3fb0 followup)4f2717f
  • Featureport Planning's job-context-menu — SSOT for reassign UX (#95)571e798
  • Featurecompare solves inline on Scenario page (ticket dacb3fb0)b32e2d9
  • Fixhotfix(ss): Compare button uses /dashboard not /optimiser-dashboard (ticket dacb3fb0)5c5bc61
  • Featurecompare solves within a scenario via dashboard deep-link (ticket dacb3fb0)f94ad2d
  • Fixapproval + termination email fields on workflow edit modal (ticket d43355bb)88c3b7b
  • Fixpost-planning drop respects target trip (ticket 17265661)69fc77c
  • Fixmarkers default to ALL routes when no selection (ticket 0266b840)7713d21
  • Fixbulk-toolbar count includes unplanned selection (#94)36dd8ee
  • Fixsurface SS import-template custom fields in chooser (ticket 38993fce)2c7da1d
  • FixMS visit-workflow submit now evaluates triggers (ticket 1b30d6fa)9daae06
  • FixtotalDurationMin = drive time, not route-span (ticket 5bbc7b83)feebae5
  • Fixreal getSubmissionExceptions impl on SSWorkflowService (ticket 8c42b9e8)0536662
  • Featurelasso also selects unplanned markers + revert probe (#92)9b0bd75
  • Featurewire online exceptions section to new shared package (ticket 8c42b9e8)92f7a3e
  • FeatureGET /:id/exceptions endpoint for online submission view (ticket 8c42b9e8)b660572
  • FixSS mobile create paths now evaluate triggers (ticket 3b1b0b3e)61df174
  • Updateprobe(ss/control-room): instrument lasso-selection path for diagnosis (#89)9a11e60
  • Fixrestore selectionMode='freeform' default (#88)efb98b2
  • Fixright-click-only lasso, pan keeps working in selection mode (#87)14f6339
  • Fixdefault selectionMode to 'none' so map pans on load (#86)8990aef
Thursday, 21 May 20262026-05-21
FlowSmart2 updates
  • UIregenerate dist for approvalNotifyEmail gateca51f8e
  • Featuregate approvalNotifyEmail behind requiresApproval (ticket 1b30d6fa)4ec588d
InvoiceSmart4 updates
  • Fixrelocate encryption backfill script into src/ for compileccfcaae
  • Fixregenerate package-lock.json with Linux-only optional deps0a38294
  • Improvementupdate Omnia-block test to provider-neutral error code57d07e4
  • Featureadd QuickBooks Online integration alongside Xero179dbac
MapSmart17 updates
  • Updateregister dev-map.aione.uk as a platform host (ticket d82e49ed)2342693
  • Fixopt password emails out of SES click-tracking + secret-key fix (ticket d82e49ed)06abedd
  • Fixbutton truncation + actions block flex-grow (#81)dd88582
  • Featureservice-level time-window override (#80)490a1e3
  • Featurecollapsing filter pane + 8-layer map dropdown (#79)2d3f39b
  • Featuretimeslot legend mode + Timeslot Distribution modal (#78)4b8006d
  • Featurepick one window per UPRN with neighbour-aware matching (#77)3e7fb1f
  • Fixre-solve via Icepack each morning, then project the fresh solvec053b83
  • Featureclone-schedule action for parallel field-app testsed039f0
  • Featureper-round default driver on the Schedule modale624b13
  • Featurecluster colocated UPRNs before sending to route-one (#76)c4ab56b
  • Featurechange driver on a whole round (day-of allocation)33c7cb2
  • Fixexpose Resources page under waste vertical + fix tipping-weights 4043599143
  • Fixsurface dispatch_target on Create/Edit Schedule modal42f0e20
  • Updatealphabetise sections; move Tipping Weights to Executionc6d9d7c
  • UIpinned flex layout + status pill strip4141ab6
  • Fixopt into DataTable customisation (resize / hide / export)356e56b
Platform3 updates
  • Fixinstaller-sheet download via fetch+blob (no token via window.location)e1e0f68
  • FeatureCreate-tenant + Download-installer-sheet buttons on admin Telematics tabf76521a
  • Fixdon't strand registration on the org-selection branch2ac3d82
SolveSmart33 updates
  • Fixhonour wrap-around time windows instead of dropping (#85)c8816e6
  • Featureallocate unplanned job to driver via drag (ticket 34fbd56a) (#74)263f559
  • Featureunplanned job markers on map + proximity filter (ticket 46b8a912) (#73)16380f7
  • Improvementconsolidate CR + Planning into shared component (ticket 605d017c) (#72)370b2e2
  • Improvementextract four modals into own files (PR1 of CR cleanup) (#71)c0dbf97
  • Updategrant pull-requests:write so the sticky comment can post (#84)5825ed0
  • FixunlockRoute affordance on assignment patch (ticket 3b1b0b3e)53ffd16
  • Fixpersist terminateWorkflow trigger + lock route + dispatch email (ticket 3b1b0b3e)433f4e2
  • Fixlasso accepts left-click drag (ticket 635869f2)ecb93b7
  • Fixper-node time windows replace virtual window vehicles (#83)b76b9c8
  • Fixshow Window + Duration in the unplanned-job popupf76e3fc
  • Featureconfigurable timed-delivery threshold per organisationaff54e0
  • Fixswitch strict-window detection to WIDTH-based (Frans + wife's idea)338d2f7
  • Fixpreserve window-vehicle absolute shifts in merge (#82)14a8880
  • Fixstrict-window indicator firing on EVERY unplanned + bulk-panel shiftba05360
  • Featuresummed dimensional chips on the multi-select banner737adef
  • Fixteal clock badge on UNPLANNED map markers (ticket 47130ee5 final)5941ac7
  • Fixgreen clock also on COMPACT cards (ticket 47130ee5 followup)942e72c
  • Fixdon't reset cum_capacity on shift_end (UI phantom tips) (#81)fa912e8
  • Fixstop synthesising phantom tip reloads between window vehicles (#80)87c967b
  • Fixfocus filter + pickup toggle on exception-chip flow3ba4b39
  • Featureclarify solve-result-card metrics with tooltips (ticket 5bbc7b83)d162416
  • Featuregreen-clock badge for strict time windows (ticket 47130ee5)e41546e
  • Fixapply distance-band penalty at IMPORT time, not solve timeb2d5873
  • Fixdistance-band preset multipliers were backwards1a630ac
  • Featuredistance-band penalty as a template rule + presets3984b9b
  • Featurerevert+diag: remove Solve Rules tab; add reload-stops diagnostic to engine1b7f293
  • Updatebump @aione/workflow-components 1.9.5 → 1.9.6274dc1e
  • Fixcollapse unmapped-columns hint to chips + "+N more" hover7d24124
  • Updatediag(routeone): log mandatory_reloads + reload-node skip penalty actually appliedfb46725
  • Fixstamp auto-numbers + system_data + calcs on mobile sync (ticket 9e710b5f re-open)75a30ff
  • Featuremandatory reloads R=1 for POLIS/SPARTA (multi-trip diagnostic)534bc07
  • Featuredistance-band penalty rule editor UI (ticket 3e69f906)c50a485
Wednesday, 20 May 20262026-05-20
AIOne Mobile1 update
  • Featurevehicle_lookup renderer + SS job-card + mid-flow faildd14001
FlowSmart3 updates
  • Updateticket 437cf4f5: ss-monorepo workflow migration prereqs (schema + endpoints + submitter-id) (#18)1ec3bae
  • Fixphoto previewUrl + video/file/address rendersda29b1b
  • Fixexplicit signpost from termination toggle to Settings drawer735138b
MapSmart2 updates
  • Fixkeep optimised route stats in Schedule Viewer summary (ticket 7d466360)94ea21d
  • Fixuse entity-wide active list instead of truncated bulk-lookup map54cf706
Platform2 updates
  • Featurebaseline + align-to-prod migrations + with-secrets1df693e
  • Fixexpose /setup/organisation to admin + manager roles9cde1ed
SolveSmart33 updates
  • Fixhotfix(437cf4f5): revert MS workflow cutover — prod rolled back, master image needs to match (#79)a26d425
  • Fixunwrap pending-approval + correct migration org-id semantic (ticket 437cf4f5) (#77)3be32a7
  • FeatureRevert "feat(routeone): vehicle cloning for multi-trip (replaces reload-disjunction)"a89ef88
  • FixRevert "fix(routeone): skip break intervals when vehicle cloning is active"a980381
  • Fixskip break intervals when vehicle cloning is active4c91359
  • Fixhotfix(437cf4f5): unwrap pending-approval + correct migration org-id semantic (#75)5e24868
  • Updateticket 437cf4f5: MS workflow routes cutover (proxy to aione-workflows) (#70)4e45be3
  • Fixignore pending PlanningSessions in delete check + cascade-clear (ticket 99a6e59c)e7fe29c
  • Featurevehicle cloning for multi-trip (replaces reload-disjunction)72fd237
  • Featureenable Path-LNS operators for multi-trip reload insertionf76218c
  • FixRevert "fix(ss/routeone): drop PCI override, let LCCI default handle multi-trip"c68ac58
  • Fixhyperlink file + video attachments to 7-day presigned URLs (ticket 9624020f)db08eb8
  • Fixwire video case + drop unrenderable emoji prefix (ticket 9624020f)77f25c6
  • Fixdrop PCI override, let LCCI default handle multi-tripe41e278
  • Fixshow 24:00 + treat as ontime when window end wraps3d0ecc1
  • Improvementbump body-FK baseline 15→16 for soft-delete update26a8607
  • Featuresoft delete with audit retention (ticket 4100613f)7b9f1a9
  • Fixbump POLIS reload_skip_penalty 50k → 300k (matching SPARTA fix)0f956d2
  • Fixbump POLIS/SPARTA reload_skip_penalty 50k → 300k0fb4cbd
  • Fixwrap time-window end forward by 1440 in SS envelope + on decode5011e24
  • Fixwrap dropoff_end forward by 24h when end < start909192b
  • FixMS getUploadUrl forwards fileSize + bump shared 1.9.3 → 1.9.52c54f15
  • Featuremulti-trip via paired reload-attractive + shift-underuse knobsf34ece3
  • Fixnormalise column-mapped time windows to dropoff_start/end3a1550c
  • FeatureRevert "feat(routeone): shift-underuse penalty as cost-based multi-trip incentive"eac2e8d
  • Featureshift-underuse penalty as cost-based multi-trip incentive1b0b376
  • Fixdefaults gate misses timeWindowEnd/timeWindowStart, silently overwriting column-mapped windows7cc912c
  • Fixadd workflow_completed to event picker rowsd54a978
  • Updatepublish solver image to GHCReea232a
  • Fixswitch to PARALLEL_CHEAPEST_INSERTION when reloads_per_vehicle>0 (ticket 259a8362 follow-up)f11acf3
  • Featuredistance-from-depot penalty bands (ticket 3e69f906)4393e10
  • Fixenable per-profile multi-trip reloads (ticket 259a8362)3018f51
  • Featureapproval notify email + unmapped-columns hintdf1443a
Tuesday, 19 May 20262026-05-19
AIOne Mobile8 updates
  • UIautoIncrement iOS buildNumber 18→19, Android versionCode 33→34ec62a28
  • Update1.7.1c1253cd
  • FeatureLog Tip — tipping weight capture from the fieldcd06321
  • FeatureBin Monitor mandatory closure wizard8017acd
  • Fixsupport currency cell type with symbol-prefixed input (ticket 8df5e721)d6794af
  • Featureextend in-workflow Failed button to MS+SS visits and MapSmart single segments (ticket 11479e18 follow-up)0b01b37
  • Featureextend in-workflow Job Card FAB to MS+SS visits and MapSmart segments (ticket aacfe6e8 follow-up)6e8ebc2
  • Featurewire onSaveDraft so mid-form back-out + autosave persist as in_progress (ticket def73725)03d665a
FlowSmart17 updates
  • Fixaccept 'currency' in matrix-column cell-type allow-listffa370c
  • Fixrun field-trigger evaluator on every public submit path (ticket ab5b0f50)7ce6223
  • Fixrender PDF + Excel timestamps in Europe/London not UTC (ticket 3825ebe0)8019db5
  • Fixclose the outer borders + add header verticals (ticket f2904f1f)cc49b32
  • Featurehyperlink location + video cells in workflow Excel export (ticket 5d05a3de)253157d
  • Featuresupport currency matrix cells in PDF + Excel (ticket 8df5e721)5fa2b4a
  • Featuremirror matrix-aggregate evaluator from shared package (ticket f9ce7b93)46f7d5a
  • Fixrender address-field answers properly in PDF + Excel exports (ticket 44a0b07b)c082c04
  • Testmigrate contact-group-injection to assertBodyFkBlocked12082b3
  • Fixdiscriminate location vs address by field.typec9e0d45
  • Featureauto-fill 'value' on dropdown options in matrix cells (ticket fb93d803)9adae4a
  • Fixfull grid borders + outer frame on the read-only matrix table (ticket f2904f1f)174eb7f
  • Featureadd currency cell type to matrix fields (ticket 8df5e721)0db2350
  • Featureallow matrix fields as visibility condition sources (ticket f9ce7b93)53bbb57
  • Fixalign datetime answer formatting with PDF (ticket e2fc8cd2)63fc68e
  • Fixrender address-field answers properly (ticket 44a0b07b)58aaf2e
  • Fixremove redundant Target field picker — rules live on the field they target (ticket f2320656)2d99840
InvoiceSmart4 updates
  • Featureadd packages:read permission to npm-ci jobscf4cafb
  • UIGitHub Packages auth + BuildKit secrets + npm@11 + lockfile regen8e28c9f
  • Featurebaseline migration + with-secrets wrapper5055bb9
  • Fixsurface specific 403 reason on SSO logine4e21f9
MapSmart13 updates
  • FixSLA purge now scans the full eligibility window7dc06d7
  • Fixextend canonical AppConfig instead of redeclaring Window globalsdee548a
  • Featurevehicle modal Telematics tab + Waste Control Room layerc665011
  • Featurebind service_fleet vehicles to aione-telematics7279a53
  • Featurefield capture + supervisor reporting + DataSmart feed6804a49
  • Featuremobile sync + mandatory closure backend7855b30
  • Featurelive Operations Gantt for waste-round completion85d7f6a
  • FeatureSLA auto-purge — Phase 1 manual triggerec79e17
  • Featureper-column filters on Round Visibility table21dc922
  • Fixsurface entity-wide active-monitor count on Active Locations78f8953
  • Fixallow new round name entry on fixed services edit (ticket d112c90a)9a9feb3
  • Updateregen package-lock.json on Linux6487db9
  • Featureprefer DATABASE_URL with fallback to split vars (ticket a9065b15)9efe1ae
Platform6 updates
  • Updatebump users.ts baseline 12→13 for access-schedule routed3d10f8
  • Featureexpose org 2FA toggle + per-user access schedules6e0d838
  • Fixadd BuildKit npm_token secret for admin-portal Dockerfilecd3d092
  • Fixgrant admin-portal job GitHub Packages auth for @omniasmarttech21bae45
  • Fixregen admin-portal lockfile in node:20-alpine for emnapi optional deps925cf35
  • Featureadd Organisation.telematicsTenantId + JWT claim + admin UI2fa46cb
SolveSmart9 updates
  • Fixregen root package-lock.json after workflow-components bump890c551
  • Featurebump @aione/workflow-components 1.7.0 → 1.9.313571f5
  • Featureright-click reposition + ghost preview (ticket c00d6aef)bd28884
  • Featurerule-editor card + Jobs-tab chip for day-of-week exclusions (ticket a6cce379)4466a07
  • Featureday-of-week exclusions rule (ticket a6cce379)c7da250
  • Fixsurface refs breakdown in delete-error toast (ticket 99a6e59c)4d9ac4d
  • Fixrender strict-window clock badge on route-clustered markers too (ticket 3bce5638)5436544
  • Fixwrap route-preview times on 24h clock with day-offset suffix (ticket 434e3ae3)b589950
  • Fixpresign helper falls back to IAM role when env creds absent (ticket 53c9c789)de6aef8
Monday, 18 May 20262026-05-18
AIOne Mobile14 updates
  • Testmobile testing bootstrap — Jest + jest-expo + 17-test beachhead3805fac
  • UIsingle-command version bumps via npm version + propagate hook13814ab
  • FeaturePhotoAnnotator circle + arrow tools (ticket 3245fd7d)da726fe
  • Fixbump versionName to 1.7.0 + add version-sync guard3f50107
  • Fixforce fresh ScrollView per step to stop scroll-position carry-over (ticket 76159914)00b03df
  • Updatecomplete bare-workflow sync to fingerprint runtimeVersion (ticket dbc3634b)deb88aa
  • Featurewire PhotoAnnotator into capturePhoto + bump to 1.7.0 (ticket 3245fd7d)b2402c2
  • Fixcalculated fields treat blank operands as zero (ticket dd6d2a47)34af05d
  • Featurewire address field renderer (ticket 57bad669)1a88d93
  • Fixnpm audit fix — non-breaking transitive bumpsf26d525
  • Featureerror-boundary recovery + emergency-launch surface (ticket 29dc8b6a follow-up)0576bff
  • Fixcorrect AntDesign icon names + ViewShotRef in PhotoAnnotator04b231e
  • Featureadd native fingerprint check for PRs (ticket 29dc8b6a follow-up)09c06d9
  • Featureswitch to fingerprint runtimeVersion policy (ticket 29dc8b6a follow-up)1ca51e8
FlowSmart21 updates
  • Testswitch JWT helper to @omniasmarttech/aione-test-helpersa1e6b5c
  • Updateflip body-FK audit to hard-fail with ratchet baselinee783b90
  • Updateinstall body-FK audit GitHub Action6e62135
  • Fixfilter body-supplied groupIds against caller-org3f55960
  • Fixcorrect model name prisma.submission -> prisma.workflowSubmissionc136ada
  • Fixdrop phantom slug field from tier2 share-link testsce3efcf
  • Fixcalculated fields treat blank operands as zero (ticket dd6d2a47)d4c336c
  • TestTier 2 public share-link surface (5 tests)2eaaa4f
  • TestTier 2 batch-share cross-tenant scope (4 tests)40e4e1d
  • TestTier 2 contact CRUD + scope (7 tests)64ff29b
  • Updateswitch Dependabot from weekly to monthly [skip ci]712cf45
  • TestTier 2 submission scope for aione-workflows (6 tests)0b00bfc
  • FixshareUrl returns frontend path not API path (ticket d61c6f26)5de8f7e
  • Featurepromote WorkflowSubmissionViewModal to shared package (ticket b42fec7c Phase 3)1801b43
  • Featureabsorb PublicWorkflowPage into shared packagede33f79
  • Featureabsorb SS+MS-local SubmissionsDrawer features into shared (ticket b42fec7c)98cc0ca
  • Featureabsorb SS+MS-local ApprovalsTab features into shared (ticket b42fec7c)1385c1a
  • UIrelease: 1.5.0 - Summary Step + Auto-Send in shared WorkflowBuilderPage (ticket d150fb42)51f92aa
  • Featureabsorb Summary Step + Auto-Send into shared WorkflowBuilderPage (ticket d150fb42)99efd0c
  • Updaterelease: 1.4.5 - calculated fields treat blank operands as zero (ticket dd6d2a47)a106cde
  • Updaterelease: 1.4.4 - rules tab matches visibility tab (ticket af18343f)bfce8d8
InvoiceSmart15 updates
  • Testswitch JWT helper to @omniasmarttech/aione-test-helpers9b452b6
  • Featureuser-flow test — NoAccess Contact Support mailto0935c4c
  • Testbump @omniasmarttech/aione-test-setup to ^1.0.5f013a60
  • Testswitch to @omniasmarttech/aione-test-setup@^1.0.39e55505
  • Featureadd window.matchMedia polyfill to vitest setup321c0fe
  • Featurefirst component test + add cleanup() to setup7b82ffd
  • Updateflip body-FK audit to hard-fail with ratchet baselinef2ed027
  • Featurepin AuthContext authorization gates + add test-utils wrapper3de97e2
  • Updateinstall body-FK audit GitHub Action3061be9
  • Testbootstrap vitest on InvoiceSmart — pattern replication614d544
  • TestTier 2 org settings GET + PUT validation (7 tests)37e5ff1
  • Updateswitch Dependabot from weekly to monthly [skip ci]576ff26
  • RemovedTier 2 invoice-batch scope + delete state machine (7 tests)1abc0a3
  • TestTier 2 import-template CRUD with cross-tenant scope (7 tests)cf8bbe5
  • Fixparse string-shaped SDK errors so ValidationExceptions surface (ticket 87ad1ba0)a3ce8e7
MapSmart25 updates
  • Testbootstrap vitest — 10th + final frontenddea1841
  • Updateinstall body-FK audit GitHub Actionca537ee
  • Featureround/day/week columns + filters (ticket c8040921)77eb020
  • Fixpostcode search cap + custom-length input (tickets f7eca2d0, 8fb01e0e)a32e7b0
  • Featureauto-run migrations on backend container start (ticket 0fff503c)0506444
  • Fixalign MapSmart Tier 2 tests with actual prod schemas938c31d
  • Fixwiden DDL + pin remaining 4 body-FK fixes (12 tests)9e79886
  • Fixuse theme tokens in :root, remove Vite dark-mode scaffold625271b
  • FeatureTier 2 — pin entities add/edit auth gate (6 tests)f6ace8e
  • TestTier 2 — pin user-mgmt auth gate (8 tests)fb3bfea
  • Fixmake Edit Rounds AutoComplete value readable in dark OS theme693141a
  • FixMapSmart tags assign_tag_history — verify uprn + service_id97c8455
  • FixMapSmart service_types + service_fleet body-entity_idc515f68
  • FixMapSmart services — scope add_service + update_service5631e07
  • FixMapSmart entities — gate create + verify edit target15567d3
  • Fixadd authorisation gate to MapSmart user-mgmt endpointsa272d31
  • Fixadd /api/v2 to four sibling URL builders (#75)0783376
  • Fixappend /api/v2 to API_BASE_URL_V2 (ticket bc309afd) (#74)c7c5685
  • Fixadd missing IVR/slot columns to scheduled + template jobs05ce0c0
  • FeatureTier 2 /add_user reseller-admin scope guard (4 tests)a920efe
  • Updateswitch Dependabot from weekly to monthly [skip ci]33ac7a0
  • Featureaddress search in Add modal + Address column in table (#66)998b601
  • Fix500 on list, nav placement, sidebar scroll (UAT feedback) (#65)2301071
  • TestTier 2 password-reset flow (4 tests)bf1fb66
  • Featurebin monitor management for FCC supervisors (76c9d63c) (#64)50de97b
Platform14 updates
  • Testuser-flow test — AuthCallback SUPER_ADMIN gate60aad95
  • Testbump @omniasmarttech/aione-test-setup to ^1.0.5f8bed56
  • Testswitch to @omniasmarttech/aione-test-setup@^1.0.326e7478
  • Featureadd window.matchMedia polyfill to vitest setup8d968a8
  • Featureadd RTL cleanup() to afterEach (sibling to aione-xero 7b82ffd)82e6a2a
  • Testfirst component test — AdminLayout menu + user displaycf2f590
  • Updateflip body-FK audit to hard-fail with ratchet baseline000e9b1
  • Featurepin auth-helper invariants + add test-utils wrapper3f5bda3
  • Updateinstall body-FK audit GitHub Action (identity SPOF, forward-looking)8435a06
  • Testbootstrap vitest — pattern replicatione5835b5
  • FeatureTier 2 Omnia-staff-only support endpoints (3 tests)b507876
  • TestTier 2 switch-org membership guard (3 tests)58ade31
  • Updateswitch Dependabot from weekly to monthly [skip ci]03283f6
  • TestTier 2 password-reset flow for aione-auth (8 tests)9716126
SolveSmart63 updates
  • Fixre-enable SSM hydration in prisma.config.ts (SSM drift resolved)b44472e
  • Featureedit existing exception type label + default severity (ticket 459361aa)563b535
  • Improvementswitch MS to shared PublicWorkflowPage (ticket d61c6f26 follow-up)b2b30c2
  • Testuser-flow test — shared NoAccess page4da7ef4
  • Featurere-enable showAttachments via File-adapter bridge (ticket d150fb42 follow-up)ba8bbcc
  • Testswitch to @omniasmarttech/aione-test-setup@^1.0.54f9aca8
  • Fixuse triple-slash ref for jest-dom types (verbatimModuleSyntax)68dcca2
  • Fixambient jest-dom types so tsc sees toBeInTheDocument1c0af32
  • Featurevehicle-scoped polygons end-to-end (ticket e47070cb)778da51
  • Updaterefresh root lockfile for workflow-components 1.7.0 (ticket b42fec7c Phase 3)31aea83
  • Updaterefresh lockfile for workflow-components 1.7.0 (ticket b42fec7c Phase 3)0886c5a
  • Featurecollapse SS+MS WorkflowSubmissionViewModal forks onto shared (ticket b42fec7c Phase 3)55f98d4
  • Testfirst component test — SSSideMenu cross-product gate3976855
  • Updateregen for @aione/workflow-components 1.6.0 bump8f3f386
  • Featureinclude linked exceptions in submission PDF (ticket 8c42b9e8)7eac91c
  • Updaterefresh lockfile for workflow-components 1.6.0 (ticket b42fec7c Phase 2)8477551
  • Featurecollapse SS+MS SubmissionsDrawer forks onto shared (ticket b42fec7c Phase 2)e637d2b
  • Updateflip body-FK audit to hard-fail with ratchet baseline3816fbc
  • Fixforward projectId to service.getPendingApprovals (ticket b42fec7c)82185cd
  • Fixcoerce optional reopen reason to '' so it satisfies the service signature293ccb2
  • Fixhoist ruleResolution above ALL early returns (ticket d61c6f26)aff357e
  • Featureextract pure useFeatures helpers + pin cross-product gatesf86d95a
  • UIregen root package-lock after workflow-components 1.5.1 + uuid bumps42bf1ad
  • Updaterefresh lockfile properly for workflow-components 1.5.1 (ticket b42fec7c)f8085a9
  • Updaterefresh lockfile for workflow-components 1.5.1 (ticket b42fec7c)711d00f
  • Featureaudit trail in drawer + Excel/PDF export dropdown (ticket c78aabcb)4df2111
  • Featurecollapse SS+MS ApprovalsTab + HelpTab forks onto shared (ticket b42fec7c)2a6a5d6
  • Updatewith-secrets wrapper + drop env_file from backend composeb4fabbb
  • UIcompact driver panel + 30% wider sidebar7d95de0
  • UIregen ROOT package-lock with workspace deps + Linux esbuild binaries2921c4d
  • UIregen frontend package-lock with Linux esbuild binariesff30f4e
  • Updateinstall body-FK audit GitHub Action4131e0a
  • Featuredefault driver sort = allocated-first; exception focus hides pickup + auto-selects driver7699587
  • Testbootstrap vitest on ss-monorepo — pattern completes04cb6ea
  • UImax map canvas + sidemenu internal scroll + %-share on status pillsddd713c
  • Updaterevert(prisma): drop SSM hydration from prisma.config.ts pending SSM drift investigation365db2e
  • Fixhydrate SSM secrets in prisma.config.ts so CLI gets fresh DB creds5c2ec1a
  • Fixdrop deprecated sslaccept=accept_invalid_certs from CLI URLfeb5f63
  • UIslim summary stats from fat cards to thin pill stripf265c14
  • Fixadd approvalNotifyEmail + terminationNotifyEmail to workflow request types (ticket d150fb42)a92b288
  • FixMS Job update path needs same body-FK guards as createe20dd1c
  • Fixvalidate MS Job body-FKs (territoryId + workflow templates)8289b57
  • Fixscope body-FK validation in SS Job createBulk + createSinglea252722
  • Fixscope body-supplied jobTypeIds in SS Location flowscbc6feb
  • Fixpin body-FK Location scope fix on SS Customer flows89d3131
  • Fixscope body-supplied Location FKs in SS Customer flows7bf6334
  • Fixuse @@map'd table name workflow_templates not WorkflowTemplate (ticket d150fb42)b2aa92e
  • Updaterefresh lockfile for workflow-components 1.5.0 (ticket d150fb42)a3acaa8
  • Updatebump @aione/workflow-components 1.4.4 -> 1.5.0 (ticket d150fb42)1a286df
  • Featureconsolidate SS+MS builders onto shared @aione/workflow-components (ticket d150fb42)5ed9f61
  • TestTier 2 ModelSmart Access Codes API — CRUD + sabotage block6ebba88
  • TestTier 2 ModelSmart Locations API — CRUD + cross-tenant scope307d306
  • Updateland prod's GHCR + runtime-config compose changes23505d0
  • FeatureFlespi → telemetry_events ingestion — Phase 1 backend (ticket 104aa408)7249f32
  • Fixsingle logout helper, kill 6 drifted localStorage clears531002f
  • FeatureSES + per-org DKIM + branding cascade — Phase 1 backend (ticket ba6de092)aa9b610
  • Updateworkflow-components ^1.4.0 → ^1.4.4 (tickets e07bab89, af18343f)5cd2a0a
  • Featuremessage-all broadcast to allocated drivers (ticket 5a010699)48fcefe
  • Updateswitch Dependabot from weekly to monthly [skip ci]dfa1e8a
  • Fixextend CreateForm type with defaultSeverity (ticket 459361aa)1a831ad
  • Featuredefault-severity picker on exception type editor (ticket 459361aa)9312798
  • Fixwiden job-details modal + cap label width so values stop wrapping mid-word (ticket 851233c4)196bb40
  • Fixrules-of-hooks crash blanked MS public form (ticket d61c6f26)fe2ba3a
Sunday, 17 May 20262026-05-17
AIOne Mobile4 updates
  • Fixbump runtimeVersion to 1.6.0 + sync version (ticket 29dc8b6a)bec6977
  • Fixreact-native-view-shot 5.1.0 (4.0.4 was a typo)1f27b11
  • FeaturePhotoAnnotator component for drawing on photos (ticket 3245fd7d)4f397f7
  • Featuretap-to-resume + rejection reason banner (tickets e796c2a3, #5)fab626d
FlowSmart9 updates
  • Fixprovide valid WorkflowSchema shape (version + steps[]) in create tests701fee7
  • TestTier 2 template CRUD + cross-tenant scope for aione-workflows (10 tests)2e50061
  • TestTier 1 auth tests for aione-workflows (8 tests)ebcec04
  • FeatureDVLA vehicle lookup proxy (ticket ccbc760e)fad81b0
  • Featureauto-email completion + reverse-geocode proxy (tickets 6b461cf1, 57bad669)515d789
  • Fixpdf visibility skip + approval-notif deep link (tickets 95d42f39, 61c17940)6e2d19a
  • Updaterelease: 1.4.3 - vehicle_lookup field type (ticket ccbc760e)6d784c8
  • Featurerelease: 1.4.2 - address field, undo, completion-email setting (tickets 6b461cf1, 57bad669, 30be5f39)7eacb99
  • Featurerelease: 1.4.1 - palette adds currency + tick-box (tickets d437e9fa, 1744bbe1)2f3a791
InvoiceSmart6 updates
  • Fixroute Xero-send through strict `authenticate` middleware4a593a0
  • Fixskip Xero-send Omnia-block tests until the underlying bug is fixed9eb53a8
  • TestTier 2 — Xero-send always blocked for Omnia (2 more tests)2f2af88
  • FeatureTier 2 Omnia support-access toggle for InvoiceSmart (6 tests)f63a2da
  • Fixreplace xero canaries with strict-authenticate routes15d084f
  • TestTier 1 auth tests for InvoiceSmart (11 tests across 4 areas)a4b509f
MapSmart9 updates
  • TestTier 1 batch 5 — forgot-password flow + users-endpoint privilege gate8f06cae
  • Fixfix 4 skipping canary paths + add login happy-path test71efbc6
  • Fixuse long-enough password in email-form login test1036d3b
  • TestTier 1 batch 4 — real login flow tests with minimal Postgres schema7498b20
  • TestTier 1 batch 3 — privilege gate (superadmin role enforcement)d6c1412
  • Testwiden PROTECTED_PROBES from 5 to 10 blueprints2b1214e
  • Fixdrop /refresh from PUBLIC_PROBES (it correctly requires a refresh token)813d3d6
  • TestTier 1 batch 2 — blueprint auth-gate consistency + public-endpoint protection517944f
  • TestTier 1 JWT edge cases — cookie auth, wrong-secret, expiry, CORS preflight74aec9e
Platform7 updates
  • TestTier 2 ProductAccess grant/toggle for aione-auth (7 tests)6d12dba
  • TestTier 2 user-CRUD tests for aione-auth (9 tests)3771b6a
  • TestTier 2 refresh-token round-trip for aione-auth (4 tests)808fcdf
  • Fixseed a real isSuperAdmin=true user for the privilege-gate happy path86bf5b3
  • TestTier 1 auth-flow tests for aione-auth (16 tests across 5 areas)27daec9
  • Featuretime-window access + email-OTP 2FA (tickets bb09d9e4, 8aa84063)0a093ca
  • Updatedrop salessmartOrgId + inventorysmartOrgId from Organisation (ticket 13cccd0d) (#18)3ff1a6d
SolveSmart3 updates
  • Featureenable pan/zoom on the exception location mini-map (ticket b610076f)0dc3264
  • Fixconsistent answer-row layout + roomier job-details cells (tickets 371d342b + 851233c4)f91f95d
  • Fixstamp system_data values onto answers at submit (ticket 9e710b5f)a62efab
Saturday, 16 May 20262026-05-16
AIOne Mobile5 updates
  • Fixfile upload, in-workflow trigger fixes, scroll reset, photo-on-termination73d5fcc
  • Fixin-workflow exception/fail/job-card buttons + safe-area fixeb71b7b
  • Featuredrop matrix row-pager, render as single long scroll (ticket d013e9fc)9a872a3
  • Featurecurrency, multi-operand calc chain, field rules engine (mobile mirror)c009427
  • Featurefetch skip/fail reasons from per-org catalogue (ticket 55ec18a7)8c592f2
FlowSmart20 updates
  • Fixhyperlink to approvals queue in email (ticket 1b30d6fa)a021bca
  • Fixvideo / file fields render as clickable download hyperlinks (ticket 4a66b6b7)2649aba
  • UIbootstrap Tier 0 vitest suite (health + auth gate) with Postgres CI gateeeaf711
  • Fixyesno boolean answers + operator support (mirror)099eb20
  • Fixforward NPM_TOKEN as build-arg for private @omniasmarttech/* deps91f564c
  • Updatepush to GHCR on master (ticket 2e17a298 P2)d8fa048
  • Improvementloader fetches /aione/<env>/shared/70372b1
  • Featurewire SSM Parameter Store loader65d3059
  • Fixadd approvalNotifyEmail to template request shapes (ticket 1b30d6fa)5745cf8
  • Featurecurrency, multi-operand calc chain, field rules engine (backend mirror)5685d96
  • Featureemail recipients on submission-awaits-approval (ticket 1b30d6fa)b764e9e
  • Fiximport-type SystemDataSource within file + pin @types/express-serve-static-core to 5.1.0 (5cdb11b6 Phase 3 follow-up)1941397
  • Featureconsume @omniasmarttech/aione-workflow-types for SystemDataSource (5cdb11b6 Phase 3)759367a
  • Updatescope template lookup by org to silence WARN logddedecf
  • Fixderive attachments from answers.s3Key (ticket 4a66b6b7)16790b7
  • Updaterelease: 1.4.0 — trigger operators + yesno boolean normalisation (tickets 3b1b0b3e + df5e8e19)15c3a1e
  • Featureoperator support + yesno boolean normalisation97c626b
  • Featureapproval notification email input (ticket 1b30d6fa)5057cbe
  • Featurecurrency field, multi-operand calc chain, rules engine35cea45
  • Featureextract @omniasmarttech/aione-workflow-types (ticket 5cdb11b6)b2eec50
InvoiceSmart11 updates
  • UIbootstrap Tier 0 vitest suite (health + /auth/me) with Postgres CI gate658b546
  • FeatureOmnia support picker UI (ticket a40da365)bf14e9e
  • Updatepush aione-xero backend + frontend to GHCR (ticket 2e17a298 P2)7195f6f
  • Featureinternal /omnia-orgs endpoints for aione-auth (ticket d90647bf)cc4d2e1
  • Fixexempt AIOne internal orgs from Omnia support-access gate (ticket 1d9143e7)c4e957c
  • FeatureOmnia support-access toggle (ticket 1d9143e7)33d9545
  • Updateregenerate package-lock.json on Linux (ticket 74eb3f94)92f749f
  • Updateupgrade Vite 5 → 8 + @vitejs/plugin-react 4 → 6 (ticket 74eb3f94)9d69d73
  • Improvementloader fetches /aione/<env>/shared/1d3e6ae
  • Fixdiagnose 'Unknown Xero error' fallthrough (ticket 87ad1ba0)899e2b8
  • Featurewire SSM Parameter Store loader12b1c6f
MapSmart26 updates
  • Fixauto-vivify stubbed-package submodules via meta_path finderbfc43cc
  • FixMagicMock-based shim with module __getattr__ (PEP 562)7e33df3
  • Fixexpand heavy-deps strip + module shims for transitive imports3a12b76
  • Fixalso install requirements-docker.txt (celery + redis)7c9c1f1
  • Fixupgrade protobuf to >=6 (icepack gencode version mismatch)95ffa0d
  • Fixshim pyrosm in conftest instead of building it from source79b04a5
  • Fixpin setuptools<60 + --no-build-isolation for pyrobuf51d622f
  • Fixkeep pyrosm in install — needed by osm_utils transitively65228f2
  • Fixset BATCH_CHUNK_SIZE_MB (utils/GAR_updates.py float() crash on missing env)60e09bd
  • Fixalso strip Windows-only deps from Tier 0 install7fa2258
  • Fixstrip heavy native-build deps from Tier 0 install8d7235d
  • UIbootstrap Tier 0 pytest suite (health + auth gate) with Postgres CI gatea53d871
  • UIops(ghcr): swap prod compose build: → image: ghcr.io/... (ticket 2e17a298)bb3c167
  • Fixregen lockfile to match vite 8 + plugin-react 6 bumpa596614
  • UIbuild + push backend + frontend to GHCR on main (ticket 2e17a298)9a83f4c
  • Improvementloader fetches /aione/<env>/shared/70973d5
  • Updatebump vite 7 → 8 + @vitejs/plugin-react 4 → 6 (ticket 74eb3f94)59d8d31
  • FeatureRound Visibility tab + visibility endpoint (ticket 5e1eba54)426ef53
  • Fixadd is_deleted column + switch DELETE to soft-delete (ticket 17760526)7c8ddb3
  • Fixdrop dead is_deleted filter from get_available_sweepersaeda36b
  • Featureactive/inactive toggle with optional inactive-until (ticket 17760526)9b76480
  • Fixlazy getters + CI grep gate (ticket 347c1b1d)f6b1c73
  • Improvementenv-aware loader (load_aione_secrets)4fb167d
  • Featurewire SSM Parameter Store loader (Phase 1, additive)8c8877f
  • Updatebump @aione/road-restrictions to ^1.3.0 (ticket e77779e9)275287c
  • Improvementmigrate to @omniasmarttech/aione-exceptions-sdk@1.0.0a7c2a65
Platform9 updates
  • Fixdrop --skip-generate (prisma 7 doesn't support it on db push)d4e4622
  • Fixuse prisma db push not migrate deploybc00c1f
  • UIbootstrap Tier 0 vitest suite (health + /auth/me) with Postgres CI gatee8870d5
  • FeatureOmnia JWT issuance for InvoiceSmart support access (ticket d90647bf)2f1b5ea
  • Updatepush aione-auth + admin-portal to GHCR (ticket 2e17a298 P2)f0a33a8
  • Improvementloader fetches /aione/<env>/shared/47544da
  • Updateregenerate package-lock.json on Linux (ticket 74eb3f94)00eeae6
  • Updateupgrade Vite 6 → 8 + @vitejs/plugin-react 4 → 6 (ticket 74eb3f94)b84f2eb
  • Featurewire SSM Parameter Store loadere8bea83
SolveSmart34 updates
  • Updaterefresh lockfile for workflow-components 1.4.07c80090
  • Updatebump @aione/workflow-components to ^1.4.09cb77c4
  • Fixregen lockfile for vite 7→8 bump9d07faf
  • Featurerate-capture Phase 3 export columns (ticket e5c2c988, follows 36626921)a2dba9e
  • Updatepush ss-monorepo backend + shared frontend to GHCR (ticket 2e17a298 P2)ef8a95c
  • Updatebump vite 7 → 8 + @vitejs/plugin-react 5 → 6 (ticket 74eb3f94)a8712fc
  • Featurerate-capture Phase 2 backend (ticket dcc47682, follow-up to 36626921)b296c2b
  • Improvementloader fetches /aione/<env>/shared/1615ef1
  • Featurerate components Phase 1 (ticket 36626921)13be116
  • Featurewire MS workflow forms to the field-rules engine509ec6f
  • Featurewire SSM Parameter Store loader9564444
  • Featureauto-email completed workflow PDF to customer contacts (ticket 131e87fe)0a73423
  • Fixhonour scenario distance_unit on Scenarios-page solve card3b6ad56
  • Fixdrop raw-field dimension fallbacks on infeasibleJobs9812d80
  • Featuresoft same-vehicle for location groups via aux group_vehicle IntVarce71d34
  • Updaterevert(route-one): disable location-grouping same-vehicle constraint1392a7c
  • Featuresame-vehicle constraint for location groups that fita85543e
  • Fixdrop raw-job spread on infeasibleJobs — crashes panel on toFixed477b742
  • Fixpass raw job fields through on infeasibleJobs entries30aebf6
  • Updatebump @aione/workflow-components to ^1.3.0 (ticket 1b30d6fa)f64e8bd
  • Fixcoerce penalty to number on infeasible-job entries + Quantity fallbackf2ba3b9
  • Fiximport SystemDataSource locally — re-export alone doesn't bring it into scopebee1b6e
  • Fixbackend Dockerfile needs NPM_TOKEN for @omniasmarttech/aione-workflow-types52a86ee
  • Featurepre-flight infeasibility — jobs inside org polygons → unplanned36cd175
  • Improvementconsume SystemDataSource from @omniasmarttech/aione-workflow-types (ticket 5cdb11b6)71849b1
  • Fixcanonicalise integer-vs-string time windows in strict-badge checka22960c
  • Fixformat missed popup window + clock-badge tooltip06f8b68
  • Fixmissed popup raw-int site + per-leg Valhalla polyline fallback6187299
  • Updatebump @aione/road-restrictions to ^1.3.0 (ticket e77779e9)2852b4b
  • Fixremove 'Icepack' from all user-facing strings3794f10
  • Featuremint a UUID requestId for RouteOne solves316cabc
  • Fixmirror job-time override to display fields + format raw window in popupf20ef6f
  • Featurecategory filter on Settings → Exception Types tab (ticket 55ec18a7)e4f9475
  • Improvementmigrate to @omniasmarttech/aione-exceptions-sdk@1.0.0776ef8f
Friday, 15 May 20262026-05-15
FlowSmart4 updates
  • Fixresolve six new sources (ticket 9e710b5f)8b72516
  • Featureadd baseline CI workflow7d009d0
  • Fixembed real images + filenames for photo/video/file/signature86d64d9
  • Featuresix new sources — route, notes, weight, units, site contacts (ticket 9e710b5f)f846a20
InvoiceSmart2 updates
  • Featureadd baseline CI workflow768639f
  • Featureruntime config for environment-agnostic buildsc868e38
MapSmart4 updates
  • Featurehorizontal calendar report layout6cb4b91
  • FixfetchWithAuth reads V2 base URL from runtime config, not build-time env34e774d
  • Featureadd baseline CI workflow (Python backend + Vite frontend)f04ecad
  • Featureruntime config loader for environment-agnostic builds26ce18c
Platform2 updates
  • Featureruntime config for environment-agnostic builds9d6691b
  • Featureadd baseline CI workflow (backend + admin-portal builds)3f537eb
SolveSmart6 updates
  • Fixbound polygon enrichment to per-vehicle 300 km depot reach9930905
  • Updaterefresh lockfile for @aione/workflow-components 1.2.0 (ticket 9e710b5f)26f7a88
  • Featuresix new system_data sources for workflow builder (ticket 9e710b5f)3482828
  • Featureadd POLIS solver profile — bounded territories, minimal crossover5062212
  • Featureruntime config so UAT-built image runs unchanged on prod24f7cbc
  • Featureadd baseline CI workflow for lint, build, and testsae67401
Thursday, 14 May 20262026-05-14
FlowSmart1 update
  • Featurepublish to GitHub Packages as @omniasmarttech/aione-workflow-components00e10a4
MapSmart17 updates
  • Fixcalendar report 500 for variable services (57f8c428)266d2ba
  • Fixchmod static files world-readable in nginx stage6a60cd4
  • Fixcorrect ExceptionType field refs in NotificationRecipientsTab (ticket 977852b0)4a0d471
  • Fixbump GAR_SERVICE_ID 50 → 166 for GAR2026 season (ticket edbed9c5)9954f7e
  • Fixmatch GAR2025+GAR2026 service_type rows (ticket edbed9c5)cb10c45
  • Featureadd Region column to validated tab (ticket e1a825d4)6758ab9
  • UIconsume @aione/* shared packages from GitHub Packages79553c2
  • Fixcalendar report 500 for variable services (57f8c428)d693a87
  • Fixpin antd to 6.0.0 (was ^6.0.0)7b83f60
  • Fixexplicit sorter param types on all 5 remaining columnscc14fe7
  • Fixexplicit types on sorter/onFilter/onChange callbacksec857e5
  • Fiximport ColumnsType from antd root, not antd/es/table1ed1063
  • Fixexplicit types on all column render/onFilter callbacksf284dd4
  • Fixexplicit types on Switch onClick + Stop column renders8596373
  • Fiximport ColumnType from antd root, not antd/es/tablebf140e9
  • Featureconsume @aione/road-restrictions shared packageb262116
  • Fixbucket Origin Rounds by (service, round_ref) (edbed9c5)e72dd6f
Platform3 updates
  • Improvementmatch uat-*/dev-*.aione.uk via regex instead of enumeratingff8a621
  • Fixadd UAT/dev product URLs to ALLOWED_REDIRECT_PREFIXESc20f0b5
  • Featureexpose /ss-workflow-management as a tickable module8597d01
SolveSmart17 updates
  • Fixchmod static files world-readable in nginx stage370236e
  • Featureexpose more vehicle fields via column selector (ticket 324228a5)9c505c8
  • Fixrender calculated field values in MS web view + PDF (ticket 6c149714)27e9887
  • Fixexport delivery date off-by-one during BST75d5431
  • UIconsume @aione/* shared packages from GitHub Packagesdcdbb5d
  • Fixrevert nested-table internal scroll — the actual width-growth triggerc126830
  • Fixremove customizable from nested fleet table — the runaway width was the re-instantiation pattern after all3a82815
  • Featurestrict-window emphasis across all three surfaces0072925
  • Featurecog on expanded vehicle table + internal scroll on long classesb685c1a
  • Fixre-add fleet metadata columns on the proven slice-not-wrap pattern1845d9f
  • Fixkill nested-table growth, teal clock, strict-window emphasiseaa12d1
  • Fixclock indicator reads jobMetadata fallback for historic runsaece04f
  • Fixkill ever-growing fleet table + move cog to expanded level3ec865b
  • Fixre-include aione-road-restrictions/dist in Docker build contexte78f34b
  • Fixteach frontend Dockerfile about @aione/road-restrictions39f730a
  • FeatureCullompton fullscreen-analysis & planning fleet tweaks8b7ee1c
  • Featureconsume @aione/road-restrictions shared package265fa37
Wednesday, 13 May 20262026-05-13
MapSmart5 updates
  • Featureadd Time Windows column to UPRN + service tablesedfeed0
  • Featuremulti-select round filter on Variable Services0b6733e
  • FixLoad Distribution table accept multi-week collection_daysea2f34b
  • Fixround filter must match exactly, not by substring (69493322)efc0f6b
  • Fixresolve CSS vars before Canvas polyline stroke (3b8092ee)3cad518
Platform1 update
  • Improvementdrop UserOrganisation.role; role lives on ProductAccessfc35691
SolveSmart5 updates
  • FeatureAI-generated driver debrief v1 (ticket 6c44afb3)12d9614
  • Fixbreak stuck 'Rescheduled' state when reschedule chain dies (ticket 678037f7)89e1ca0
  • Fixgate route-summary button to SolveSmart platform onlyd2d17c7
  • FeatureAI-generated per-route summary v1 (ticket 805212c8)3c91bdf
  • Fixrestore workflowTemplateId on re-snapshotted routes (ticket 5b983efb)2aed72a
Tuesday, 12 May 20262026-05-12
AIOne Mobile9 updates
  • Fixperiodic upload timer so stationary tracking flushes (ticket a8fe229f)906b11b
  • Featuredriver messages tab + reply + push deep-link (ticket 6ecdc1af)79e7017
  • Fixforward workerName as systemDataContext at submitda909e2
  • Featureauto-select mapsmart_waste productMode when entity.system_type='waste'4ba5e7a
  • Fixhandle 404 on Loaded & Ready when control room moved a stope2e0ae0
  • Featurecalculated field renderer + mid-flow termination91dd34f
  • Fixadd mapsmart_waste entries to every Record<ProductMode, …>2bc15b3
  • FixTS errors flagged by tsc54f86e8
  • Featurewire submitWasteStopWorkflow into StopWorkflowModal0d13a77
FlowSmart10 updates
  • Featuretrigger Phase 2 type extension — notify block (ticket 2629437f)fa8304e
  • Fixreset x cursor after matrix field so subsequent sections align12f01f4
  • Featurecalculated field stamping + workflow termination handler7deec9f
  • Featureratio aggregation on the aggregatord278e39
  • UIrebuild for trigger Phase 2 notify config UI (ticket 2629437f)59fbebd
  • FeaturePhase 2 notify config UI for response triggers (ticket 2629437f)8df6298
  • UIrebuild dist2a9a084
  • Featurecalculated field type + workflow termination5be6d47
  • Fixrender system_data fields with stamped value (not null)fb88a69
  • Featuretab the modal into Field / Logic / Media1ca06c9
InvoiceSmart2 updates
  • Updatebump axios + path-to-regexp + follow-redirects (ticket 373b4bde)57ff204
  • FixXero rate-limit handling + count/summary consistency (ticket c682e356)5d9d7df
MapSmart13 updates
  • FixAdd exception-specific email notification rules for driver-raised service exceptions6807212
  • FixDays select-all (3a6c217a) + recolour-by-legend (3b8092ee)fd4eb97
  • Featuremake Load Distribution table view width-resizable5b85260
  • Featureadd Tile / Table view dropdown for Load Distribution6901f55
  • Fixexpose dispatch_target in admin UId21faef
  • Featureinclude entity.system_type on /mobile/my-profile response87561a1
  • FixTS build errors3383fb3
  • Featureratio aggregation support80600ed
  • FeatureCompare filter pickers for services + optimisations3a5f4bd
  • Fixflip scheduled_services.dispatch_target default to aione_externale89a573
  • Featureattach truck dims + orgPolygons to RouteOne requesteae468d
  • Featuretruck-dims tab on Service Fleet + Road Restrictions admin page6fb4ee5
  • Featureper-stop workflow submit endpointf412be5
Platform1 update
  • Featureregister /ss-workflow-management route (ticket 36276e31)54a5396
SolveSmart25 updates
  • Fixright-rail layout + In Progress tile colour (tickets a8fe229f, 6d2179d9)9ac5e30
  • Fixlock page to viewport height so Next button stays in view1af5281
  • Fixreadable text in skipped/failed status tooltip (91121394)5a639c0
  • Fixdynamic fleet table scroll height to keep CTA in view6882a30
  • Fixroute /api/solvesmart-workflows* to solvesmart product context76f7b80
  • Featureassign-to-route button on unplanned job popup (ticket e32270b3)0f3404b
  • Fixtrigger Phase 2 dispatch (email + WhatsApp) — ticket 2629437f5623073
  • Featurebadge rule-overridden time windows on stop cards (ticket 1f786380)7f6125d
  • Featurehighlight time-window cells set by import rules (ticket 1f786380)fae0953
  • Featureadd requiredSkillsAny for OR-of-skills semantics (ticket fb5f5029)5c26f82
  • Featuredriver-message drawer + unread badges (ticket 6ecdc1af)927fc5c
  • FeatureDriverMessage backend — schema, endpoints, push (ticket 6ecdc1af)719f915
  • Fixcap grouped fleet table height so Next button stays in view (f18afdd1)abea8d1
  • FeatureSOD/EOD chips on driver cards (ticket e9094bf4)5052537
  • Featurehover-reveal skip/fail reasons (ticket 91121394)ca70b67
  • Featureunplanned-jobs panel + Unassign action (ticket 635869f2)8a717b1
  • Featureunallocate-stops + driver push on route updates (ticket 635869f2)853c6f2
  • Featureunplanned-jobs endpoint + org gate (ticket 635869f2)9600752
  • Featuresort the driver sidebar (ticket 1139e8ea)095fd5b
  • Fixstop labelling transitRuleIds as vehicle skillsef43e3c
  • Featurepivot off Valhalla → OSM/Overpass-derived restriction polygons98de01b
  • Featureratio aggregation across entity + workflow paths6774549
  • Featurelive status tiles + click-to-filter (ticket 6d2179d9)4c5ea8e
  • Featuresplit Setup vs Reporting (ticket 36276e31)0a799fa
  • FeatureISR loader honours per-vehicle truck dims + orgPolygonsa1fb4a7
Monday, 11 May 20262026-05-11
AIOne Mobile5 updates
  • FeatureWasteScheduleScreen v1 — list-based, SOD/EOD gated2e5751f
  • Fixstart GPS tracking from Schedule tab too, not only Route tab2797b56
  • Fixforward photo attachments through to backend (and inject SS upload-url fn)b44a534
  • Fixdefer EOD modal present until reason modal finishes dismissingd2aa7fd
  • Fixunblock three nested-Modal flows broken by RN's iOS modal stack47a7a22
FlowSmart2 updates
  • Featureper-field response triggers — route to approvals on match497fdf5
  • FeatureResponse Trigger config on select/radio/yesno fields (v1)43144e6
InvoiceSmart2 updates
  • Featureper-condition AND/OR logic operators (ticket 3d67eb9f)a976f79
  • Fixsurface Xero validation errors as actionable, deduped messages2d38a28
MapSmart16 updates
  • Fixmake Active Locations import tolerant of midnight-crossing time windowsb052276
  • Featureworkflow-config endpoints + admin modal on scheduled-services8001f1a
  • Fixannotate emailSubmission recipients: string[]8f5cfe8
  • FixFCC waste rollout — Control Room + mobile blueprint + dispatch rewirec62e32c
  • Featureschedule-template picker on Schedule Diagnostic092529b
  • Featureservice-type + region pickers on MapSmart reportsf76b324
  • UpdateSQL push-down for count+groupBy / count+filter6d5cf34
  • Featureadd Active Sweeping Services + Fleet Inventory reports6c5d68e
  • Updatecount-only fast path + 200k snapshot cap9e0db84
  • Featureadd Services / Locations / Risks entities (snapshot)0863917
  • FeatureActive / Inactive toggle (181c3651)cc92d00
  • Featuremapsmart-optimisations entity + list-recent + by-idsc71d64c
  • Fixinclude USRN in Fixed Services (ServicesPageV2) table rows2fac826
  • Fixresolve CSS vars before passing to canvas markersad9f3cc
  • Fixalias @dnd-kit/* to consumer node_modulesd3591f7
  • Improvementdrop in-tree fork, consume canonical via file: depcd02501
Platform5 updates
  • Featureadd POST /api/products/internal/sync-pabde488c
  • Featurealso return userIsSuperAdmin283d38e
  • Featurealso surface allRoutes per product77ba0a9
  • Fixswitch userId param to userEmail63a82ab
  • Featureadd userId param returning productAccessRole2c575be
SolveSmart32 updates
  • Fixre-include aione-workflow-components/distf485f75
  • Fixin_progress stops get a distinct colour + nicer legend162af6f
  • Featurefull filter parity on all 7 ss-monorepo reportse17bf69
  • Fixexclude .add-job-modal from "active tab = theme orange" rulef771e7c
  • Fixclean user-facing failure messages, no vendor names233175f
  • Fixactive tab label STILL invisible — switch to token overridefc691e1
  • Fixtombstone old orphans + hard fetch timeoutd3d853d
  • Fixdrop readable-stream override (archiver pin is sufficient)7608a63
  • Fixpin archiver to ^6.0.2 to avoid readable-stream@4 + process polyfill6d7a384
  • Fixpin @types/express-serve-static-core 5.1.0 + @types/qs 6.14.0e5da255
  • Featureper-field response triggers — route to approvals on match2e1b0c5
  • Featureauto-recover orphaned solves on backend startup9665582
  • Featureadd per-stop customer messaging (ticket e2c0b51c)d120cbd
  • Fixpin react + react-dom to 19.2.3 exactb039ed6
  • Fixnuke aione-workflow-components/node_modules to prevent React dupdfd707c
  • Fixre-include aione-workflow-components/distb82d5fa
  • Fixre-apply file: dep rewrite after source COPYda92b9a
  • Fixuse absolute file: path for @aione/workflow-components13b7138
  • Fixannotate map params in workflowRepeats to satisfy tsc -b0399a4c
  • Featuremirror UO.role writes to ProductAccess on every CRUD path8711dae
  • Featureadd "3PL - Weight Aware" solve mode mirroring Normal - Weight Aware7efa7df
  • Fixrestore honest role-based pageAccess after PA backfille7d75d8
  • Improvementdrop in-tree fork, consume canonical via file: depc9e065b
  • Improvementdrop in-tree fork, consume canonical via file: dep3d61a5c
  • FixSetup tabs read me.organisation.id, not me.organisationIdc48eddc
  • FeatureSS/MS backend + submission UI support for matrix field typecaa9ace
  • Fixread organisationId from auth/me's nested organisation objectb9059c0
  • Fixreturn allRoutes as pageAccess (restore pre-fix sidebar)4ebc14c
  • Fixbridge to aione-auth by email, not userIdd27aa04
  • Featureexpose "Normal - Weight Aware" in the Run Solve modal3ba7868
  • Feature"Normal - Weight Aware" solve mode — Icepack with pre-enriched vehicleRelations from Valhalla weight tagsf85c1cd
  • Fixuse ProductAccess.role + internal org-config (ticket 3b593410)6953ae2
Sunday, 10 May 20262026-05-10
MapSmart5 updates
  • Fixdefault S3 bucket to S3_BUCKET env (solvesmart-documents on prod)d797daf
  • Featureexpose 3 standard MapSmart reports through datasmart adapter26d134d
  • Fixplug DB-session leak that blocked DDL on uprnsa6d27f8
  • Fiximport modal becomes pure kickoff form, banner owns progress4671ff7
  • Featureconsolidate create_auto_risks() trigger body into single source filec02fe37
SolveSmart5 updates
  • Fixsurface backend error message when saving workflowe29ad2a
  • Featureexpose ss-monorepo's own workflow templates (Round 2)9d1c081
  • Featureper-project filter for MS dashboards3640e0e
  • FeatureMS resource utilisation rollup endpoint8659ffa
  • FeatureMS fan-out — Resources / Routes / Solves entities + 2 reports65e8f66
Friday, 8 May 20262026-05-08
AIOne Mobile3 updates
  • Fixmobile renderer + local resolver for system_data03f5673
  • Featuremobile renderer for auto_unique_number fielda5e240f
  • Featuremobile renderer + types for matrix/grid field4ad50a5
FlowSmart4 updates
  • Featuresubmit-time stamping for system_data field typed0a8589
  • Featurematrix/grid field type — types, validator, PDF, Excel6a17de9
  • Updaterename: dashsmart → datasmart endpoints + env8bc1afe
  • Featureadd matrix/grid field type4117c4f
InvoiceSmart2 updates
  • UIWire Sentry sourcemap upload on prod build (ticket e28b8e8b)ec6abd9
  • Fixdefault duplicates map to {} so a missing response field doesn't crash renderb012204
MapSmart11 updates
  • Fixinclude USRN in table-data field destructure6ec4740
  • Featureauto-classify roads >= 40 mph as 'collect single-sided' riskfa1caa5
  • FixSweeper Edit/Bulk Edit shows full frequency list3363bbd
  • UIBump Node heap to 6GB for mapsmart-frontend build (e28b8e8b)ee69a6c
  • UIWire Sentry sourcemap upload on mapsmart-frontend prod build (e28b8e8b)86c65af
  • Fixpool-conn cleanup on shift_workflow_status; param-bind order in batch_proximity_match589e667
  • Fixrelease pooled DB conn in finally + name missing fields in IcePack errors4b73ae7
  • Fiximport balanced_kmeans in variable_services_controller50edaea
  • FeatureDataSmart adapter — list-entities / field-index / aggregate89af5b3
  • FeatureAdd stop_grace_period: 5m to mapsmart-celery0d88542
  • Fixscope Variable Services round-edit to chosen day/roundebab260
Platform7 updates
  • Featureregister /road-restrictions in SS access maps5d8f40b
  • Featureexplain role permissions inline061bb39
  • Fixrename DataSmart column label 'Dash' → 'Data' (legacy from rename)47d1956
  • FeatureGET /api/auth/orgs/:orgId/provisioned-products0cc279d
  • UIWire Sentry sourcemap upload on admin-portal prod build (ticket e28b8e8b)d9de248
  • Fixnull-safe products map in requireProduct/requireAdmin/productBackend90a7668
  • Featureimplicit DataSmart access; drop scope mappingcefff66
SolveSmart42 updates
  • Featurelist-recent + by-ids endpoints for the Compare flow701aac8
  • Fixpolygon-aware polylines so the map line matches the solver's actual avoidance, not OSRM's straight-throughbecbe77
  • Fixactive tab text invisible against orange bar089d72d
  • Featureexpose per-solve stats from responseJson._stats2228cb8
  • Featurepostcode/place search to fly the map07cdd3c
  • Fixregister /road-restrictions in route-feature mape8e43ae
  • Featurepolygon editor for road-restriction overlays6310547
  • Fixdrop Icepack/Vehicle-ref fields from user-facing solves entity + report060c149
  • Fixreplace solvesmart-routes (Icepack-empty) with solvesmart-scenarios958118a
  • Fixcompute trip number per stop instead of hardcoding 13019223
  • FixSS Phase 1 — Jobs, Routes, Dispatches entities + 4 new reports45324d0
  • Updateinfra(ss): point backend at dedicated solver EC2 (172.31.34.163)8907138
  • Fixfilter entities + reports by ss-monorepo's own product flags4f2d16d
  • Featurestamp system_data values into Excel exportsc592fc1
  • Updateparallel chunks + Valhalla 4-thread/4-core for cold-cache speeda8b3107
  • Fixzod record needs (keySchema, valueSchema)8174a90
  • Featurereports adapter — list + run, xlsx via exceljs to S31e7ef9c
  • Fixpersist route distance in km, not solver-units / 1000 (6873d5be)a990af0
  • Fixset canonical matrix in Valhalla branchfe207d5
  • Fixchunk Valhalla matrix calls to bound memoryeba5584
  • Fixsummary cells stay aligned when columns are hidden/reordered (19ebd546)7497cb0
  • Fixunmapped columns now persist as customFields, surface in exports (38993fce)291ed22
  • Featuretruck dims in bulk edit + own sub-tab on single edit8dd7c35
  • Featurewire sourcemap upload on prod frontend build (e28b8e8b)799e599
  • Featuretruck-dim fields on vehicle modal9e66488
  • Fixwire vehicle truck dims through CRUD + RouteOne dispatch92cedf3
  • Featureadd matrix/grid field type97ac702
  • Featurevehicle truck dims + RoadRestrictionPolygon for Valhalla routingfb2e25d
  • Fixrewrite map-panel conditional as IIFE so diagnostic fires (ad9948c2)7f10e65
  • Fixdispatch truck-classed vehicles to Valhalla matriceseee2b6a
  • FeatureIVR7Adapter accepts per-vehicle matricese43ffa8
  • Fixuse OptionalBoolean.BOOL_TRUE for use_cp_satbd6805c
  • Featuretruck dims on Vehicle + org polygons on SolveRequestebb0495
  • Fixzero-route diagnostic now triggers; smaller class chip (ad9948c2)d6f09bd
  • Fixzero-route diagnostic on Map panel + tag overflow on cycler (ad9948c2)88410e9
  • Featureadd SolveRun, PlanningSession, ModelSmartProject, ModelSmartJob, ModelSmartOptimisation entitiesd77c949
  • Featureper-row + bulk Download PDF action (dd0f16cf)3dac30f
  • Featureper-job embargo dates exclude shutdowns from solver (6447342b)3692fda
  • Fixper-DOW row wraps and Sunday eats the second line (6c3e6654)5cc8607
  • Featureexpose Team Name as exportable field (620fc13d)8deff30
  • Fixconsistent verifyDataSmartServiceToken capitalisation86612a7
  • Updaterename: dashsmart → datasmart endpoints + env4aade3f
Thursday, 7 May 20262026-05-07
AIOne Mobile2 updates
  • Fixlock visit detail screen on declined state2774629
  • Fixunified Skip/Report-Issue picker, EOD lock, resume from skipped11540a2
FlowSmart13 updates
  • Fixlist-templates takes (productCode, orgId) tuples0cea645
  • Featurecross-template list-templates endpoint2c0c247
  • Featurefield-index + aggregate endpoints for DashSmart2e1035f
  • Featurebackend generator + counter table for auto_unique_numberee3f3b8
  • Featurebatch-share /f/:token returns image attachmentsefe0c7c
  • Featurepublic route + PDF embed for per-field reference images2256299
  • Fixflatten workerInfo onto each row so submittedBy column populates8b01ebb
  • Featureauto_unique_number — submit-stamped sequence valuea1e43f7
  • Featurepreview also fetches attachmentsfac7b17
  • Featureper-field reference images on builder + form rendererf7fe436
  • Featuredrag-and-drop step reorder + drag handle559501f
  • FeatureOpen Share Link row action — opens public form in new tab67139db
  • Fixsingle-line "Submitted by" covers every name/email combo30ff6e1
InvoiceSmart7 updates
  • Featurefetch features+pageAccess from /profile, not JWT (ticket 2295927b)38dd191
  • Fixrefresh aione-auth token on 401 instead of bouncing to /login (f395e02a)a7c1ce5
  • Fixstack Duplicate tag under reference so it stops overlapping Amount (080af6f0)e6dc450
  • Featuredefer DueDate to Xero contact PaymentTerms (e3100f9d)dad384a
  • FixUK date parse for invoice/due date imports (bee08d0c)26f3932
  • Fixauto-paginate Xero contacts so customer match works past M (2739c6f5)87afa6f
  • Fixretry Xero 429s + truthful consolidation counts (d445370d)fbcc6cc
MapSmart13 updates
  • Updatedrop trigram index from migration 076c88444e
  • Featureper-property notes for Assisted Collectionsadd1d18
  • Featurereseller dashboard sandbox badge + filter + reset783a798
  • FixVariable Services Edit Round accepts arbitrary round names5e3b44e
  • Fixadd USRN column to Variable + Fixed services exporta0676cc
  • Fixadd USRN column to Fixed Services (ServicesPage) table0160c22
  • Fixshow USRN as a column in Variable + Fixed services tablesc31d840
  • Fixinclude USRN in Waste/variable/fixed services search filtera66a45b
  • Fixpopulate Variable Services Round filter + add Unassigned bucketd50c368
  • Fixseed UPRN coord jitter by UPRN id so matrix cache hitse50da07
  • Updategitignore docker-compose.override.yml + document prod overlay (ticket bf2ff24c)6ba0efc
  • Featurematch entity-access modal to admin.aione style5f393af
  • Featureadd Risk Type filter to Risks page566c0c6
Platform15 updates
  • Featureexpose per-product org IDs on /auth/med509cb2
  • Fixadd DashSmart to Products tab list3fbe7de
  • Featurestrip features+pageAccess from JWT (ticket 2295927b — final)292a7ac
  • Featureflowsmart /profile returns features+pageAccess (ticket 2295927b)90d4b01
  • Featureregister DashSmart product across aione-auth + admin portal20f6138
  • Featureinvoicesmart /profile endpoint (ticket 2295927b)07e83b3
  • Featuresolvesmart + modelsmart /profile endpoints (ticket 2295927b)eace3f4
  • Featureinventorysmart /profile endpoint (ticket 2295927b)83068b9
  • Fixcontain Users table scroll to its card9739d79
  • Fixswap Organisation column for Role/Access when org selected50b22a6
  • Fixhide Role/Access columns until an org is selected9a174d3
  • Fixwiden Organisations card on Products page1aab57b
  • Improvementstop using salessmartOrgId / inventorysmartOrgId in app code443fbbd
  • Featureinline reseller toggle on Products page88b9f9c
  • Fixscope /auth/logout revocation to the calling device534aa4e
SolveSmart37 updates
  • Featureintroduce Valhalla matrix client for truck-aware routinga625b60
  • Fixuse top-level crypto import instead of require()343df20
  • Fixtype-only imports for express types470bbc5
  • Featureadapter endpoints for DashSmart over MS/SS entities2c9eff3
  • Featureteam_member_at_index transform for Installer2/3/N (620fc13d)0462778
  • Fixshow effective clock-time on stop popups for team-allocated jobs (ace09fe2)1fd8c87
  • Fixbuild URL as <base>/api/products/... (ticket 2295927b)edc8c13
  • Fixrelative Location header so /docs redirect stays on HTTPS4cdf43c
  • Featurehost-friendly /docs and /openapi.json shortcutseab9d80
  • DocsOpenAPI spec for Bundle B + C endpointsf970985
  • FeatureSS+MS frontends fetch features+pageAccess from /profile (ticket 2295927b)8c5f924
  • FeatureBundle B — POST /jobs inbound + template discovery (5f81878d)a00722e
  • FixBundle C — read-back dispatches + planned route stops (cf0a15b9)9d00c91
  • Fixexpose maxJobsByDow + customMaxJobsByDow in project getter (ticket 6c3e6654)1174179
  • FeaturecustomRates via template (4dac5c59)beed31f
  • Featuresurface why a solve returned 0 routes (ticket ad9948c2)56a7cbe
  • Improvementre-export workflow types from @aione/workflow-components1b383a0
  • Featuresurface vehicle class on route picker + cycler (ticket d0141f8f)c9e60d6
  • Featurestamp auto_unique_number on mobile submit gates331335a
  • Fixsummary cells now mirror conditional columns (ticket 19ebd546)9e8ba4c
  • Featureport auto_unique_number field type from FlowSmart9e9e26e
  • Featureoperational/finance contacts JSON arrays (c4d2b86f)d7afabb
  • Fixround 4 — mileage uses team's own routes, not member PKs (ticket 6873d5be)9ff2b3e
  • Updateadaptive budget cap + looser early_stop coefficientea1fa8d
  • Featureauto-import templates in Planning room (30b3abd8)9efc6e6
  • Fixround 3 of workflow acceptance UX (ticket 9b9352e1)cff73bd
  • Featuresubmission management — view, approve, bulk export (mike.stewart dd0f16cf)166c0bd
  • Fixsort non-suffixed base routes by real first-stop timeff0e04e
  • Fixorientation bug + CSV support (mike.stewart d7a5360a)d6eaf9f
  • Fixapply night-shift +1440min overflow at vehicle import87c0dc5
  • Fixovernight shift overrides — encode end+1440min for IVR72ae07e4
  • Fixbulk + single shift edit must produce complete shiftsc52f215
  • Featurebulk edit shift times for selected vehicles4a1181d
  • Fixsurface declined visits across admin viewsfd08742
  • Fixallow resume from skipped + lock SOD/EOD after submission1659e7d
  • Featureextend skill merge mode to conditional + default rules5e49f16
  • Fixfriendly cross-org error when vehicle reg already registeredf593409
Wednesday, 6 May 20262026-05-06
AIOne Mobile4 updates
  • Fixroute failed/offline workflow submissions to MapSmart queue, not ModelSmart (0dc01b35)fb3964b
  • Featureshow reviewer feedback on rejected workflow (4aa6cffa)c332398
  • Fixgate visit-detail UI behind acceptance (9b9352e1)6b82d19
  • Fixrework SOD/EOD/per-job workflow triggers (5c0eafa3)bacea02
AssetSmart1 update
  • Fixmigrate to Next.js 15 / @sentry/nextjs v9 instrumentation files70846ae
FlowSmart17 updates
  • Fixstop the footer pass creating phantom pagese5c4234
  • Fixfilter by productCode through the template joinedd25b8
  • Fixset productCode on public-form submissionsa742dd9
  • Fixembed workflow logo in PDF header1923e0e
  • Fixreset cursor x after the metadata block so page 1 isn't right-aligned8080288
  • Fixserver-side required-field validation on final submit773ced3
  • Fixlogo URL on public form + PDF generation pages2ae1e63
  • Featureadmin force-delete for non-pending submissionsc06ac41
  • Improvementreject invalid Likert state instead of merging silently0ff4f73
  • Fixpreserve field config arrays/strings on empty-overwrite save842ba2c
  • Fixdefault productCode to template's value on create3a1e823
  • Featureclone-to-org support for reseller hierarchy7bba1f2
  • Featuremake status tag clickable to open detail modalb0ad5e1
  • Fixno behavior change — pin dist after pulling logo type48d057e
  • Fixlay out anchor labels left/centre/right via flex6b92feb
  • Fixload scale/likert/file config back into form on edit9feb706
  • FeatureonCloneToClient prop for reseller flow92b72a0
InvoiceSmart1 update
  • Improvementserve req.user.role from JWT-derived localRole, not DB round-trip6ff9314
MapSmart7 updates
  • FixSOD/EOD/segment/group submit fails with 'No resource profile linked' when admin did not link user_id at create time144ccd8
  • Fixmake depot tab badges day-aware in Fleet Summarye41bc70
  • Fixregister label-import endpoints for streaming flow + relocate Import Labels buttoned27a46
  • Featureadd Import Labels (append) to UPRN Manage Labels drawer20b423e
  • Fixscheduler should only bundle by work-type segment groups82d9afa
  • Fixmake sweeper Fleet Summary unplanned counts day-level, not per-vehicle6ba6455
  • Fixreconcile schedule with unassigned_segments after route_builderf59f4ed
Platform11 updates
  • Fixtighter mobile org picker — resource for SS/MS/MapSmart, PA+flag for auth-only, plus scope narrowingf3f2583
  • Fixinclude FlowSmart/TrainSmart/etc orgs in the mobile org pickerd33155e
  • Featureuser-add to clients + ProductAccess on createChildd1cc94b
  • FixcamelCase refresh token contract to match aione-authcd57547
  • Improvementstop reading/writing aione-auth's UserOrganisation.role761f3f5
  • Fixrestore organisations[].role for mobile, sourced from PAb943fb4
  • Improvementdrop UserOrganisation.role from /auth/me + sso responsesa828362
  • Improvementdrop dead UserOrganisation.role fallback in buildProductsMap1b76033
  • Featurehierarchy schema, endpoints, JWT claims, admin-portal tabad80b09
  • Fixstop other-org PA rows from polluting active-org product role978f240
  • Featureadd /api/users/org-members for non-superadmin org listing4aba949
SolveSmart6 updates
  • Fixexpand repeated steps in approval submission view (ticket a069fc1d)3e510d9
  • Fixexpose maxJobsByDow + customMaxJobsByDow in resource read paths (ticket 6c3e6654)b5c97a5
  • Fixmileage lookup uses Int-PK string + sums team-member routes (ticket 6873d5be)b8c5239
  • Fixcontextual solo-assignment block message (ticket 9e2bb0a4)cf27a20
  • Featureexpose workflow rejection comment to mobile (4aa6cffa)039d40c
  • Fixgate submitVisitWorkflow with acceptance check (9b9352e1)351e0ac
Tuesday, 5 May 20262026-05-05
AIOne Mobile3 updates
  • Featurerender divider + spacer field types1789233
  • Featurerender scale, likert, email, phone field types8a8699a
  • Fixuse new SS-mobile workflow endpoints (4c627f35)56a96fe
FlowSmart9 updates
  • Featurehandle divider + spacer in PDF + CSV exports6d99416
  • Fixorg-scope guard on multi-tenant Prisma queriesd5a3004
  • Fixpass productCode to getOrganisationId on all routes4f3371b
  • Featurerender scale, likert, email, phone, file field values8c4c08c
  • Featureadd divider + spacer field types + wire onReorderField in WorkflowBuilderPage3a9cce2
  • Featureport MS-rich StepEditor + FieldEditor as the canonical shared buildercefdaf1
  • Fixcap field-type dropdown to 360px with scroll6839c15
  • Featureadd `disabled` prop to WorkflowFormRenderer + SignaturePad (a68b9814)9cb8d40
  • Featureadd scale, likert, email, phone, file field typesf24fb69
InvoiceSmart2 updates
  • Removedremove dead Azure/Google passport config (post-93ff6ea0 cleanup)f7f6f8a
  • Featureper-org duplicate-detection mode7ed9d2a
MapSmart13 updates
  • Fixderive sweeper sla_priority from SLA_OCCURRENCES_PER_YEAR5691af5
  • Fixmake schedule week-card title visible in dark mode525633b
  • Featureinclude USRN in Active Locations export1ba507f
  • Fixshow Week 1..N (not Month 1/2) for week-based SLA schedulese6e1b6f
  • Featureround-trip Time Windows through Active Locations import/exporte66d63d
  • Fixdefault new sweeping service color to a real hex639976b
  • Featureextend Sweeper SLA frequencies to 5-12 weekscd7fd4b
  • Fixreplace Labels on UPRN re-import instead of merging74702e1
  • Updatesync vendored copy to upstream master (a68b9814 + 3a9cce2)b1b6406
  • Fixdrop hardcoded geoedit-rds-db refs in ops scripts2979dda
  • Fixwhite-label hostname brand wins over user's session brand9d353c7
  • Fixadd dnspython to requirements-docker.txtf1ed7d2
  • Featureon-demand Let's Encrypt TLS for white-label custom URLs6106794
Platform1 update
  • Featureduplicate-detection mode dropdown for InvoiceSmart org settings4442368
SolveSmart12 updates
  • Featureadd divider + spacer field typesdeb53fb
  • Fixmileage cost lookup used wrong resource key1dba792
  • Featureconsume shared StepEditor + FieldEditor (delete local copies)3667c33
  • Featureadd `disabled` prop + swap MS WorkflowPreviewModal onto shared rendererca5aace
  • Fixnormalise location.id → locationId before RouteOne POST04819c7
  • Featurehoist WorkflowFormRenderer + SignaturePad + computeSummary1386f78
  • Featurevendor @aione/workflow-components into ss-monorepo (a68b9814)a87d4b3
  • Fixvisible solid-radio text + matching legend/pin colours533f66e
  • Fixresolve resource names + add employment/skills/exportd4e4447
  • Fixavailability panel must not nest a <form> in resource modala49bb05
  • Featureadd scale, likert, email, phone, file field typeseb86b88
  • Featureadd resource-aware workflow submission endpoints (4c627f35)a64542f
Monday, 4 May 20262026-05-04
AIOne Mobile10 updates
  • Featuregeneral exception FAB on Schedule tab (all 3 products)71d00aa
  • Featurewire report button on MapSmart group detail screen7206929
  • Fixdrivers can never see an empty Job Card9b61c95
  • Featurerender configured Job Card layout + sections (v2)3faac70
  • Featurepass linkedJobDate from the calling screen3db3bfb
  • Featurehonour per-org Job Card visibility config11cceab
  • Fixfriendly Alert when starting without accepting first283e698
  • Featuresuccess-tick confirmation before modal closesb255f2b
  • Fixwire button on the schedule-tab visit detail tooda4f4ee
  • Featuremobile reporting modal + offline queue + 3 entry points8a94375
AssetSmart3 updates
  • Featurewire Sentry DSN for assetsmart-frontend build1c3e26b
  • Featureadd @sentry/nextjs to AssetSmart frontende59ff86
  • Featureadd @sentry/node init to AssetSmart backend08320bd
FlowSmart1 update
  • Featureadd @sentry/node init3657dfc
InvoiceSmart4 updates
  • Fixself-heal frontend proxy across backend recreates309fe90
  • Featurewire Sentry DSN for invoicesmart-frontend buildcc22e89
  • Featureadd @sentry/react init to InvoiceSmart frontend3b1131f
  • Featureadd @sentry/node init to InvoiceSmart backenda5f68af
MapSmart19 updates
  • Fixself-heal frontend proxy across backend recreates38dbe21
  • Featureper-type slice for /next-collections (FCC Mayrise parity)acbed69
  • Fixhide Omnia admin emails from reseller-facing audit log7a2011e
  • Fixdrop nginx backfill - audit trail starts at deployf08b7fe
  • Featureadmin_access_log audit trail for reseller GDPR responsesacbe785
  • Featuredrawer surfaces 'GENERAL' tag for unlinked reports5e4232b
  • Fixshow 'General' instead of em-dash for unlinked rows64abf5d
  • Fixchip arrival defaults Control Tower to table viewe3c9f37
  • Featureauto-select drivers + clarify urgent banner copyb1cfec9
  • Featuretreat 'ungrouped' as a real focus bucket on chip nav050e900
  • Featurecontrol tower filters segments to linked group on chip nav6d5b21a
  • Fixinclude exceptions_enabled in switch_entity response814f6b3
  • Fixemail fallback applies to all resource lookups4694911
  • Fix/my-profile falls back to email when resource user_id null6c7292a
  • Featurewire Sentry DSN for mapsmart-frontend build6469734
  • Featureadd @sentry/react init to MapSmart frontend254ff7e
  • Featurechip nav uses linkedJobDate, falls back to reportedAtUtc63f7ad8
  • Featurelinked-segment chips land on the segment's date42317f2
  • Featuremini-map preview in detail drawer0fca07c
Platform14 updates
  • Fixexpose productAccess.organisationId for per-org role lookups29499c6
  • Fixaccept editor/viewer roles + drop hardcoded 'member' defaulte41aa9d
  • Fixscope-aware org auto-select on product SSO loginfe969e6
  • Fixkeep ms_wfApprovals adjacent to Workflows in MS_MODULEScb1f8d1
  • Featureexpose MS billing as toggleable module in Features & Accessd40763a
  • Featureadd 'billing' feature for the MS billing dashboard0fb7590
  • Fixauto-grant new module routes to admin/manager pageAccess475ceaf
  • Fixsweeper-resource access overrides has_mapsmart_access flag9d97fee
  • Featurewire Sentry DSN for aione-auth-frontend build94da3ed
  • Fixpersist product scope as a token claim so refresh preserves it36ae592
  • Featureadd @sentry/react init to aione-auth admin portal4023111
  • Fixadd 30s reuse-grace window to survive aione-auth restartsa735250
  • Featureadd @sentry/node init (no-op without SENTRY_DSN)f2d009e
  • Featureinclude user.name in token payload864c27c
SolveSmart49 updates
  • Fixjobs lookup prefers dropoff row + correct stopType enuma1b9250
  • Featurejobs status lookup endpoints (Bundle A) + inventory script512437a
  • Fixself-heal frontend proxy across backend recreatesea40625
  • Fixredirect bare /api/v1/<product> root to /docseefb42a
  • Featuremulti-contact notification routinga332b2f
  • Fixreinstall sharp with --include=optional after prune16953cc
  • Featurepublic v1 API — workflow PDFs by consignment numbercee00b2
  • Testunblock full vitest run — pool=forks + raised heapd140a5f
  • Fixgate Billing tab on /ms-billing access, single switch52f5c99
  • Featuretemplate + rules support for customer tab importb34b753
  • Fixgate Billing tab on isEnabled('billing'), not pageAccess6eb8d6a
  • Fixpin is-stream as direct dep so prune doesn't drop itd0720c6
  • Fixtargeted lockfile entry for uuid@14 (no full regen)a3c4074
  • Featureper-org billing dashboard — count-only, two billing models62ab49d
  • Fixdrop ParamsFlatDictionary generic — not in old typesb5d58d2
  • Fixrollback lockfile regen from d804a13e937f8a
  • Fixadd process + readable-stream as direct deps2606f6e
  • Fixadd explicit is-stream dep for archiverbe0fc48
  • Fixunbreak master TypeScript after lockfile regend35b706
  • Featureadd merge-mode toggle to skill assignment rules93e70be
  • Featuredrawer surfaces 'GENERAL' tag for unlinked reportsc50b179
  • Featurepartial-day resource availability windows5114a50
  • Fixshow 'General' instead of em-dash for unlinked rowsd9d1e7c
  • Fixregenerate lockfile to satisfy uuid@^14 + uuid overrided804a13
  • Fixclarify urgent banner copy4428d51
  • Featuremap view of all org resources with colour-by + legend1ba4d62
  • Featurepersist + download the original source filee9a54df
  • Featureper-day-of-week max-jobs cap on resources + assignmentsac5c552
  • Featurewire Sentry DSN for ss-monorepo frontend build1c10e68
  • Fixheal single-brace column/formula refs7f5cf38
  • Fixper-job overlap detection + auto-rename on confirm85990ad
  • Fixfall back to hourly/daily/job rate when legacy costRate is 030240e5
  • Featureadd @sentry/react init to ss-monorepo frontend990bec4
  • Improvementsingle source of truth for Job Card defaultsb106998
  • Fixshow vehicle skills on the floating route stats overlay1bf93d4
  • Fixmerge eval enrichment over solve skills, don't replace87c9717
  • Fixformal default state for Job Card layout — drivers can never see empty00d440d
  • FixJob Card configurator no longer renders empty on loadf25a77b
  • Featureadd @sentry/node init to ss-monorepo backend5588e27
  • Featureadd migration doctor workflow on push/PR to master649643c
  • FixJob Card configurator — top toolbar + auto-scroll on add25751de
  • Fixland on table view when arriving via SS chipa6c6071
  • Featuredrag-orderable Job Card layout + section grouping (v2)aa6f403
  • Featurechip click filters table to just the linked job2df2aea
  • Featurechip nav uses linkedJobDate, falls back to reportedAtUtcc8eb135
  • Featureper-org Job Card visibility configuratord88d8b2
  • Featurelinked-job chips deep-link to date + focus row6a47444
  • Fixenforce visit acceptance on mobile + surface declined visits37b4170
  • Featuremini-map preview in detail drawera771645
Sunday, 3 May 20262026-05-03
AIOne Mobile3 updates
  • Fixapply theme-dynamic colors inline, not via StyleSheet6b2455a
  • Fixfix BST infinite loop in addDays that froze map view59621ad
  • Fixshow empty-state before HERE SDK gate on map viewc7dd1fd
InvoiceSmart2 updates
  • Fixnormalize email on user write paths27396cc
  • Featurewarn before re-sending an already-sent reference to Xerofb8eb47
MapSmart11 updates
  • Fixmint exceptions JWT via /refresh_token, not localStoragea47706e
  • Fixdrop sweeper-only restriction on Exceptions sidebarf82f542
  • Fixregister exceptions_enabled in EntitySchema678939d
  • Featureper-entity 'exceptions_enabled' flag gates exception UI82c0b13
  • Fixinline Add button + hint above tablee95f2ad
  • Featureuse shared ExceptionsSettingsTab on the standalone page913c050
  • Fixalign with AntD 6 + workflow-components types6655f05
  • UIvite-only Docker build to bypass pre-existing tsc errorsfc55136
  • Fixrewrite settings tabs to match ApiKeysTab patternb1f8e21
  • FeatureMapSmart control-room + setup config733abec
  • UpdateStores scripts: honour DB_PORT env so non-default Postgres ports workfd4a317
Platform4 updates
  • Featureroute→feature map entries for /exceptions + /ms-exceptions70f6425
  • Feature'Enable Exceptions' toggle on the MapSmart entity edit modal8422ae9
  • Featureadd 'exceptions' flag to SS + MS modules88540b2
  • Featureregister importTemplates feature + /import-templates page accessf1be590
SolveSmart15 updates
  • Featureadd pre-push doctor:db gate for prisma/ changes87ff9fe
  • Fixdeclare missing @@index([workflowTemplateId]) on Location7e6ed98
  • UIbump nodemailer ^7→^8 + frontend uuid + workspace overridesbb7c4f3
  • Fixuse --to-schema (Prisma removed --to-schema-datamodel)ea55c13
  • Fixnpm audit fix — resolve protobufjs + fast-xml-parser criticals9b519bb
  • Fixdrop redundant header block — use DataTable's toolbar slot950f0bb
  • Featuresingle Exceptions tab with Types + Notifications sub-tabs89feff2
  • Featuregate settings tabs by isEnabled('exceptions')c81f769
  • Fixrewrite settings tabs to match ApiKeysTab patternfa74e9d
  • FeatureSS+MS control-room — list page, drawer, settings tabsb06bb52
  • Fixcorrect resourceType and employmentType enumsf284728
  • Fixuse ModelSmart favicon and brandmark on API docs pageb94a6be
  • Featurelink API docs from API Keys tabb7884c3
  • Featurepublic API docs at /api/v1/modelsmart/docs7e8d874
  • Fixreplace hardcoded 2025 holiday list with date-holidays libef8be1e
Saturday, 2 May 20262026-05-02
AIOne Mobile1 update
  • Fixrevert MS SSO to WebBrowser flowc6d6be1
Friday, 1 May 20262026-05-01
MapSmart2 updates
  • Fixjoin Labels list before export, not the renamed UI columnede4ba0
  • Featureexport Labels column for Active Locations727e4c8
Platform1 update
  • FixRole filter/sort + filtered-export on SolveSmart/ModelSmart users00183bf
Thursday, 30 April 20262026-04-30
MapSmart4 updates
  • FixBranding tab: refetch on modal close, drop temp debug log2ff2c1c
  • UpdateTemp: log reseller branding PUT payload to trace external_domain wipea114262
  • UpdateBranding: GET reseller external_domain + reseller-dashboard branding tabd743250
  • ImprovementRemove dead normHex helper after diff-only refactorcd9bfd7
Wednesday, 29 April 20262026-04-29
AIOne Mobile4 updates
  • Feature"Forgot which sign-in method?" link + broader hint screen55ea47c
  • UIbump versionCode to 25 (EAS remote-build auto-increment)7add4c0
  • Fixfinalize 1.4.0 build + fix manifestPlaceholders for native MS SSO6d154e1
  • Fixexplicit HERE init on SS Map tab so productMode race can't strand spinner633ebf8
FlowSmart4 updates
  • FixFix AWS_REGION in .env.example (eu-west-1 -> eu-west-2)31fdc80
  • FeatureAdd flowsmart.aione.uk to CORS_ORIGINS example71bed29
  • Fixexpand dynamic-step-repetition instances in submission view16f691d
  • FeatureAdd pre-push hook to catch stale dist/ (closes ticket 784f0930)5cb39c5
MapSmart39 updates
  • UpdateBranding modal: skip undefined form values + forceRender every tabfad1102
  • UpdateBranding modal: only send changed fields, never silently overwriteb00b26d
  • FixFix NameError in UPRN snap when point falls outside grid indexd086e1c
  • FixWhite-label fail-closed: never leak MapSmart on unresolved hostnames721fbd8
  • UpdateCustom URL: TLS step in instructions + dynamic CORS for white-label hostnames5b2f5dc
  • UpdateCustom URL tab: live hostname in DNS instructions + export recordsc089352
  • Feature'Continue in background' + ETA + floating progress chipe0081e0
  • Fixdrop application/x-ndjson from Flask-Compress so progress streams reach the browserc91c4f2
  • Fixswitch BoundarySelector tiles to openstreetmap.de (matches rest of app)6fa4ad6
  • Fixtwo more bugs caught in WS demo prepa1fc0e4
  • Featurereseller-level external_domain — host->reseller resolution + Custom URL tabfb37c45
  • Fixkill the MapSmart-flash white-label flicker on first paint1631610
  • Fixpluralisation bug + lock entity-level email-sending behind reseller cascadee8b9938
  • Fixbrandmark_url falls through to logo_url when tenant has no overridee46577c
  • Featuresingle Export-records dropdown + PDF, matches green-button-ghost stylingea59898
  • Fixuse getFieldsValue(true) so Tabs lazy-mount can't drop untouched-tab fieldsc9177f4
  • Fixexport DKIM records as CSV/JSON/text + fix value cut-offdace67c
  • Fixlicense_type must be one of monthly/quarterly/annual/custom — perpetual rejected by CHECK constraintf3f6ff2
  • Featureone-shot script to wipe + reseed WS entities in public schema for the production-shape demo experience560c21f
  • Fixv_entity_summary now reads from the right schema per entitycb6c49f
  • Fixallow collection time below 10s on service type form907f9a9
  • FeatureUPRN bulk import accepts semicolon-delimited Labels columnf998fe6
  • Fixdrop spurious 'Name' field from EventDestination payload — that name is the top-level EventDestinationName parameter, not part of the inner dictf748fc1
  • FixSES Phase 3 deployment fixes — index predicate immutability + drop cosmetic Tagsc208014
  • FeatureSES Phase 3 — bounce/complaint pipeline + per-reseller email identity APIb9ed362
  • UpdateDrop legacy X-Organisation-Id / X-User-Id headers from import-templates clientf53f5d9
  • UpdateRevert "Drop legacy X-Organisation-Id / X-User-Id headers from import-templates client"c05dcba
  • UpdateDrop legacy X-Organisation-Id / X-User-Id headers from import-templates client5311feb
  • UpdateMint and send JWT to aione-import-templates (security ticket 37602e5e)4337697
  • FixUPRN UPSERT uses composite (uprn, entity_id) — matches actual primary key66e77b4
  • Featurewire up the integration API — 50+ endpoints over real dataa981564
  • Fixpolish — reseller pointer in quickstart, fix reference packet shape, soften sandbox solver claim4c13af5
  • Fixstop entity edit form from sending non-editable DB columns30e40d3
  • Fixvehicle registration includes entity_id to avoid UNIQUE collisions across sandbox tenants1903497
  • Featurereseller-scoped admin API for managing customer entities at scale20aec68
  • Fixhub_type uses uppercase START/TIP per existing CHECK constraint546ab74
  • Featuresandbox seed + reset endpoint + provisioning + docsbdd4a25
  • Fixsandbox foundation — schema clone, key prefix routing, env header6bc02a3
  • Fixfull domain rewrite — Fixed/Variable services, Fleet, Hubs, Reports, Risk16201d1
Platform2 updates
  • Fixkick user out on fatal refresh failure + bootstrap exp-check6820a01
  • Fixname the SSO provider in the wrong-method login error3144c98
SolveSmart18 updates
  • Fixstop falling back to legacy costRate in the table04384d2
  • Fixexpand dynamic-step-repetition instances in submission viewd6dd657
  • Fixcarry per-job workflowTemplateId from import-rule blob3ab6122
  • Fixpush qty/weight updates from edited solve to live dispatch00429fa
  • FeatureNDD toggle in scenario builder modal (ticket d5a3cfe1)49b5667
  • Featureauto-detect NDD candidate projects on bulk import (ticket d5a3cfe1)dd21afc
  • Featuresurface NDD frontier picker from SolveHistoryPanel (ticket d5a3cfe1)e1fcbf5
  • FeatureNDD frontier picker modal + Evaluate API client (ticket d5a3cfe1)5bf920a
  • Featurewire NDD Optimise + Evaluate into controller and routes (ticket d5a3cfe1)bd14ffd
  • FeatureNDD SolutionInstance → MSProjectSolveResults converter (ticket d5a3cfe1)2514048
  • FeatureNDD envelope builder for IcePack Optimise + Evaluate (ticket d5a3cfe1)7bf6b21
  • Featureadd NDD allowable-cycle generator + tests (ticket d5a3cfe1)4e514b3
  • FeatureNDD proto codegen pipeline + generated bindings (ticket d5a3cfe1)ba9ad2d
  • Featureadd nddSuggested hint flag to ModelSmartProject (ticket d5a3cfe1)923b732
  • Featureadd NDD two-shot solve columns to ModelSmartSolve (ticket d5a3cfe1)0807d04
  • Featureadd NDD solver opt-in columns to ModelSmartOptimisation (ticket d5a3cfe1)9c81950
  • Fixadd MapSearchBox to Resource Analysis map (ticket b052aedf)a32ad25
  • Fixread shift duration from window width, not gap between windows0214e75
Tuesday, 28 April 20262026-04-28
MapSmart9 updates
  • Fixstop import-progress endpoint from killing the DB poolec7f798
  • Fixrelease DB connection on get_available_rounds errorc44ef8f
  • Fixvariable service Round filter loads quickly12ed4e2
  • Fixroad segment search treats road-name abbreviations as equivalenta053de4
  • Fixroad segment search — phrase matching + relevance ordering1ebc708
  • Fixroad clusters right panel scrolls on small laptop screens8d0b976
  • Featurecode samples, quickstart, webhooks, errors, idempotency, glossarya0c6543
  • FixRedoc removeChild crash + async bulk-import endpoints6dc68f6
  • Featurepublic API docs portal — Redoc + OpenAPI 3.x spec8a3975d
Monday, 27 April 20262026-04-27
AIOne Mobile6 updates
  • Updateuse literal runtimeVersion strings for bare-workflow EAS6ea2205
  • Featurenative Microsoft Sign-In via react-native-app-auth5b07f99
  • Fixtimeout GPS capture on stop detail "Start Work" so it doesn't hangc75ff01
  • Fixexpose product switcher on FlowSmart settings tabde29307
  • Fixtimeout + error path for map view to escape infinite spinnercbc8b43
  • Fixkeep stop action sheet usable on iPhone when typing notes7bb3f82
InvoiceSmart1 update
  • Fixroute header tagline through accessible text tokendb1f440
MapSmart52 updates
  • Featurewire SES email helper into existing senders + branding modals4df8c2c
  • FeatureSES per-tenant sending identity (DMARC-aligned email)5977fb3
  • Featurewire backend brand strings (PDF + email)2c11def
  • Featurewire user-facing brand strings to BrandingContext1d3658d
  • Fixnginx — make /api/ location beat static regex match91f242a
  • Fixbranding asset proxy + click-to-zoom previews03cc8b3
  • Fixbranding raw-fetch SELECTs only stored columns + tabbed modal8505694
  • Featurevariable-service import — surface top reasons in result toast41c5d0b
  • Fixbridge_height — wire to auto-risk trigger + backfillaea54ea
  • Featurebridge height on Low Bridge risks + bridge icon on mapae23579
  • Fixentity edit modal — submit full form state across all tabs4e2f840
  • Fixsurface duplicate-username error on add user endpoint39b3a9d
  • Fixsplit brand logo (wordmark) from brandmark (header symbol)a3007b6
  • Featureswap in MapSmart brand assets + sweep long-tail hex687cdd7
  • Improvementdrive all colour through theme tokens (CSS vars)14922b5
  • FixapiV2Adapter — map /branding to /api/v2/branding2609d03
  • Featureper-entity branding modal — reseller dashboard + admin settings2645551
  • Featurebranding cascade — reseller branding follows reseller_admin ind6c2a0c
  • Fixreseller Add Entity button + modal copy match admin SettingsPage2bd58d4
  • Featurereseller create-entity modal — Enable ERP Column Mapping toggle00c5373
  • Fixvariable-service template now exposes Day/Round Cluster columns4c1596b
  • Fixvariable-service import accepts Day/Round Cluster columnsdfa4792
  • Fixreseller entities table — disable virtual scroll for expandable4480946
  • Featurereseller dashboard compact stats + DataTable + per-column sort/filter80b00fc
  • FixEntityRequiredRoute wrapper kills entity-scoped 403 toasts on exit57150f7
  • FixStatusPage skips fetches when no entity context173befd
  • FixbackToDashboard navigation — use react-router instead of window.href8d908a4
  • FixbackToDashboard preserves entity_id (User type requires it)a135a31
  • FixbackToDashboard — drop entity_id field instead of null057c656
  • Fixproper exit-entity-context flow + reseller-admin route guard0814a1c
  • Featurereseller_admin View entity — operate as admin + back banner8ff4a02
  • Fixreseller View entity — release spinner + redirect on success57bcf30
  • Fixper-entity service-types returns active_uprn_count + active_service_countd6f2ff0
  • Fixsweep reseller surface for recursion + URL anti-patternsfe57272
  • Fixreseller dashboard response shape matches frontend contractff2d577
  • Fixlinked-only risks export is now scope-aware (drops cross-border segments)3eb1e62
  • Featurerisks export — second download flavour for linked-properties-onlya463c8c
  • Fixcarry USRN through to Active Locations table + handle .0-suffixed segment uprns in risk exportfab635e
  • Featureexpose USRN — Active Locations table column + risks RA01 exporte61a3a8
  • Fixdrop client-side prepopulate-button disable (auth-context entity is stale after Settings save)d615d65
  • Fixedit_entity preserves untouched fields (defensive COALESCE)790cdbc
  • Fixdisable Prepopulate UPRNs button when entity has no boundary9580ce6
  • Fixactive sweeping services page — drop VITE_API_BASE_URL prefix9638289
  • Fixvariable-service import banner stops lingering after a completed import52550ee
  • Fixvariable services map+table — week matrix coloring, day count, collection days filtere333888
  • Fixvariable-service import modal blocks click while another import is running + clearer error toast903b357
  • Fixvariable-service import handles pandas NaN + multi-day cells683122c
  • Fixvariable-services geojson stream: coerce NaN floats so JSON.parse doesn't reject the chunk87fbc1c
  • Fixclear stale variable-service filter state + auto-refresh on import complete3b9b947
  • Fixreseller dashboard endpoints — kill recursion + add statscfb6865
  • Featurevariable-service import lock + persistent progress bannerdb1e132
  • Fixdrop ACL=public-read from branding S3 uploads71a99b7
Platform3 updates
  • FixRole column filter/sort + filtered-export on Products usersc2e1ae0
  • Featureadd native MSAL id-token endpoint + retrofit normalizeEmail06807ef
  • FixMapSmart Edit Organisation modal now displays the saved territory0568b52
SolveSmart41 updates
  • Fixrespect brandingEnabled=false for logo too, not just colours064e0a7
  • Fixkill remaining teal — modal header gradient + duplicate stat-card before rule639ad64
  • Fixhardcode MSStatCard colours to orange — kill teal-leak failure modef5d4b0a
  • Fixportaled modals/dropdowns inherit brand tokens via body:has()613fca0
  • Featureswap /logo-full.png to new AIOne wordmark for selectors91213b3
  • Fixbump link colour to spec #c45e00 for accessibilityd81fb3b
  • Featuredrop MapSearchBox into Resource Analysis, Visit Scheduling, and Control Roomb670ff7
  • Fixscope Ant Design colorPrimary per product, drop hardcoded #1677ff21cab6f
  • Featuregeocode postcodes during import so lat/lng land on first save7691e8b
  • Fixenforce requireLoadedBeforeStart server-side, not just in the day lista2116ba
  • Fixapply ExcelJS cell-to-text normalisation in the frontend wizard too141405b
  • Fixnarrow schema-edit guard to actively in-progress submissions14624dc
  • Fixallow editing accountNumber when customer was imported without onebba79a2
  • Fixresolve vehicle by registration so workflow config reaches device947134a
  • Fixdefensive numeric coercion on commit + surface backend error (#abdd3917)37649f6
  • Featurejob-type, single date+time pickers, location precheck, edit-pre-approval (#e5245aaa)484f4c7
  • Featurecustomer-scoped public job submission portal (#e5245aaa)f334c02
  • Fixpin page to viewport so timeline/table scroll inside (#805c5341)14df41c
  • Fixapply Colleen's RAG palette to capacity indicators (#c03ac04a)dda9301
  • Fixdrop diagnostic logs from resequence (#8433ef0f)6ce443d
  • Fixrebuild shiftStart from scratch + anchor to last completed dropoff +5m (#8433ef0f)5b0fd28
  • Fixdiag(ss/dispatch): log shift-start window before/after + first solver stops (#8433ef0f)7760320
  • FixcompletedStops counts dropoffs only, matching totalStops244609b
  • Fixbulk-stops uses post-resequence snapshot to classify stop types (#8433ef0f)21067aa
  • Fixpill strip width 115px (#8433ef0f)5483672
  • Fixpill strip width 110px (#8433ef0f)3cbfb34
  • Fixpill strip width 100px (#8433ef0f)7263dd9
  • Fixpill strip width 90px (#8433ef0f)97a562d
  • Fixtable rows render reliably + narrower pill strip (#8433ef0f)38958c1
  • Fixpill strip width matches stop-status legend (#8433ef0f)edd90f0
  • Featurewider map pills with postcode (#8433ef0f)15b0aa3
  • Fixtable tab shows all stops again; drag still gated to pending dropoffs (#8433ef0f)d742552
  • Fixmap pill strip starts below stop-status legend (#8433ef0f)c5d9a4f
  • Fixreorder views show only pending dropoffs (#8433ef0f)692770a
  • Featuredrag-to-reorder on Map + Table tabs (#8433ef0f)05bf849
  • Fixdrag handles now render — propagate assignmentId per stop (#8433ef0f)44c2e43
  • Featuredrag-to-reorder pending dropoffs in timeline (#8433ef0f phase A)12f5864
  • Featuretrip start/end markers + speed-coloured tracking dots (#40e5c538 part 1)30063f0
  • Featureexplain why vehicles are missing from capacity totals (#aac92294)ae8dbf3
  • Fixwire requiredVehicleClasses through staging->IVR7 conversion (#7de0d98f)26491b8
  • Fixrestore message visibility above fullscreen overlay (#f0b37de5)3b1036a
Sunday, 26 April 20262026-04-26
SolveSmart6 updates
  • Featureaddress/postcode search overlay on Map tabsc26ce5d
  • Featureper-org default date format0f5632e
  • Fixsubmission row overlapped wrapped workflow titleda05311
  • Featureexpose import-template fields as Jobs tab columnsd8fd3d1
  • Fixtravel tooltip distinguishes driving from pre-job waiting2ded3f1
  • Featurefunctional colour system + WCAG-safe subtitleb86c872
Saturday, 25 April 20262026-04-25
FlowSmart1 update
  • Featureclickable photo links via dedicated Photos sheetb2f85ea
SolveSmart2 updates
  • Fixpresign without HeadObject probede4c41b
  • Featureclickable photo links via dedicated Photos sheetfe0138b
Friday, 24 April 20262026-04-24
MapSmart4 updates
  • Fixvariable-service import no longer reports "complete" while still queuedbd58546
  • Fixsweeper road network extraction completes for large counties7cfe67c
  • Fixrestore vertical scrollbar on Schedule Jobs Service dropdown00497d0
  • Fixlowercase email on user create/update2ab113f
Platform8 updates
  • FixapiKeys module now shows in Features panelc65f68c
  • Featureexpose apiKeys feature flag for ModelSmartc6ae71f
  • FixAdd User is portal-only; hide mobile toggle on createcfc854b
  • Fixproject filtered-org membership into user table columns7671bf9
  • Fixfilter users by memberships, not legacy primary org85c503c
  • FeatureAdd User modal with portal/mobile toggles; retire whitelist UI279078e
  • Featureadd email case-collision scan + merge toolingaa2964e
  • Fixnormalize email case on every entry and lookupc159fe8
SolveSmart9 updates
  • Featurecustomer reply handler for template notifications241a630
  • Featureresource-type priority for scenario builds615f917
  • Featuretemplate-send path for outbound customer notifications1ee8da6
  • Featurebroaden tool coverage + loosen prompt guidancec294285
  • FeatureQR code for desktop → phone handoff on link flowa6cab1c
  • Fixverify webhook signature against raw body bytes7b25a0c
  • FixapiKey CLI uses shared prisma client for SSL-configured RDS163d1a4
  • Featureexternal API keys for customer integrationscdc0400
  • Featureper-user portal/mobile access flags replace whitelist-as-user-source92a1943
Thursday, 23 April 20262026-04-23
AIOne Mobile2 updates
  • Fixstop empty-skills flash on skills step entryecef93f
  • Fixauto-insert dash in access code inputeccb250
InvoiceSmart6 updates
  • Featureconditional rule setValue supports {Column} placeholders6ea04d3
  • FixReference field holds single PO on consolidated invoicesbf53200
  • Improvementroute accessible brand text through --theme-primary-text46624a4
  • Fixcatch remaining blue text instances in tabs + header hover7bb24da
  • FixInvoiceSmart – Text-Safe Colour Addition1f96c51
  • UpdateDrop axios in favour of native fetch + nginx no-cache for deploys7d50ff9
MapSmart7 updates
  • Fixcast UPRN ids to int for windows fetch6eeac17
  • Fixpropagate time_windows from geojson to table row4ddada8
  • Fixsurface UPRN time_windows + stop silent-wiping on unrelated edits8aecce0
  • Featureplumb per-UPRN time windows into RouteOne Bubble78ab45c
  • Fixrouteone HTTP client timeout > solver budget497ff07
  • Fixrouteone celery task soft_time_limit > solver budgetf4b23ae
  • Fixper-depot unplanned breakdown on multi-depot schedules (#9977a150)af1a4f0
Platform1 update
  • Featuresurface Delivery Windows sub-tab in Features & Access5ab9ddc
SolveSmart59 updates
  • Fixcost-per-distance label honours the org's distance unit (#ccf9aa82, #ca7e00a5)1b91f29
  • Fixcolumn sizing + sort/filter on headers (#54618935)3ae6e3e
  • FeatureAURA profile actively fills the fleet35c921e
  • Fix'Already assigned' layer count after Select Best Suited (#8d9f7604)765a3a8
  • Featureenforce UPRN windows via per-window virtual vehicles1cbbfd5
  • Fixfirst-leg distance no longer silently hides as NaN (#26590e8d / #324aad71)4a10d39
  • Fixvisit_windows as soft bounds + restore CP-SATff43044
  • Fixvehicle reg tag reappears after driver is assigned (#a93f1f91)d1a7a41
  • Fixdisable CP-SAT when visit_windows presentb925c77
  • Fixin-map location search uses AddressesApi + proper debounce (#d6a9cda1)ed11499
  • Fixpreserve source column names so template rules work (#abdd3917)99ab747
  • Fixadd solver.Add() for visit_windows (CP-SAT compatibility)a6c4e1f
  • Fixvisit_windows uses SetRange, not RemoveInterval+SetMax9bb87be
  • Featuretelematics hover — speed + timestamp on tracking polyline (#40e5c538)1499a27
  • Fixempty-route crash on Map tab + Move Jobs modal scroll + depot seed (#2a535f86)36f24df
  • Featurerefresh SolveSmart + ModelSmart logos and palette (#98285cff, #aceb1ca9)fcc5d6c
  • Featureper-UPRN time windows (Bubble)3d1d817
  • UpdateBubble early-stops when search plateausf12435e
  • UpdateBubble default budget 1200s → 300s (matches Icepack UX)f24c251
  • Fixwarn when a driver already has a dispatch for the same day (#ac1f1bf4)5c2f829
  • FixBubble multi-trip vehicle clones — the real fixf8a81ce
  • Fixreassignment no longer loses map markers (#c92f5b8f)0eeccf7
  • Fixadd 'Map' header to the map-icon column (#58b3e7a7)d48a271
  • Featureper-file template auto-detect + manual override (#6e38cc1d)20a9131
  • Featuremulti-file jobs upload in one planning session (#6e38cc1d)1505e2f
  • FeatureResource Planner + ghost resources explainer popover4cd965c
  • FixBubble distinguishes depot from tip locationa460196
  • Featurepiggyback rule — re-include excluded jobs sharing a field with planned ones (#626c16e3)a4e11ec
  • FixBubble uses SAVINGS first-solution + 1200s budget9b2eedb
  • FeatureUX follow-ups from #771ac4d8197ae73
  • Fixtimeline scrolls within its container, not the page (#805c5341)c2768c0
  • Featuresolve name includes RouteOne profile (ROUTEONE — AURA etc)272ff93
  • Feature6 planner-facing tweaks (#a93f1f91)801f03e
  • Fixvehicle-class constraints now actually reach the solver (#7de0d98f)d0c3898
  • Update4 concurrent solves via uvicorn workers + CP-SAT single-worker726d7a9
  • Fixreassign stops within same dispatch now works (#c92f5b8f)107f361
  • FeatureRouteOne profile picker in Run Solve dropdownfd51ebf
  • Featurerename profiles AURA/SPARTA/TERRA/OPTIMA with branded metadata65c0f4f
  • FixBubble reload skip-penalty instead of hard-pinning VehicleVar3b5d9d0
  • Featureworkflow-per-job rules + import wizard UX polish (#c6cb25a1)7ba2ad6
  • Featuresolver-goal profiles (FILL/MIN_VEHICLES/GREEN/BALANCED)272fec9
  • FixBubble mandatory reloads so solver tips at capacity4335fd3
  • Fixzoom-independent dropoff marker offset, single depot22d0e6d
  • FixBubble aggressive drop penalty so solver uses reloadsc573a91
  • Fixadd Vehicle Type col, search/export/settings, tooltip, plan name in headerd6dbeb4
  • Fixspiral duplicate stop markers on map00c20e1
  • FeatureBubble forces enough reloads + parallel insertion3d7547c
  • FixShiftEnd time must include last customer's service durationc36bbec
  • Fixdelivery-windows API URL — was /deliveryWindows, should be kebab-caseacc579c
  • FixBubble phantom-reload filter uses carried-capacity, not timef6a5be9
  • FixSSE support for /api/notifications/stream in frontend nginx67d4bec
  • Improvementdelivery-window import UX — two toggles on Step 245ee2d3
  • Featuremarquee selects unplanned jobs + yellow highlight on selecteddc3af37
  • Featureremove Custom Primary Rate from project-resource assignment UIs (#78c180d6)ab2f45c
  • Featureedit photos + barcode values on completed submissions (#e19025b8)67333fc
  • Fixreserve window vehicles for windowed UPRNs only3175a18
  • FixExcelJS rich-text / formula cells no longer surface as [object Object] (#fb76839f)9096d1d
  • Featureproject-name header above tabs + resource-count column (#d2d67090, #1514b3c7)6249d4d
  • FixuseMsDistanceUnit retries when ss_current_org races (#ccf9aa82 / #ca7e00a5)1d97850
Wednesday, 22 April 20262026-04-22
MapSmart12 updates
  • FeatureRisks — bulk "Download All" RA01 forms as a ZIPa8c079d
  • FixSchedule Jobs Service dropdown shows all items when scrolled to bottomb9ca3ec
  • Fixrouteone task UPDATE referenced renamed variable request_payload → icepack_payload46e73ff
  • Fixsubmit_to_routeone logs ISR shape not native SolveRequest shape4b1580a
  • FeatureRouteOne task uses build_icepack_request — one builder, two solversd838708
  • FixNULL-tolerant region filter in get_solves_for_round1e2bf70
  • Featureasync RouteOne Bubble solve — matches Icepack UX pattern69345e2
  • UpdateRevert "revert(mapsmart): Bubble is fallback-only — restore submit_to_routeone to /solve (native)"c4a05b4
  • Updaterevert(mapsmart): Bubble is fallback-only — restore submit_to_routeone to /solve (native)5d55998
  • Featurewire RouteOne Bubble — /solve/bubble + Icepack-shaped response_json + solver_useddba52a6
  • Fixthree Sentry-surfaced bugs + complete sendmail→send_message sweep04e8da5
  • FixUTF-8 safe email sending — swap sendmail(as_string) for send_message1c9371c
Platform2 updates
  • Improvementdrop slug lookup for salesmart/inventorysmart924ccce
  • Fixalways emit slug product entries even when slug is null19ff358
SolveSmart38 updates
  • Fixunplanned reassign always offers the source vehicle (#b57313e7)37b5c38
  • Fixreassign skill filter uses ANY-match + marquee toolbar on leftf73e707
  • Featuredelivery-window library — Phases 2 + 3a + 3b (import integration)465881c
  • Fixprefer dropoff stop over marquee-captured stop for unplanned coords (#b57313e7)d392a80
  • Updatetune(route-one): revert reloads 10→3 and bump budget 300s→600s for Bubble85bc605
  • Fixbulk unplan produces rich unplanned entries (#b57313e7)f15b9f7
  • Fixbubble default reloads_per_vehicle 3 → 10, unblocks sub-capacity solves21b3c33
  • Featuredelivery-window library — Phase 1 (schema + CRUD + tab UI)55bd645
  • FixBubble drops phantom unused reloads parked at depot start1014060
  • Fixre-evaluate routes after unplanning jobs (#b57313e7)ae527e6
  • Fixcolumn autocomplete in conditional rule Source field (#ca2cd226)65d884b
  • FeatureBubble v1 — 1:1 stop↔UPRN matchings so UI shows UPRNs per stop/lege74362c
  • FixBubble adapter computes depart = arrive + service locally33341a0
  • FixRevert "fix(route-one): depart_second includes service time, fixing UI Collection Time total"a824b54
  • Fixdepart_second includes service time, fixing UI Collection Time totald44e0c4
  • Fixhard shift-end + 10min grace, keep CP-SAT enabledf0da726
  • Fixchunk OSRM /route calls — unblocks polylines on 100+ waypoint routescfe2db5
  • Featureenable CP-SAT backend with 4 parallel workers64e47be
  • Featureremove distance cap + soft shift-end with tardy cost23e4f76
  • FixBubble adapter emits interStop attributes + matrix-real distancesdc5a921
  • Featurecap ×30, over-cap 10k/mi, penalty × 1.25dbeed6b
  • FixBubble adapter emits true Icepack-ISR shape01692f1
  • Updaterevert(route-one): Tabu was worse (318 vs 349 jobs) — back to GLS81a29da
  • FixBST-aware solve names + timestamped report/email stringsf1c2c1f
  • Fixvisit-only classifier recognises pickup==dropoff + Bubble default budget 300s0666d78
  • Featureswitch metaheuristic GLS → TABU_SEARCHac5da39
  • Fixuse solution.Value() for cumul times, not Min/Max5b5b4c6
  • FeatureBubble accepts Icepack-ISR format directly — from_icepack_isr loaderb01f0dc
  • Removedrevert(route-one): remove first-leg cap — made throughput worse462624a
  • Fixcap first leg at 90min not 150min (user's actual observation)b4c0698
  • Featurehard cap on depot→first-customer travel time at 2h30875f426
  • FeatureRouteOne Bubble — /solve/bubble endpoint + Icepack-ISR adapter13b3bea
  • Featureadd PROFILES.md catalogue; name current behaviour as RouteOne AURAe9de449
  • Fixtighten cap to shift_hours × 25 for denser local packing197f98d
  • Featurecost-aware insertion + Gantt travel tooltip excludes break time1ffebf7
  • Fixbump over-cap penalty 5k → 15k/mi to kill radial outlierscfbc48d
  • Fixemit GLOBAL stop indices for transitRuleAttributesaacf92b
  • Fixrestore break visuals via deterministic gap analysis6c44d9e
Tuesday, 21 April 20262026-04-21
AIOne Mobile1 update
  • Featuremigrate Google SSO to native Google Sign-In SDK5f5867c
MapSmart15 updates
  • FixUPRN label drawer — grid layout + drop postcode pill so long addresses truncate and × stays visible02faae3
  • Fixforce native CSS ellipsis on UPRN label drawer address rowseb81707
  • FixUPRN label drawer — long addresses truncate in place, alphabetise expanded rows9c5e06c
  • Featureread-only Labels column on Active Services (/services) and Variable Services (/variable-services)913c229
  • Fixmap new UPRN label endpoints in apiV2Adapter ENDPOINT_MAP9ea8b47
  • FeatureWaste Locations + Active Services get a Labels column (with Manage Labels on Locations)39364ee
  • FixResellerBrandingModal TS errors — drop unused Space import and Divider orientationae89540
  • Featurereseller branding admin UI — self-serve logo/colours/URLs07b8f66
  • Featurelogin_background_url branding column — uploadable per tenantfa0fb26
  • Featurewhite-label frontend foundation — BrandingContext + theme tokens + LoginPage/Header swaps0d07a74
  • Fixwhite-label branding foundation — entities/resellers columns + resolver + email/PDF templating5dc2967
  • Featurebulk-edit UPRN time windows9cbaca7
  • Featureconnection pool + Sentry + tracked migrationsf7e5532
  • Fixdefault ROUTEONE_URL to http://route-one:4080 (internal DNS)77bbfa6
  • FeatureUPRN time windows + RouteOne solver for waste routing02c5c68
Platform3 updates
  • Featureadd native Google Sign-In id-token endpoint for mobile5d574c1
  • Featurescope access token products claim by login origina26f12c
  • Fixresolve slug products from PA row's own org2a9b534
SolveSmart30 updates
  • Updaterevert(route-one): stop reading break placement — SIGSEGV in OR-Toolsf41a2ee
  • Fixreserve post-solve time inside RouteOne budget envelope507bf9d
  • Fixbump RouteOne solve budget cap 300s → 900s7e9a00a
  • Fixrestore distance cap — search blew up without itf4501be
  • UIrevert(route-one): break back to mandatory — lunch is a hard requirement16f6e37
  • Featuremirror Icepack transit-rule DB enrichment for RouteOne + optional breaksbe7d8c0
  • Fixremove soft distance cap — LCI handles prioritisation32610aa
  • Fixread actual break placement from solver, stop guessing9d9d506
  • Updaterevert(route-one): penalty back to linear scaling038bcf1
  • Fixderive break position from solver, not heuristic7e9307a
  • Fixamplify penalty scaling + restore break fallback3e14cb8
  • Fixswitch first-solution to LOCAL_CHEAPEST_INSERTION74eb0ec
  • Fixbreak picks gap between customer stops only604de99
  • Fixallow partial updates in bulk resources import837f517
  • Fixemit break fromStopId/toStopId as 0-based array indexf6b3a27
  • Fixsoften over-cap penalty to rebalance vs drop penalties9d96e6e
  • Fixplace break visual in the real gap, not after itd36d9dc
  • Fixtransit rules fallback + punctual service timesce4383f
  • Fixparse nested shift.shiftStart/shiftEnd shapea85ec5a
  • Fixunscale objective_value to scenario native cost unitsb0bd6e5
  • FixtransitRules field name + use solver depart for Gantt1b95901
  • Featurereal lunch-break intervals + tight depot-depart window687219c
  • Featureadaptive distance cap — shift-based OR geography-based14ba464
  • Featurederive distance cap from shift hours, not flat numberba7af38
  • Featuretighten cap to 150mi + add span cost for route balance134b1ca
  • Featuresoft per-vehicle distance cap + SAVINGS first-solution6bd40c0
  • Featureemit cumulative capacity attributes on stops2287414
  • Featureapply vehicleClass multipliers, location time, and transit-rule breaks95df06d
  • Featureswitch first-solution to PARALLEL_CHEAPEST_INSERTION for tighter clusters3ceb044
  • Featurehonour Icepack cost coefficients — closes 1.83× mileage gap8289e14
Monday, 20 April 20262026-04-20
FlowSmart1 update
  • Featureping DB in /health so monitors detect backend-alive-but-DB-downb3e6a30
InvoiceSmart8 updates
  • Featureping DB in /health so monitors detect backend-alive-but-DB-down6757d71
  • Featureconsume aione-auth features + pageAccess in InvoiceSmart frontendfe38abe
  • Featureper-org settings endpoint (dateFormat) for admin.aione.uk2a00343
  • FeatureInvoiceSmart product gate + auto-provisioning via aione-auth050bfee
  • RemovedUX: remove aione-auth attribution from login page890178d
  • Featureconsolidate InvoiceSmart SSO through aione-auth (93ff6ea0)9f5e17f
  • Featureorg-level date format preference (00e97367)5a882a3
  • FeatureBrand: InvoiceSmart rebrand — new logo, background, brandmark, secondary colour (e6783cf2)fa7d82f
MapSmart8 updates
  • FixRA01 xlsx/csv export is the hazard table onlydbaeb9e
  • FeatureRA01 Risk Form download in pdf, xlsx, or csv08ac1e2
  • Featureping DB in /health — Python port of the pattern4e6d01d
  • Fixschedule-edit modal tolerates region-less legacy keysc93c82d
  • Fixdisable gzip on /health — UptimeRobot keyword match fails on gzipped bodyac80fa7
  • Updateexpose backend /health via frontend nginx for uptime monitoring27be0d3
  • Fixresolve_region() helper prevents NULL-region regressions612aa5e
  • Fixprevent silent starred-solve loss on service/UPRN deletesaeef3a9
Platform8 updates
  • Featureregister movement + planning + recommendations in IS config654e43b
  • FeatureAdmin: add InvoiceSmartAdmin with Orgs & Users + Features & Access tabsc04b5a3
  • Featurewire InvoiceSmart into Features & Access config pattern2a9e3e5
  • UpdateAdmin: move InvoiceSmart dateFormat editor into the Products tab8ec66b7
  • Featureping DB in /health so monitors detect backend-alive-but-DB-down88b6a09
  • UpdateAdmin: InvoiceSmart per-org dateFormat editor in OrgDetaildda4465
  • Featurewire InventorySmart into Features & Access config pattern9ac58df
  • FeatureInvoiceSmart joins the standard product access modelb349883
SolveSmart25 updates
  • Featureadd dateMulti filter mode; swap Planned Visit filter (#2f231033)572bcfe
  • Fixpin undici to ^6 — v8 needs Node 22, container has Node 209feeeb3
  • FeatureTeams Phase 1a — team resources, exclusivity, two-phase orchestrationb96b33c
  • Fix15-min fetch timeout so large solves don't report fake failures99025a1
  • Featurenormalise objective to Icepack scale on responsed51f762
  • Fixcorrect travel-segment → interStop mapping (off-by-one)99b6756
  • UIui(SS/gantt): three-shade trip bar — brightest loading, normal service, dark travel545aa45
  • Fixshift stops need jobId=Shift_<veh> (Icepack convention) so JobsTable shows them1545c7a
  • Fixhonour vehicleCostClass.fixedCost so cheaper fleet wins3744b42
  • Fixemit all vehicle routes including idle ones (match Icepack fleet output)aad60bb
  • Fixpickup stops span shift-open→actual-depart for proper Gantt loading phasea1d2a27
  • Fixpoll + heartbeat cadence so fast solves stop looking stuckfafbab9
  • Fixemit time attribute on interStops so Gantt gets arrive timesa2a1ab0
  • Fixvehicle ID parity, progress heartbeat, budget scaling5f8edba
  • Featurereal OSRM polylines in routeSegments — no more straight lines on mapf79fc9c
  • Fixpersist DECODED IVR7 model for Gantt shift-time display04543cf
  • Improvementmove internal time unit from minutes to seconds67a678a
  • Fixpersist requestJson so /map endpoint can render routes2ceb9d0
  • Fixcentralise Leaflet default marker setupa2e4c43
  • Featureui(SS): relabel RouteOne hint copy to 'AIOne's new BETA solve'84fe165
  • Fixunignore README.md for Docker builde3bc264
  • FixDockerfile must COPY README.md (pyproject references it)cb78a89
  • Fixroute-one has no host port (4080 owned by aione-admin-portal)bc3d5f4
  • Featurewire RouteOne as a selectable solver alongside Icepack5edbfcb
  • Featureinternal solver scaffold + IVR7-compatible endpoint4a0fde0
Friday, 17 April 20262026-04-17
MapSmart2 updates
  • UImatch site button classes on Schedule Map action bar400598b
  • FeatureBiffa sweeper UX overhaul — tickets #1-55cc2ba7
Thursday, 16 April 20262026-04-16
MapSmart2 updates
  • Fixshow per-slot unplanned breakdown in day view3e77d4a
  • Featureadd days_back/days_forward range params0f5dcfb
SolveSmart3 updates
  • Featureadd capacity & cost columns to project resources tabc037bf6
  • FeatureDemand & Capacity View with dimensions breakdown (aac92294)7aece44
  • Updateinfra(db): migration doctor + hardened rule #0 to end the drift incidents8446587
Wednesday, 15 April 20262026-04-15
AIOne Mobile1 update
  • Featureshow offload site + optional workflow on stop detail339e613
MapSmart6 updates
  • Fixper-timeslot unplanned row in Fleet Summaryc414da5
  • Fixeliminate second native scrollbar in Service filter popupa710f6b
  • Fixremove double scrollbar on Service filter dropdownb547be6
  • Featureclick-on-map mode for road segment splitting8af1bb5
  • Fixrestore GAR ticket flow and AHP closures for 2026 seasonb2fd3e9
  • Fixpreserve aione_enabled and erp_mapping_enabled on updatec5b5052
Platform2 updates
  • Featureadd capacityView feature flag + /capacity routeef954c7
  • Fixpopulate edit form AFTER modal opens6d2d50f
Tuesday, 14 April 20262026-04-14
MapSmart5 updates
  • Fixdistinct colours per hazard + tighten risk trigger thresholds420f24f
  • Fixuse separate connection for server-side read cursorbf804f4
  • Fixadd /prepopulate_uprns to STREAMING_ENDPOINTSd884b28
  • Featureuse parish from uk_uprns as town value1a50632
  • Featureprepopulate UPRNs from uk_uprns national dataseta8602d8
Platform2 updates
  • Featureadd RecruitSmart access flag + org ID to Organisationfd75142
  • Fixterritory templates loading - wrong path and keyd85b483
SolveSmart19 updates
  • Updateinfra(compose): attach backend to aione-auth_default networkab7831e
  • Featurephase 1+2 offload site enhancements + driver plumbing (b5c23d96)65c7dd9
  • Removedinfra(backend): remove prisma db push from container startf601b36
  • Fixadd Employment Type filter to Assign Resource modal (12a5f6eb)476f5ef
  • Fixworkflow bulk export supports mixed types (9f1b2710)b6cffcf
  • Fixtypescript build errors in ProjectViewPage (follow-up to 7ab3c5e)54bca7c
  • Fixresource cost UI batch — 3af49dda + 126a874f + 6873d5be7ab3c5e
  • Fiximport Dayjs type for date sync handlers00a8b06
  • Featureticket #12 date nav + recurring mgmt + ticket #15 customer import514d10f
  • Fixworkflow system_data — new field types + worker_name fix (a5c64b42)c4069e7
  • Fixlock workflow template schema edits while submissions in progress (32c911ce)1c606bf
  • Fixadd filter to Planned Visit Date & Time column (2f231033)1124df4
  • Fixadmin-edit role check was case-mismatched (f194ce57)3fb7b23
  • Fixrefine bulk resource removal + column sort (dc29f692, 2fb871da)0077739
  • Fixresolve 4 queued tickets (dc29f692, 2fb871da, ecdac74a, 8812ef76)15bfbc3
  • Updaterebase migration history with single baseline + SLA rules + scroll modals3ca3733
  • Fixscheduled dates discrepancy (ticket e048a357)2fecb0d
  • Fixremove unused imports blocking build6d9b0f7
  • Fixsettings tab auth import + org settings endpointe1461b8
Monday, 13 April 20262026-04-13
FlowSmart2 updates
  • Featureadd admin-edit endpoint for completed workflow submissionse850bda
  • Featureadd Edit Answers capability to SubmissionsDrawer5261fd8
MapSmart3 updates
  • UpdateUse full capacity for frontloaded days_needed calculationcd55855
  • FixFix frontloaded distribution spreading work across all eligible days6d296cd
  • Fixextract full attributes from geojson when saving road segmentsf794665
Platform2 updates
  • Fixmove boundary selector to Region tab on MapSmart entity modal51d7eb8
  • Featureadd territory boundary selector to entity management52339d6
SolveSmart4 updates
  • Featurepost-routing quantity updates + 5 UI enhancements46db020
  • Fixresolve 6 bug tickets + control room improvements8bbc76d
  • Fixrestore DownloadOutlined import removed during cleanupbdff3d1
  • Fixresolve 5 ModelSmart escalated ticketsc211e33
Tuesday, 7 April 20262026-04-07
MapSmart1 update
  • FixDistance stat showing NaN due to string concat317fad8
Thursday, 2 April 20262026-04-02
FlowSmart3 updates
  • Fixremove getPopupContainer entirely from condition dropdowns5eaf3b4
  • Fixuse document.body + z-index 2000 for condition dropdownsee2d7f8
  • Fixfix unclickable dropdowns in visibility conditions modal829ecbf
MapSmart3 updates
  • Featureadd High Traffic Exposure and Collision Hotspot hazard types2f2a9a6
  • FixFix service dropdown max-width not enforced in productionf2a2040
  • Fixwiden service dropdown in Schedule Jobs page5c4c4b7
Platform33 updates
  • FeatureAdd branding data to /me response for auth-only productse6618a2
  • FixFix role resolution — skip null-org PA records when org-specific exists43bce6a
  • FixFix Workflows sub-tabs in RBAC matrix — Workflows + Approvals as Core childrene19ee98
  • FeatureAdd per-org role management for auth-only products481f178
  • FeatureAdd disable org from product — only when 0 users remainb842d99
  • Fixadd brandingEnabled to Zod schema (was being stripped on save)408cfb0
  • FeatureReplace dropdown with org panel in SS/MS Features & Access tabb2489ac
  • FeatureFeatures & Access tab uses org panel instead of dropdowna9b85c8
  • FixFix Grant Existing search — only exclude users with access for selected orgfe50aa5
  • FeaturePre-select org in Grant Existing and Add User when org is filtereddefdf4d
  • RemovedClarify delete vs remove — product tabs remove access, Users page deletes accounts4d117a5
  • RemovedRemove unused userOrgIds function7390d34
  • UpdateStrict org filtering — only show users with ProductAccess for that exact org98cb6c7
  • FixFix user filtering — only show users with ProductAccess for selected org587a0c6
  • FixEnforce correct org workflow — create at Orgs page, assign via Products784a489
  • FeaturebrandingEnabled toggle + brandingEnabled in config API688b32d
  • FixFix FS module definitions — Approvals is sub-tab of Workflows, not standaloneff2acd5
  • FixAdd flowsmart debug logging to buildProductsMap6dbf483
  • UpdateReorder FS modules — Approvals after Submissions (its parent), before Contactsb04e3d6
  • FixFix refresh endpoint overwriting body organisationId with token header40cd03c
  • FixFix org-aware role for auth-only products + add Features & Access tab473fa17
  • FeatureAdd FlowSmart RBAC — fsConfig, feature definitions, JWT enrichment, API endpoints204077f
  • Fixadd branding to productConfig Zod schema (was being stripped on save)3b0001a
  • UpdateAccept organisationId from refresh body for org selector flows5846524
  • UpdateFilter org tags to only show product-relevant orgsf21eb20
  • FeatureAdd driving side + all 3 branding colours to CreateOrgModal6999281
  • FeatureShared CreateOrgModal — one modal for org creation everywherecddf043
  • FeatureAdd tabbed New Org modal with Regional and Branding settings65ddba2
  • FixFix multi-org display — use UserOrganisation as source of truth85d8ddb
  • FixFix org column display for multi-org usersf217a52
  • Featureinclude branding in config API responses715a1e2
  • FeatureAdd failure logging to password login and token refreshf96a0ee
  • Featureper-product branding overrides0cb3256
SolveSmart30 updates
  • Fixdynamic skills dropdown + ZIP extension for multi-sheet CSV export3ce946e
  • Fixclear :root inline vars when brandingEnabled=false2a9d75c
  • Fixdon't clean :root vars on unmount — prevents flash on platform switchb3159ea
  • Fixremove :root intermediate vars from MSDashboard — use theme vars directlyc2e143c
  • Fixms-theme legacy --ms-primary aliases now point to --theme-primary9d0650d
  • Fixreplace remaining intermediate --ms- brand vars (gradient, resources)6eeef2e
  • FixMS radio button theme + remove intermediate --ms- vars05c7a7e
  • Fixreplace ALL intermediate --ms-primary/orange vars with --theme-primary18f4171
  • Fixfinal sweep - zero remaining hardcoded brand colours228c19d
  • FixMS sidebar accent + dashboard stat card light bg use theme vars3537ef7
  • Fixreplace all remaining MS orange rgba shadows with CSS variables828b98e
  • FeatureSS Workflows uses full HelpTab from MS (same feature)99e6a3f
  • FeatureMS header logo swap + brandingEnabled support3fe1e39
  • Fiximport card ok background uses theme variable not hardcoded rgbab7be615
  • Fixset branding variables on BOTH theme element AND documentElement132eb64
  • Fiximport card ok border themed + table filter portal overridesbfa3c0e
  • Fixincrease specificity on MS Enter button to override ant-btn-primaryeb54a83
  • Featureproduct-specific colours on org selector + platform selector6e26d4d
  • Featureportal element theming (modals, dropdowns, selects)d17f622
  • Fixadd default theme variables on :root for pages outside theme wrapperabe4943
  • Fixreplace 448 hardcoded MS orange hex/rgba with CSS variables48d1ee8
  • Fixreplace ALL 691 hardcoded teal hex/rgba with CSS variables158fe51
  • Fixreplace all hardcoded rgba/hex with CSS variables in themes2b9200f
  • Featureswap header logo with org branding logo when set6bf3133
  • Featurecomplete theme re-skinning from branding3f13104
  • Fixset CSS variables on .ss-theme/.ms-theme element not :rootd6d2ac7
  • Fixdebug: add useBranding logging588d381
  • Fixmove ALL branding declarations outside try blocks (both endpoints)2f99108
  • Fixmove ssBranding declaration to correct scoped0f0207
  • Featureapply org branding via CSS variables on logine9b539e
Wednesday, 1 April 20262026-04-01
AIOne Mobile7 updates
  • Fixadd loading spinner to Loaded & Ready, fix status transitionsad234db
  • Fixfetch 3 months of dispatch dates for date pickeref6ce99
  • Fixloaded & ready transitions, date picker colors, dispatch dates8c24062
  • Fixcalendar dots on initial load, invalid date, loaded & ready, selected text6756a48
  • Featureadd settings, profile, in-app map/directions parity with ModelSmart2cf05ec
  • Fixuse inline style overrides for all SolveSmart components225e595
  • Fixuse dynamic colors instead of static StyleSheet for themed values0e6b970
MapSmart3 updates
  • FixFix missing depotIds in filter reset objects causing TypeScript build failure0be9602
  • UpdateWiden service dropdown in Schedule Jobs to show full service namescbcfec0
  • UpdateShow unplanned segments per day/timeslot in schedule generator previewfeb4ec6
Platform41 updates
  • FeatureMS Reports sub-tabs (Overview, Workflows, AI Reports)a4a5357
  • Fixswap MS tiers - Projects to Core, Holiday Calendars to Advanced8d67872
  • Fixauto-check parent when child sub-tab is enabled4bc3266
  • FeatureMS sub-tab modules + regional settings schemaa81e49a
  • Featureregional settings per org (country, timezone, currency, distance, driving side)75437b9
  • Featurebranding save button shows green tick on success34fad0f
  • Featurelogo upload + hex colour inputs, remove product tabs from OrgDetail1efe138
  • Fixmove branding useEffect above early returns (React #310)e6e2508
  • Fixmove branding hooks to top of component (React #310)6c729e7
  • Featureorg-level branding (logo + 3 colours)3cd098c
  • FeatureReports sub-tabs (AI Reports + Exports)124144d
  • Fixselect-all skips modules with disabled dependenciese9b0988
  • Fixcorrect Job Management sub-tabs (Jobs, Customers, Job Types only)f41a848
  • FeatureDashboard to Core, Job Management sub-tabs, feature dependencies4ee7468
  • Fixmove collapsedParents state to component levelcd123ce
  • Featurecollapsible parent rows in Role Access matrix187b714
  • Featuretier tabs for Role Access + clean Features tab71a70ad
  • Featuretab-level access control for Fleet & Setupe54b188
  • FixFix product admin user/org display issues70de08b
  • Featureinternal service endpoint for org configbb74983
  • FeatureOrganisations page read-only matrix with product coloursa5bbddf
  • FixZod schema defaults overwriting product access on partial updateba4c623
  • Fixorg edit modal - separate validation from API call1f71852
  • Featureauth-first org provisioning flowd135b36
  • FeatureOrganisations page with product access matrix1accfcb
  • Fixcross-reference SS backend orgs with auth orgs in dropdown0a4bb60
  • Fixtier toggle to right of label + separator lines between tiers19a87c9
  • Featuretier-level toggle switches + filter inactive orgsc94cf38
  • Fixdisabling a feature removes its route from all roles1790c64
  • Fixadd tooltip on tier tags in Role Access matrix1b572c4
  • Fixset min-width on org selector dropdownf127bdf
  • Fixfilter Orgs & Users tab by product access3d9f27c
  • Fixfilter org dropdown by product access3c73c72
  • Fixfetch roles from merged config API (includes defaults)448a3a9
  • Featuredynamic role dropdowns from config4bea96d
  • Featuresplit Features & Access into sub-tabs947e1b9
  • Fixadd Features & Access tab to Products page7e66d90
  • Featurecentralised feature toggles + RBAC page access6c358f9
  • Fixdebug: add buildProductsMap logging for SS/MS resource resolutione6a4700
  • Fixresolve org-specific resource IDs at token generation time21484e5
  • Fixuse separate resourceIds for ModelSmart and SolveSmart8622d4c
SolveSmart22 updates
  • FeatureMS Reports tab-level filtering (Overview, Workflows, AI Reports)f4e58f2
  • Fixauto-enable parent page when any child sub-tab is accessiblee533624
  • FeatureMS Settings + Workflows tab-level filteringdc6d9ad
  • FeatureMS sub-tab route keys in feature defaults9d93d48
  • Fixensure /api suffix on AIONE_AUTH_URL4a91670
  • Featuretab-level filtering for Job Management + Reports484aa23
  • Featurefeature toggles + RBAC page/tab access from aione-authe495440
  • Featureauto-create users when adding to email whitelist17f5060
  • Featurecascade org delete to aione-auth560cb3c
  • FixPre-populate inline template editor with org defaultsed9722c
  • Fixdisable FeatureGatedOutlet to unblock usersfdc3681
  • FeaturePer-customer template overrides in Customer modalc67f4fd
  • Fixallow full access for legacy tokens without pageAccess1306978
  • FixShow human-readable labels on merge field chips39bbc14
  • Featurefeature toggles + RBAC page access from aione-auth83c2077
  • Fixuse originalUrl instead of path for ss-mobile detection126d966
  • Fixinclude selectedCrmJobIds in stageValidationData deps72a0071
  • Fixremove unused depotId destructuring (TS6133)09478e5
  • Fixnever filter jobs by depot — depot is for vehicles only2b80077
  • Fixuse resourceId from mobile tokens to resolve SSResource7953dee
  • Fixshow all jobs in planning room regardless of depot selection2e22d2f
  • FeatureAdd Notifications tab to CustomerModal and org-level settings page05b2ffd
Tuesday, 31 March 20262026-03-31
AIOne Mobile3 updates
  • FeatureSS workflow gating — SOD/EOD/loading enforcement on mobile75bad30
  • FixSS month/list views not loading + add dispatch date dots to date pickerc32cc40
  • Fixauto-resize workflow photos to reduce memory pressure + fix SS type errors4998b6f
InvoiceSmart2 updates
  • FixFix TS type error in service token check — cast role to stringb3c60d9
  • FeatureAdd aione-auth service token support and network config6a64280
MapSmart13 updates
  • FixSweeper - Active Services - Adding the ability to filter by depot8ee0d1e
  • FixFix SOD/EOD/segment workflow submission failing with Status 5008045993
  • UpdateAlways show slot headers in unplanned jobs list, not just when multiple slots9282025
  • FeatureAdd undo button to scheduling map for reversing segment changes701233d
  • FeatureAdd per-slot unplanned rows in schedule viewer timeslot breakdown70ab380
  • FixFix 6 escalated tickets + add Schedule Jobs to sidebar12514ee
  • Fixpin map container to top of page, eliminate grey top bar64fec3c
  • Fixcentre map image in container with flexbox437de43
  • Fixuse object-fit cover to fill map container, revert window size19f2272
  • Fixmatch screenshot aspect ratio to PDF container (409x248mm)06fb6c0
  • Fixeliminate grey bar on sweeper map screenshots8881711
  • Fixuse 0.1 zoom snap for tighter map fit on sweeper + driver maps9fff142
  • Fixuse fractional zoom for driver map images69fd6c1
Platform9 updates
  • FeatureAdd assign-org for stranded users — dropdown in org column07e0fd0
  • FeatureAdd Enable Existing Org button to product admin tabs5c83143
  • FeatureAdd New Org button to all product admin tabs2001186
  • UpdateUpgrade ProductUsersAdmin to org-first layout for all productsed52114
  • FeatureAdd org-first FlowSmart admin with orgs panel and user management111a7da
  • FeatureAdd custom InvoiceSmart admin with org/user management via proxy9c117cb
  • FeatureAdd build timestamp to Vite output filenames to bust browser cache028e3a4
  • FixFix browser caching — reduce nginx cache to 7d, tweak placeholder text45f3e96
  • UpdateWire InvoiceSmart into central admin portal1f3e673
SolveSmart25 updates
  • FeatureAdd dropdown to day/resource nav in Route Analysisfbb64d5
  • FeatureAdd export column reorder + unplanned job tooltip detailsbe89559
  • FixFix cycling arrows shifting when resource/date text changes9754f4d
  • UpdateSync job status when visit status changes398aada
  • FixFix night shift calculation for multi-day solver timesa78007e
  • FeatureAdd financial fields and night shift indicator to export templates6cb175e
  • FixFix import template wizard clearing file on first upload31c3c62
  • FixFix first travel leg showing 0 mileage in Gantt charte853ae9
  • FixFix single PDF download to use same naming as bulk download1a69849
  • Featureexport with template for All Zones combined view89ba291
  • FeatureAdd admin edit for completed workflow submissions0c8e549
  • FeatureAdd resource fields to export template system0fdd684
  • Fixadd per-day rate type + filter vehicle lock by class6f91478
  • Fixshow duplicate job ref errors in validation step84e5905
  • Featureadd date picker to System Jobs panel for planning date selection4ebb3af
  • Featuremulti-tab CSV export generates ZIP with one CSV per sheetb0ee8d9
  • Fixadd missing skills to job form + fix workflow dropdown positioningb420a04
  • Featureadd static time/date option to combineDateTime export rule88b3299
  • Featuresupport formula expressions in conditional rule source fieldf289d37
  • Featureadd lookup code option for time window rules7c52a8e
  • FeatureSS workflow config — SOD/EOD/loading gating systemacc062b
  • Fixpipe standpipeCompany through dispatch snapshot to mobile API56caf41
  • Fixvehicle constraint rules now applied to IVR7 solver model9229b09
  • Fixtime window rule reads column name from correct payload field23bcca8
  • Fixrecalculate rule priorities after deletion to prevent gaps/duplicates51f0936
Monday, 30 March 20262026-03-30
AIOne Mobile11 updates
  • FeatureSS route screen parity with ModelSmart4f1375a
  • Featuredynamic dimension display on stop cards and detail screen6bcbc73
  • Fixroute screen stop counter excludes pickups/depotse87e709
  • Fixexclude pickups from stop count, show dimensions in loading card0d13a7f
  • FixSS stop detail times, pickup grouping, delivery sequencing6991c44
  • Fixadd solvesmart to HERE Maps auto-init, improve loading stateeea70e8
  • Fixuse dynamic theme color for SS schedule tab toggle3a02e05
  • Fixsave product mode from access code before checkAuthd2553c6
  • Fixhide ss-stop detail route from tab bar1641c9e
  • Featurefull mobile parity with ModelSmartb4dbe64
  • Fixinclude SolveSmart in org selector filter on login07baf41
FlowSmart1 update
  • UIrebuild dist with dynamic step repetition + video field type59aa3bf
MapSmart23 updates
  • FixFix TS error: remove unused variable 'i' in items.map callback995a65a
  • FixFix vehicle consolidation for evening slots (#cd4e9a5c) + per-slot unplanned grouping (#9977a150)ddd92d6
  • UpdateAuto-retry failed scheduled rounds without missed consolidation (#1941d59e)d4938ed
  • FeatureAdd bulk 'Delete All' button for unplanned jobs alongside 'Add All'6451d1d
  • FeatureWiden unplanned jobs panel to 380px, remove 'Add' text from button (icon only)d59c05a
  • FeatureAdd auto-fill warning (#0487ce31) + Delete from Service button on unplanned jobs (#c5cb6027)5dff9ff
  • Fixexport sweep method labels to match UI (Auto, Walking, Vehicle)a0458d3
  • Fixfix active services export sweep method empty columncd4c5b3
  • FixFix front-loading: filter chosen_days to valid days for SLA group before snake distributionfb14e0d
  • FixFix SLA day restriction bug — working_days sorted alphabetically instead of weekday order (#93d15214)7851875
  • FixAdd more debug logging for day restriction checka448fb1
  • FixAdd debug logging for segment day restrictions in scheduler (#93d15214)664ae86
  • FixFix segment splitting overlap (#e572cda3) + sweep distance not updating (#805fe8b9)ddfc459
  • FixFix HTML overview: download as file instead of opening in tab + fix day switching zoom30accdd
  • FixFix overview HTML ignoring vehicle/day filters + tighten PDF map zoom with padding=[0,0]2d8c090
  • FixFix dead space on PDF maps — expand bounds to match viewport aspect ratioff8deb0
  • FeatureRevert PDF layout/image changes back to original — only keep tighter geo bounds padding (2% vs 5%)b34b989
  • FixFix grey edges on PDF maps — force Folium map to fill viewport, use object-fit:cover for map image8dc4d40
  • FixFix grey area on PDF maps — adjust container to fit Chrome viewport, improve invalidateSize + tile loading3c4f2da
  • FixFix TS error: add schedule_length_days to ScheduleTemplate interface0c96561
  • FeatureMinimize PDF map padding — reduce geo bounds padding from 5% to 2% and page margins from 10mm to 5mm2df0d56
  • FixFix sweep method export, SLA summary, segment exports + add PDF/Excel segment list download25674b8
  • FixFix bare linefeed email rejection (5.6.11) for welcome/reset emailsd6d6cc2
Platform10 updates
  • FeatureAdd confirmation modal when removing whitelisted email05ec768
  • FixFix whitelisted email removal — prevent Tag auto-hide, add feedback8a8320b
  • Fixallow SolveSmart access flag to be corrected on sync27e5430
  • Fixdefault hasSolveSmartAccess to false instead of true481a22e
  • Fixinclude ss_resources in org profile check for mobile app377b2e3
  • FeatureAdd full API test runner (41 endpoints) to System Health tabad52d94
  • UpdateAlways load whitelisted emails when editing org, not just restricted mode0892d96
  • FixFix health check to use admin/organisations instead of /healthz1234814
  • FeatureAdd no-cache header to index.html to prevent stale SPA loadsd61361a
  • FeatureAdd SolveSmart/ModelSmart full admin to admin portal0758fc3
SolveSmart26 updates
  • Fixenforce skill constraints on map reassign menu4b76a1c
  • Fixworkflow submitter unknown + table misalignment + job edit losing time windows2f92a48
  • Fixenforce skill constraints on vehicle swapb49b30b
  • Featureallow cross-class vehicle swaps on routes58d5d3c
  • Fixfix toggle switch colour + remove recurring job name field10c27ed
  • Fixrecalculate break indices for all routes after merge60940a3
  • Fixpopulate all fields when editing a job88b5fdd
  • Fixuse JobTypesApi for job types dropdowne8ca815
  • Fixexclude pickup stops from calendar month countsdce3b39
  • Fixuse compiled prisma client path in migrationfe41e2f
  • Fixuse ESM import in migration script833de2b
  • Fixaccept-data-loss flag for prisma db push in Dockerfilecfb1ff5
  • Featuredynamic dimension extraction for SS mobile stops7c982ef
  • Featureinclude weight/volume/units in SS mobile stop detail response1d48bc3
  • Featureunify offload sites and depots under Location modelf5ebc4b
  • Featureadd cost analysis across dashboard, comparison, route analysis, and scenarios32d8c24
  • Fixroute-aware product selection in verifyToken middleware535592e
  • Featurecustomer notification platform support, MS job validation improvementsf912875
  • Fixdebug: add logging to SS mobile month endpoint for calendar investigationd48f18d
  • Featurefull mobile parity — schedule views, stop detail, workflows, navigationfc30205
  • Fixadd proper map tile attribution links across all maps86a88c1
  • UICopy frontend package.json after build to avoid workspace interference50724a1
  • Featureresource location optimization — frontend UI707c7ce
  • UpdateInclude frontend package.json in backend container for deps dashboard0afdc09
  • Featureadd resource planning API routes62e5e83
  • Featureadd Google Places address lookup with local caching5518b76
Friday, 27 March 20262026-03-27
FlowSmart1 update
  • UpdateSecurity: pin HS256 algorithm, fail hard on missing JWT_SECRETb172940
MapSmart33 updates
  • UIMake map download endpoint public — UUID is the auth tokena05cfd4
  • FixFix background map: use shutil.move instead of os.rename across filesystemsa8ca405
  • FixSweeper maps: add debug logging for background map task template loading3d1cb46
  • FeatureSweeper maps: add Map column to segment list tablef833d39
  • UpdateSweeper maps: sort segment list table by sequence then arrival time08a7eb7
  • UpdateShow all vehicles in dropdown even when empty (0 segments)e28ae27
  • FixFix bulk remove for multiple vehicles on same day + show vehicle countsda5b1a8
  • UpdateSweeper maps: major perf optimization — reuse Chrome drivere82e834
  • UpdateSweeper maps: assign segments to grid cells by intersection not centroid5afeb3d
  • FeatureAdd diagnostic logging to schedule save (frontend + backend)0cbf9a3
  • UpdateSweeper maps: use AA, AB, AC labels after Z instead of wrapping5cc9f2c
  • FixSweeper maps: invalidateSize() to fix grey/unloaded tilesca958be
  • FixSweeper maps: fix grey tiles — increase padding and tile load waitf1d2981
  • UpdatePrevent browser caching of index.html so deploys take effect immediately364676d
  • UpdateSweeper maps: background generation with email download link2b7355b
  • FeatureSweeper maps: reduce bounds padding from ~110m to ~20m per side77ee447
  • FeatureAdd login background to Forgot Password page76fe08c
  • UpdateSweeper maps: simple 8x8 grid, drop empty cells296016f
  • UpdateSweeper maps: spatial clustering for grid cells instead of bbox grid1b0d9b0
  • RemovedSweeper maps: remove offset outlines, use single transparent line at 25%61d93ab
  • UpdateWiden map day selector dropdown to show full day names with countsfffdf0e
  • UpdateSweeper maps: more grid blocks for better zoom on driver maps52b4490
  • UpdateShow all days in map day selector, even when empty (0 segments)2ea0385
  • UpdateSweeper maps: thicken outline borders from weight 2 to 48cae275
  • UpdateSweeper maps: widen outline offset from ~3m to ~8m4a0eee7
  • UpdateSweeper maps: true outline effect using parallel offset lines84369d1
  • FixFix stale closure bug in schedule segment bulk remove/addbe3a916
  • UpdateSweeper maps: solid border outline + transparent fill for segments and risks9c12182
  • UpdateSweeper maps: use dashed lines for segments and risks27631be
  • UpdateSweeper maps: reduce inner line opacity to 35% so road names show through0ace0b3
  • UpdateSweeper maps: use outlined/bordered lines instead of transparent fillb3b44ce
  • UpdateSweeper maps: thicker transparent lines + include risks toggle2c3fb79
  • FixFix SetPassword API routing and add login background to password pages611d34e
Platform22 updates
  • Featureregister InventorySmart as a product3fc83e5
  • FixFix user create — find-or-create instead of rejecting existing users66e724c
  • UpdateWire InventorySmart and TrainSmart to generic ProductUsersAdmind4503cd
  • FeatureAdd sort/filter to all table columns across all product tabs7a370ba
  • UIMake organisation required when granting product access3362fc4
  • FixUpdate dashboard to show all 11 products with correct colors14180fc
  • FixFix product access grant — accept all product names, fix AssetSmart color10dff8f
  • FeatureAdd productAccess array to /me endpoint for product-level access checks352faee
  • UpdateUse pause icon for deactivate, distinct from trash for revoke564acc1
  • FixAdd organisation column, org selector on add user, fix product colors2147163
  • FeatureRework product user management — add user, deactivate/activate, revoke68277df
  • FeatureAdd InventorySmart to product list (placeholder — has own user table)2f59f1d
  • RemovedSecurity: remove token logging, pin HS256 algorithm, fail hard on missing secret5ce5514
  • FixFix product user management — triple-checked which have own user tablesc5fa92b
  • UpdateKeep SolveSmart/ModelSmart as placeholder — they have own user tablese7eece9
  • UpdateWire up all remaining products with user management81e8ef4
  • FeatureAdd FlowSmart user management + generic ProductUsersAdmin componentdcb5d66
  • FixAdd FixSmart user management to admin portal6d476b2
  • FixFix auth callback — use local proxy for /me call instead of cross-originc4eacc9
  • FeatureAdd AIOne Admin product with superadmin user management587a6c7
  • ImprovementRestrict admin portal to superadmins, remove Updates Log taba96900c
  • FeatureAdd JobSmart Integration tab to org create/edit modalf71c0fd
Thursday, 26 March 20262026-03-26
InvoiceSmart1 update
  • Fixformula rules now reference source columns correctly017f48e
MapSmart3 updates
  • FixFix email encoding — use as_bytes() for UTF-8 HTML emails76f424b
  • UpdateUpgrade MapSmart emails to branded HTML templates11e96da
  • FixFix GAR sync: carry forward service-level region from previous yearcd58be3
Platform5 updates
  • FeatureShow ERP switch on create modal, icon-only action buttons across all tabs7d15929
  • FeatureAdd proactive token refresh to prevent session timeouts354f188
  • UpdateFull CRUD parity with MapSmart superadmin Settings page834d2cf
  • FeatureAdd delete user button to MapSmart Users tabcda8b93
  • Featureadd inventory.aione.uk to SSO redirect allowlist7bb1b23
SolveSmart1 update
  • Fixresolve resource names in optimization exports0ab0972
Wednesday, 25 March 20262026-03-25
MapSmart1 update
  • FixFix welcome email and null password login crash2d3b28d
Platform12 updates
  • FeatureRemove password field from create user form — backend sends welcome emaile6c4775
  • FixFix MapSmart service token — use real superadmin user ID from env var3af35f1
  • FixFix stale entity list in Users tab — destroy inactive tab panes0973fa1
  • FixFix proxy not forwarding DELETE request body to product backends51dd2dd
  • RemovedRemove pagination from all tables, use virtual scroll; limit org access table heighta8153e4
  • FeatureMove sign out to profile dropdown in header, add support/privacy/terms/about50df199
  • RemovedRemove Organisations and Users from sidebar nav9561b19
  • UpdateUpgrade OrgDetail entity modal to match MapSmart's tabbed layoutc750cf4
  • RemovedRemove commission_rate from reseller modal — not in MapSmart DBfe9680a
  • FeatureAdd password reset and updates log to MapSmart admin portalbced055
  • FeatureAdd recruit.aione.uk to SSO redirect allowlist9c0a8cc
  • FixAdd logging to /mobile/complete endpoint for debugging 400 errorsff94b3e
SolveSmart16 updates
  • Featureadd OGL attribution for Environment Agency water company data41c6141
  • Fixconvert Water Resource Zones GeoJSON from BNG to WGS845597b11
  • Fixmove standpipe display to Job Location tab + trigger on blurd0e3615
  • Featurereal-time water company lookup via Environment Agency datac2d047f
  • Featureshow per-zone new job counts in Solve History paneld963dcd
  • Fixcheck ALL sibling zones when detecting new jobs in single-zone view2ac281c
  • Featureshow new jobs count in Solve History panel unscheduled stat7c5ba78
  • Fixremove org-scoped standpipe fallback — water companies are legally defined8d33865
  • Featureglobal water company lookup via water.org.uk2754370
  • Fixdetect new jobs in getCombinedRouteData for decomposed/territory solves7936466
  • Fixuse project prisma client in standpipe seed script0189cac
  • Featureadd standpipe provider seed scriptd78c073
  • Fixadd 'new' to _excludedBy union type in all InfeasibleJob interfaces90f1341
  • Featureshow new jobs in optimised schedule + MS save endpointa77ee93
  • Featurecustomer/job creation UX improvements395872b
  • FixFix bulk move: pass computed routes to auto-evaluation instead of stale closure3bca0f3
Monday, 23 March 20262026-03-23
InvoiceSmart3 updates
  • FixFix stale Xero connection status after API failuresa053486
  • FixFix Xero token refresh crash — initialize OpenID client before refresh9fc481f
  • FixFix tracking categories not sent to Xero when set via rules only35afbf7
MapSmart17 updates
  • UpdateSOD/EOD submit: auto-complete when workflow template missing instead of 40075d632b
  • FixFix SOD workflow: fallback to user's template assignments when schedule template deleted8ee0945
  • UpdateExcel report: use Crew/Vehicle terminology, show peak + avg daily counts1d4ef55
  • UpdateCollapsible filters: auto-collapse after Apply, expand on Clearf2a8a55
  • FixFix Excel report: group vehicles by depot to prevent cross-depot merging57eda23
  • UpdateStats panel: 2-column layout for Selected/High Risk to make Actions visiblefe58832
  • FixFix risk colour mismatch (use #cc0000 at 0.6 opacity) and enforce 2x2 min grid1560ff6
  • FixLegend: use table layout with fixed 250px width to match other boxesb90edad
  • UpdateWiden legend swatch and increase gap between line and text88c107f
  • FixFix legend text wrapping: add white-space nowrap55766cf
  • UpdateDriver map modal: use Select dropdown for day instead of free inputcdc35ff
  • FixFix TS build errors: add region to RoadSegment interface and filter reset915519d
  • UpdateDriver maps: single day + vehicle picker, widen stats box to 350pxaca0b90
  • UpdateShow yards alongside metres in segment list length column62f6724
  • UpdateWiden sweeping map stats box to 250px02ff364
  • UIStyle sweeping map PDF: match waste side layout with absolute positioningd1d6f4c
  • FixFix OSM tile 403 blocked: switch all maps to German tile server4de4a9e
Platform1 update
  • FeatureAdd recruitsmart.aione.uk and invoicesmart.aione.uk to SSO redirect allowlist974f017
Friday, 20 March 20262026-03-20
SolveSmart6 updates
  • Fixadd missing routeIndex arg to addPendingChange in bulk unplanf1b11be
  • Featurebulk job move via draw-to-select on scenario map5e4f96b
  • FixAI comparison summary double-parsing response8dbcc2f
  • Fixreports stats now computed from actual job/resource dataec0624e
  • Featureadd vehicle class lock to jobs3b03863
  • Featurejob form uses scrollable sections instead of tabsf5f0e05
Thursday, 19 March 20262026-03-19
InvoiceSmart3 updates
  • FixFix XeroContext to read nested response data (res.data.data)2e2dd2a
  • FeatureAdd persistent Xero org name visibility across all pages37d7a7c
  • FixFix tracking category name not saving + add AND/OR conditions to rulesa3c5f32
MapSmart2 updates
  • Fixregion column, solver slot fixes, driver maps, excel fix, fleet cap, sweep method import09b9a95
  • Fixcustom round name not appearing in AIOne Dashboarda59cc47
SolveSmart5 updates
  • Featureaddress autocomplete on job form using Nominatim geocodingd01c574
  • Fixcontrol room draw-to-select not selecting stops18d82bc
  • FixRevert "fix(solvesmart): control room draw-to-select uses left-click instead of right-click"89cbeac
  • Fixcontrol room draw-to-select uses left-click instead of right-click7550ae0
  • Featurestandpipe auto-allocation feature700161e
Wednesday, 18 March 20262026-03-18
AIOne Mobile1 update
  • Featurecross-platform voice commands using expo-speech-recognition5421d33
MapSmart12 updates
  • FixFix sweeping map risks: query street_sweeping_segment_risks by segment IDs7480dad
  • FixFix KeyError in sweeping map: handle string/int day keys consistentlyede36bd
  • FeatureAdd generate_sweeping_map to STREAMING_ENDPOINTS in fetchWithAuthc59e626
  • UpdateRevert VITE_API_BASE_URL removal from MissedCollectionsPage7e547fc
  • RemovedRemove unused Select import from SweepingSchedulesPage68772ac
  • FixFix custom round name not flowing to AIOne from missed collections3ed2ec1
  • FeatureAdd vehicle route maps for sweeping schedules (overview + driver maps)54545f3
  • FeatureAdd PUT /schedule_task_result to API v2 adapter route mappingf0eee9e
  • FeatureAdd Apply Changes button to persist schedule map edits to servercaee1ac
  • UpdateUse compact D1/D2 labels for day selectors in Unplanned Jobs panelaf949f5
  • FixFix sweeper timeslot update: unique constraint violation on slot_sequencebba7b0e
  • UpdateAllow multi-vehicle segment removal and colour All view per vehiclee45cb44
SolveSmart1 update
  • Fixadd /api prefix to aione-auth register-product-user URL50c08eb
Tuesday, 17 March 20262026-03-17
AIOne Mobile3 updates
  • Fixremove deprecated edge-to-edge attrs + add resizeableActivityd8e0766
  • Fixforce voice commands OFF for existing users on settings loada85847a
  • Fixdisable voice commands by default — blocking job completion0144c45
FlowSmart1 update
  • Fixbulk email/download ZIP reliability + size chunking7ebfe80
InvoiceSmart3 updates
  • RemovedRemove dead Rules.tsx page — all rule editing is in TemplateWizarded98fa2
  • FeatureAdd tracking category support to TemplateWizard rules modal4709739
  • FixFix tracking category value input not re-rendering on field changec14edf8
MapSmart2 updates
  • FixFix GARDEN (RURAL) scheduled service: missing region filter and round ref lookup45de983
  • FeatureAdd depot filter to Sweeper Active Services table627c26c
Platform5 updates
  • UpdatePort MapSmart DataTable component to admin portal — all tables upgraded4d83065
  • FeatureAdd sort/filter to all tables, full reseller CRUD, tabbed org modal matching MapSmart770b78b
  • UpdateSort products alphabetically, rename entity labels to organisation874a727
  • FixUI cleanup: rename Entity→Organisation, correct brand colours, add InvoiceSmartda8eb0e
  • FeatureAdd Products page with product-centric superadmin viewb4b22e2
SolveSmart9 updates
  • Fixscenario edit badges + Gantt sorting by dimensions39a4ca6
  • Fixbulk PDF ZIP + email reliability fixesa10c99c
  • Fixreplace field name preview with info icon tooltipbc34136
  • Fixshow all fields in tooltip since it scrolls200b2ee
  • Fixwiden step field tooltip and add scroll for long lists0d515dc
  • Fixredesign step cards with two-row layout + capped tooltipd05d4b6
  • Fixrestore step card truncation with tooltip on hover0adc19d
  • Fixfix dropdown value auto-fill race condition with Form.Item2e2888b
  • Fixfix dropdown option value auto-generation + bulk export/download5c944cd
Monday, 16 March 20262026-03-16
AIOne Mobile2 updates
  • Featureself-location permission + address search in registration & settings19fdcf4
  • Fixvoice workflow completion, Android edge-to-edge fixes, workflow enhancements490f441
InvoiceSmart2 updates
  • UpdateTracking category rules: fallback to text input when Xero has no categories6385574
  • FixFix date format (DD/MM/YYYY) and tracking category rules6264578
MapSmart9 updates
  • Fixswitch OSM tiles to German mirror to avoid 403 rate limitingb4c6aae
  • UpdateExpand sweeping speed slider range to 0.5-14 mph with 0.25 incrementsb6345f0
  • UpdateReplace slow geographic clustering in PASS 2 with snake grid sort0dd694a
  • FeatureAdd Label and Group color-by options to road segments map legend30906af
  • FeatureAdd snake grid re-distribution after PASS 2 vehicle assignment122c3e5
  • UpdateUse snake grid fill for vehicle assignment instead of greedy depot-distance fille393dc1
  • FeatureAdd Group column to schedule viewer/generator segment tablesb20e8f0
  • FeatureAdd label filter to road segments filter panel, auto-group and auto-binda095405
  • FixFix schedule template delete cascade, pre-delete check, metrics recalculation409264e
Platform2 updates
  • FixFix MapSmart proxy auth: sub must be string, remap 401/403 to 5028b1e3f5
  • Featurelook up ModelSmart resources by email directly14e8c5d
SolveSmart18 updates
  • Featureself-location update permission + address search for mobilecd87f36
  • RemovedDynamic recurrence frequencies + remove Templates tab139e97b
  • FixFix useImperativeHandle ordering: move after variable declarations9f4f760
  • FeatureRedesign recurring jobs: merge into Add Job modal with full job spec55ad125
  • Fixexclude 0-eligible jobs from solver instead of empty INCLUSIVEb75e615
  • Featureshow uncovered jobs count on decomposition map9e44a73
  • Fixjobs with 0 eligible vehicles after distance filter now infeasible578d44d
  • Featureemployment type + distance-based job filteringe10b27a
  • Fixextend multi-day solve timeout to 30 minutesb7e9f7e
  • Fixadd gap between slider label and track94924fe
  • Fiximprove Build Scenario footer layoutc513133
  • Featureadd Multi-day vs Day-by-day solve mode togglefd6513a
  • Featureadd Resource Efficiency slider to control solver penaltyaf703e3
  • Fixworkflow submission FK error for resource-based auth82427e8
  • Fixremove unused useCallback import7c33ea1
  • Fixremove unused link-user imports, state, and types5592808
  • Fixremove Link User Account from resource Mobile App tab67e5343
  • Featureresource-based auth for mobile app — resources no longer need User records0bf1514
Friday, 13 March 20262026-03-13
MapSmart3 updates
  • FixFix variable service export: specific_weeks column showing -12952e571
  • FixFix bulk delete performance: disable per-row triggers during bulk ops967f6f8
  • FixFix bulk delete performance and bulk edit label pre-populationd6ad041
SolveSmart3 updates
  • Fixshow full step titles and field names in step cards9f52384
  • Featureadd multi-select toggle for radio button fields3984d91
  • Fixauto-populate value from label, fix CSV import, add template download979d37e
Thursday, 12 March 20262026-03-12
AIOne Mobile1 update
  • FixSolveSmart registration - teal theme, correct fields, step logicbda6691
MapSmart25 updates
  • FixFix schedule activation duplicates, add frequency diagnostic and clear existing option97fae89
  • FeatureAdd frequency diagnostic at generator preview stagefe6e143
  • FixFix schedule generator fixed-day mode and add diagnostic export4ba070c
  • FixFix 404 on segment export/import by adding endpoints to STREAMING_ENDPOINTS20f3eee
  • FixFix SegmentsImportModal: remove invalid isFormData option5720464
  • FeatureAdd bulk segment export/import for editing labels and metadata8cc405e
  • FixAdd frequency mode (fixed_day/flexible), fix activate_template weekend bug, new Scheduling Strategy stepebb94ea
  • FixUse LCM of SLA frequencies for schedule period to ensure correct tilingded68d7
  • FeatureAdd 'Consolidated' distribution mode to schedule generatore8ca656
  • UpdateConsolidate non-daily schedule work into minimum full daysec7bb78
  • UpdateBalance geographic clustering with daily capacity leveling82da7c4
  • FeatureAdd geographic clustering to non-daily schedule assignments24fd74e
  • FixFix apply schedule mapping day_sequence to calendar dates skipping non-working days71975f2
  • FixFix Decimal type error when loading schedule templates52e4b33
  • FixFix Capacity Used card to show average of per-crew utilization3709f15
  • FixFix Total Area card for all schedule loading paths29af0b7
  • UpdateBackfill total_area_sqm for older saved schedule resultsa610286
  • FixFix Total Area and Capacity Used showing zero in Schedule Vieweree93774
  • FeatureAdd sweep days column, blank label filter, and time slot filter2661bac
  • FixFix starred solves validation: parse round_key to round_clusteridfe2c804
  • FeatureAdd extended SLA frequency options (x per week, every 3 weeks)a3e2200
  • FeatureAdd SLA by Label feature for sweeping servicescb34de9
  • FixFix starred solves case mismatch on day_clusterid40f652b
  • FixAdd performance indexes and fix bulk slot overrides N+1 query90ac128
  • FeatureAdd loading feedback to label rename and remove buttons337482a
Platform1 update
  • Featureadd MapSmart proxy support and testing tools in admin portal1a3eafe
SolveSmart8 updates
  • Fixresolve 15 deployed tickets across SS/MS platforms2c4fb78
  • Fixadd requiredSkills and defaultCost to Prisma schema9fc99b9
  • Fixadd requiredSkills and defaultCost to JobType interface679fb81
  • Featurepostcode search autocomplete and global site picker in New Job form5b80360
  • Fixfull registration flow with user account + JWT tokensf7b9860
  • Featureadd Reassign action to table view stops5078868
  • Fixreassign stops, fix data gaps, polygon selection, transit rules5840ddc
  • Featuredark mode, map satellite view, and UI improvements across SS/MS8ad1448
Wednesday, 11 March 20262026-03-11
AIOne Mobile1 update
  • UpdateReplace mailto forgot-password with self-service reset screen7a78eb5
MapSmart10 updates
  • FeatureAdd explicit image names to docker-compose services0599a4c
  • FeatureAdd (No Labels) filter option to road segments table835630a
  • FeatureAdd keep_labels option to manual bind tool4493dc0
  • FeatureAdd keep_labels option to preserve labels during merge3a45ee1
  • FixPersist auto-bind task ID in localStorage for progress recoveryab4208d
  • FixRemove unused variables in AutoBindDrawer to fix TS build202338c
  • FeatureAdd auto-bind tool for bulk segment merging1bfdaac
  • FixHandle string working_days in day restriction comparison5f0d56c
  • Fixdebug: Add assigned_days debug logging to scheduler6194566
  • FixRespect segment-level assigned_days for per-day variation3049482
Platform7 updates
  • Featureinclude full org access flags in /api/auth/me response0b1d14b
  • Fixadd missing redirect URI prefixes for flowsmart and solvesmart734512d
  • UpdateSend SSO users a login reminder instead of password reset21aa6e2
  • Fixadd explicit /reset-password route for clean URLa538ba9
  • FeatureAdd self-service password reset (forgot-password flow)f1ba27e
  • Fixconvert empty domain to null to prevent unique constraint violation1bdddb5
  • Featurerestyle admin portal login to match AIOne branding2bdfe50
SolveSmart1 update
  • FixFix solver cost configuration per Icepack guidance0efef75
Tuesday, 10 March 20262026-03-10
MapSmart17 updates
  • FixFix remove service deleting ALL service types instead of selected one02168fe
  • ImprovementOptimize segment layer rendering with Canvas, GeoJSON, and viewport filtering26266f6
  • UIReplace Ant Design Calendar with compact mini calendar in Control Towerb6a65d5
  • FeatureAdd overflow vehicle routing when enhanced routing exceeds shift time1d043b4
  • RemovedRemove per-segment 0.4km overhead from vehicle workload calculationc57a4e4
  • UpdateSwitch vehicle solver to time-based capacity instead of arbitrary 60% factor7ad36d8
  • FixFix sweep speed defaults: vehicles 5mph, walking crews 2mph0b3e5b3
  • FixFix inconsistent slot display: respect service view_mode instead of hardcoding 'separate'243bda6
  • FixFix vehicle schedule using walking crew mode for some depots357fb5a
  • FixFix vehicle schedule generation: depot_id column doesn't exist in fleet table026f352
  • FixFix 401 errors: remove VITE_API_BASE_URL prefix from schedule API calls5621395
  • FixFix individual mode deselection reverting on consecutive clicksc500fe3
  • FixFix Unplanned slot mapping for saved templates2ba53c2
  • UpdateRename 'Anytime' to 'Unplanned' for unassigned schedule segmentsc3fbf96
  • FixFix Total Area card: use calculate_segment_workload for consistencya9c3834
  • FixFix walking crew travel time estimate in template viewerf85d2fb
  • FixFix Decimal serialization for template speed/hours fields0d6fe46
Platform7 updates
  • Featureadd SolveSmart/ModelSmart provisioning and tabbed org management UI9fdf1a7
  • FeatureAdd superadmin access control, product auto-provisioning, and central product managementad1ac31
  • UpdateUse port 4080 for admin portal (4070 taken by TrainSmart)cccbe8d
  • FeatureAdd centralised admin portal for managing organisations and usersdb03cae
  • FixSecurity fixes: redirect URI validation, hide passwordHash, add salesmart/trainsmart to product access, add stats endpoint15e9dd6
  • FeatureAdd TrainSmart product supportabf24ae
  • FeatureAdd SalesSmart as a product in aione-auth1b051c4
SolveSmart5 updates
  • Fixincrease Node heap to 4GB for Docker build84a1388
  • Fixincrease Node heap size for Docker buildd33ce77
  • Featureadd internal provisioning API for aione-auth integrationb06d092
  • FeatureAdd solve duplication with name prompt46c0d34
  • FixWHite Screen - All Zones9fb41ec
Monday, 9 March 20262026-03-09
FlowSmart2 updates
  • Featuresave dedup, error messages, and dynamic step repetition support8d10e11
  • FixFlowSmart ticket fixes - save dedup, visibility conditions, dynamic step repetition88b7a8b
InvoiceSmart4 updates
  • FixFix multi-org SSO login stuck on 'Completing sign in...' screen3cca7fc
  • Fixaudit fixes for tracking categories, exclusion rules, and notContainse09165e
  • Featuretemplate patterns for field mapping, tracking categories, notContains operatored0590f
  • Featuredescription-only line items with positioning and reordering2695e13
MapSmart15 updates
  • RemovedRemove unused ScheduleRouteMapModal importd78653b
  • FixFix walking crew template viewer: Gantt bar utilization and coverage rate222a09e
  • FixFix segment layer toggles resetting on pan/zoomf10153d
  • FeatureAdd Road toggle to Segment Layers legend on Road Segments page91f51f5
  • FeatureAdd Segment Layers legend to Road Segments mape0e6e05
  • FeatureAdd pavement offset visualization to Road Segments map8c9dca1
  • FeatureAdd visual pavement offset for PVMT A/B segments917b7d4
  • Fixcorrect SQL column reference seg.allowed_depot_ids → asv.allowed_depot_ids1beac0f
  • Fixfix walking crew sweep time, add linear distance, fix template routing6014ecd
  • Fixadd min-width:0 to all page main-content flex containerscf6aea7
  • Fixremove unused imports/variables in LookupStreetNamesModal975ed85
  • Featurebackground street name lookup with cost tracking4f455ea
  • FixAdd Type column, fix Trip Stats depot/slot filtering, add slot filter to map modale403e7b
  • FeatureAdd segment_type (road/pavement_a/pavement_b) to schedule generation and template details2fac63f
  • FixFix schedule viewer stats merging across depots for same crew numbersef0e70a
SolveSmart3 updates
  • FixResolve 4 ModelSmart UI tickets (#19, #20, #23, #28)a334d8a
  • Fixadd min-width:0 to flex containers to prevent table overflowda23553
  • FixQuick UI fixes for 5 ModelSmart ticketsad86d8e
Thursday, 5 March 20262026-03-05
AIOne Mobile4 updates
  • FixAdd SolveSmart access code validation for app registrationd3c8c86
  • Fixdisable new architecture - HERE SDK native modules not registered6b75897
  • FixHERE Maps not loading on iOS production builds (new arch)76785ff
  • FixAndroid Google SSO login not completing (deep link fallback)c160717
MapSmart4 updates
  • Featureadd efficiency % and gantt bar to separate view vehicle rows90f9220
  • Fixfilter slot crew counts by selected depotd58044a
  • Featureadd Group and Labels columns to active services table8e7e001
  • FixFix GAR sync: re-activate soft-deleted services instead of skippingedde08a
Platform2 updates
  • Fixonly count street_sweeping_resources as MapSmart resource profiles59f57b2
  • Fixfilter org selection to orgs where user has a resource profile556e14f
SolveSmart4 updates
  • FixResolve 5 ModelSmart bug ticketsbe80f64
  • FixUse hardcoded teal colors for portaled modal buttons8080943
  • FixResolve 7 SolveSmart bugs from ticket system8e78949
  • FeatureCombined zone view, per-zone starring, unplanned diagnostics, resource utilisationdc6c351
Wednesday, 4 March 20262026-03-04
AIOne Mobile2 updates
  • Fixstop repeated OTA update prompts and bump runtimeVersionf09ec5f
  • Featureadd Android versionCode guidance and troubleshooting to RELEASE.md565a177
MapSmart15 updates
  • UpdateIncrease solver task time limits: 20min soft, 25min hard34bd8bf
  • UpdateIncrease IcePack polling budget: 20 retries, 20s delay, 15s initial8d4fe09
  • UpdateIncrease IcePack poll timeout from 30s to 60s4358a61
  • FixAdd retry on polling timeout instead of failing immediately48c4654
  • FixAdd entity_id filter to proximity matching queriesab375f5
  • FixAdd automatic retry on scheduled pipeline failureffaeb9b
  • FixFix walking crew schedule generation: send resource_type from frontend and auto-detect from fleetff6bc52
  • FixFix is_walking_crew attribute error in ScheduleGenerator3871629
  • FixFix migration script to use DB_* env vars160109f
  • RemovedRemove unused Form import from LabelManagementDrawer4c0f377
  • FeatureAdd Manage Labels drawer and label management endpoints4d18e58
  • RemovedRemove unused TagOutlined importf60089b
  • FeatureAdd labels to segments, remove group_type from groups036235f
  • FeatureAdd group_type (label vs work) to segment groupsa9f6f92
  • FeatureAdd custom round name for missed collections pushed to AIOne4b00b64
SolveSmart1 update
  • FixResolve location ID mismatch in scenario edit + fix(MS): Planned vs Actual enhancements905b260
Tuesday, 3 March 20262026-03-03
AIOne Mobile8 updates
  • FixiOS fixes, SOD lockdown, offline queue improvements, cache clearinga594cdc
  • FixiOS HereMapView crash - use RCTBubblingEventBlock for events12dd865
  • Fix5 UI bugs - calendar, workflow header, back buttons, map fallback71b7740
  • FixMapSmart Map tab not showing groups - fall back to geometry coords4f63434
  • Fixchain repeat step instances for correct navigation flow5c79e3a
  • Fixlazy-load expo-image-manipulator to prevent crash on older binariesdf96934
  • Fixresolve TypeScript errors and add iOS map support in HereMapView6db6c6d
  • Featureadd HERE Maps iOS native implementationb2e74c9
InvoiceSmart3 updates
  • Featureper-line-item rule assignment2e3c6af
  • Fixrules not saving in Template Wizard (same bug as Rules page)4225870
  • Fixrules now persist immediately on save, fixing "rules not saving" bug7ff5957
MapSmart10 updates
  • FixFix workflow preview: interactive photo/signature/location + submit success screendf0c6c8
  • FixFix GAR sync: add entity_id to INSERT + revert export JOIN changeaab0289
  • FixFix export JOIN: remove entity_id condition matching services list7bad8ce
  • FixFix export returning 1 row: align region filter with services list6d7621b
  • FeatureAdd sweeping method field to single-edit active service modald1c0339
  • FeatureAdd pavement_mode to service type SELECT queries56878fe
  • FixFix selection counts to show total active service rows, not unique segment IDse03028e
  • FixFix unused variable TS errors in RiskPage components31c1987
  • FixFix pavement segment_type display + add sweeping method override on active services7e77eb6
  • FixFix NameError: pass current_week_number to execute_batched_submission3ed5541
SolveSmart16 updates
  • FixInclude hasDispatched flag in scenario listing APId2e17d7
  • FixUse icon-only dispatched tag on scenario cardb0cb8bd
  • FixMove dispatched tag below solve count on scenario cardff677b8
  • FixAdd dispatched icon on scenario card headerbcdc865
  • FixShow Dispatched tag on scenario and solve cardse9c880c
  • FixPass dispatch date to Control Room via URL param7252d22
  • FixShow Go to Control Room prompt after dispatch2780e46
  • FixReorder side menu - Job Management below Import, above Planning Roomd59246c
  • FixAdd Control Room link in Dispatch panel & move Job Management to Planning menu6bf4ee1
  • Fixfix stats panel job counts, total time, schedule rate, and route selectf74d10b
  • Fixcomplete undo/redo history tracking and preserve capacity stats5da8d46
  • Fixuse backend solve stats for total time/distance, fix undo/redo auto-eval3e10cfe
  • Fixscope z-index overrides, fix job error count, remove dead code18205c6
  • Fixfix breaks disappearing after eval and drag/drop around breakse75813c
  • Fixaggregate optimisation stats across all solve zones7170aa7
  • Fixstrip invalid vehicleRelations in single-vehicle evals + chain repeat step navigation0c8c7e4
Monday, 2 March 20262026-03-02
AIOne Mobile9 updates
  • Featureadd navigate button on group details segment rows7e12718
  • Fixadd proper padding to adaptive icon for Android safe zone47acc14
  • Featureadd voice command for segment arrival (start sweeping)7a88a16
  • Fixuse reactApplicationContext.currentActivity for Kotlin 2.1.20 compatba1f390
  • Featureadd segment search bar and voice command native module2f514c6
  • Fixresolve TS errors in register.tsx and use map-matched GPS coordinatese129481
  • Fixwire up route deviation and rerouting event listeners0cc4683
  • Fixresolve 8 TypeScript errors in WorkflowForm35b75d9
  • Fixconvert HEIC photos to JPEG before upload on iOS5cca527
InvoiceSmart5 updates
  • Fixbetter Xero error logging and handle empty line items after zero-value filter34db2c3
  • Fixcoerce reference field to string (was failing when Excel cell is numeric)2e2e42a
  • FeatureUpdate Upload page with multi-line-item support, add error logging18267c3
  • FeatureAdd multi-line-item mapping, remove zero-value line items toggle, full-width layout84431c9
  • Fixsave button visibility, rules bugs, Item field, rules enhancementsf76296e
MapSmart19 updates
  • UpdateRewrite backfill to process territory-by-territory, smallest first87d140d
  • UpdateSwitch locality geocoding to p3 (~110m) for higher accuracy9718a95
  • FeatureAdd standalone backfill script for segment locality geocoding7fc27b7
  • FeatureAdd locality geocoding for sweeper segment risk groupingb363247
  • FixAlign sweeper auto-risk hazard names with hazardColorMap8f03dfb
  • FixAdd sweeper risk endpoints to STREAMING_ENDPOINTS map0bff044
  • FeatureSweeper module risk management (Ticket #5)4d85c30
  • Fixadd yesno/boolean/summary to shared workflow metadata and validationf3fe66d
  • Fixadd yesno/boolean/summary to FieldType in shared and local types55e2bbf
  • FixSelect All Visible now respects table column filters (sweep method, etc.)04ef8d9
  • Fixadd yesno/boolean/summary to FieldType for build compatibility7a4e67c
  • Fixmake workflow preview interactive for testingcf3017f
  • Fixremove Send to AIOne button from Route Optimisation pagecd7ad40
  • Fixonly show starred weeks in flattened round entriesb26dc9c
  • Fixflatten fortnightly rounds into per-week selectable entries6c16e82
  • FixSOD/EOD workflows not visible in mobile app8a1cff3
  • Fixcast UPRN list to integers for address endpoint ANY() queryd36eebe
  • Fixcorrect column names in external API queries (st.name → st.service_name, st.frequency → st.frequency_type)ff4f9b8
  • Fixexternal API 500 error (wrong table name) + API key not showing in entity modal2b032f3
SolveSmart15 updates
  • Fixmove route analysis utilization summary inline with header controls2399221
  • Fixscope fullscreen z-index overrides to prevent modal dropdown clippingca69563
  • Fixadd scrollable legend to territory zone map for many zones543b2ca
  • Fixcorrect CSS variable names in resource utilization summary89d5900
  • Fixsolve type dropdown hidden behind modal footer52e7142
  • Fixunplanned jobs count showing all project infeasibles instead of per-solvea54faee
  • Fixscope AI report storage by user+org, not just org140458f
  • Fixkeep AI report conversations across logout/login1c46891
  • Fixscope AI report conversations to organisation (GDPR fix)1ba6912
  • FixResolve TypeScript build errors790b243
  • FixUnplanned jobs count/stats bugc9fd74f
  • FixMulti-select for assigning resources to projects8bd9344
  • FixResolve TypeScript build errors449c978
  • FixResource dates relative to solve19622ab
  • FixSolve selection in optimisation866e491
Sunday, 1 March 20262026-03-01
SolveSmart1 update
  • FixOptimisation sequence display - reverse orderb2f6673
Friday, 27 February 20262026-02-27
MapSmart2 updates
  • Fixfilter by day AND week in get_current_services_for_roundc4297aa
  • Fixregion-aware round building for GAR 2026 scheduled services3f6fe11
Thursday, 26 February 20262026-02-26
AIOne Mobile2 updates
  • FeatureAdd SolveSmart mobile integrationfa26cf3
  • FeatureMove Support to main profile menu, clean up Legal screen0334f11
InvoiceSmart5 updates
  • Fixeliminate login flash by restoring auth state synchronously43326c6
  • Featurerevoke token at Xero on disconnect + add info tab906cc75
  • Fixuse brandmark instead of full logoc9b5940
  • Featureredesign layout to match SolveSmart/ModelSmart pattern97de644
  • Featuremulti-column mapping for import templates18c2159
MapSmart15 updates
  • Fixincrease spacing between API key box and warning text in PDFfc1fd02
  • Featureadd logo and branding to external API docs PDFfa19ff3
  • Fixfilter solve history by regiond95193d
  • Fixinclude region in starred solve unique index2464bb2
  • Featurepush missed collections to AIOne + external API key support85818bc
  • Featureregion-aware round grouping in scheduled servicesa210e94
  • Fixupdate Leaflet fullscreen control API across all map components919b0d4
  • Fixsort Setup menu items alphabetically1937d0b
  • Fixconstrain scheduled-services page height for header7269fd6
  • Fixadjust roadcluster/risk page height for 64px headercbec8e3
  • Featuremove Sweeping Schedules to Execution group, remove Service Support from sidebard902908
  • Fixadjust page heights for 64px header + move Control Tower to Execution groupc8095a5
  • Featuremodernise header & sidebar to match IS/SS/MS pattern7270466
  • Featureadd pavement segment support for active services5cd1c60
  • Featureadd satellite view toggle to all maps + pavement A/B columnscb03254
SolveSmart7 updates
  • FixControl Room v2 + dispatch fixes75cf80a
  • Fixrender dropdowns above modals via global ConfigProvider93dac6d
  • FeatureAdd actual time columns to visit scheduling and jobsbadf7be
  • Fixevaluation overlay UX polish + Select All for MS tablescd76254
  • Fixuse en-GB locale for all date formatting + improve AI report error handlingabf26e6
  • Fixtransit rule bugs after route adjustment + export formatting7b45709
  • Fixsynchronous busy state propagation for validate buttone333c27
Wednesday, 25 February 20262026-02-25
AIOne Mobile9 updates
  • ImprovementUpdate RELEASE.md with iOS automated review submission workflowa77138d
  • FeatureAdd iOS App Store review submission automation script569375a
  • FixFix version source: bump package.json to 1.1.0 (app.config.js reads from package.json)c729d2b
  • UISwitch to local appVersionSource and set iOS buildNumber for v1.1.05b826cb
  • Fixadd Submit a Ticket link to fix.aione.uk portale3d7efc
  • FeatureBump version to 1.1.0 and add ascAppId for App Store submissionda2b1e2
  • Fixupdate HERE SDK Swift code for v4.25.0 API compatibilityaf64379
  • Fixcorrect source file paths in Xcode project pluginbcdd9d2
  • Fixadd HERE SDK native modules to Xcode project build sources5e94e33
MapSmart3 updates
  • FixRural/Scatter rounds not visible + Auto missed not flowing througha0400df
  • ImprovementUpdate GAR sync from GAR2025 to GAR20266234404
  • Fixredirect Service Support to fix.aione.uk public portal07759e5
SolveSmart17 updates
  • Fixrestore last page for multi-org users7e4c6f6
  • Featurerestore last visited page after login22a1060
  • Featuregroup side menu items into logical sectionsc85b02d
  • Fixensure modals and messages render above fullscreen overlayb5c659f
  • Fixauto-assign drivers by vehicle reg + prevent duplicate assignmentsfc7f8d7
  • Featurelink workflows to job types with auto-assignment8788ef7
  • Fixz-index for Select dropdown in fullscreen route analysiscd6bbc8
  • Fixadd route map preview to dispatch panel3296db7
  • Fixredirect support ticket links to fix.aione.ukf26e2f3
  • Fixdisable Validate button while rules are being appliedcfdb601
  • Fixroute analysis - unplanned job leak, double-fire, linked jobs62522e4
  • Fixadd missing driverAssignments prop and dispatch service files707dd1c
  • FixGantt view enhancements - dispatch panel, evaluation overlay, driver assignments6d9f01f
  • Fixadd missing jobCustomerMap prop to GanttRouteRow09da11e
  • FixGantt chart enhancements - tooltips, distance, pluralisation86975d8
  • FixRevert "fix(SS): Gantt chart enhancements - tooltips, distance, pluralisation"9734539
  • FixGantt chart enhancements - tooltips, distance, pluralisation07206aa
Tuesday, 24 February 20262026-02-24
AIOne Mobile1 update
  • Fixtreat 'already submitted' as success instead of retryable failure878a3ed
SolveSmart7 updates
  • Fixconsistent export buttons and refresh alignment across all tables93f0840
  • Fixresolve 7 ModelSmart tickets + fix DataTable export stale state75285a9
  • Featureschema: add loadAttributes JSON field to Job model34354d5
  • Featureadd Job Management & CRM models8c17561
  • Featureadd CSV and Excel export to all DataTable instances9953248
  • Featureadd SolveSmart Control Room models237e1e0
  • Fixexport dropoff+unplanned, capacity columns, AI report persistencea3516b1
Monday, 23 February 20262026-02-23
AIOne Mobile1 update
  • Fixprevent no-account screen from revoking all user sessions8817cc7
MapSmart17 updates
  • FixFix space bar not working in location search filtersf462738
  • FixFix in-memory update of scheduled calendar after Full Optimisef3d83d6
  • ImprovementUpdate scheduled_calendar in-memory after Full Optimisee14114c
  • UpdatePropagate Full Optimise times to scheduled_jobs tablee028b1d
  • FixFix optimize_route crash: coerce speed/hours params to numeric types5395aa5
  • FeatureCarry generator speed settings through to Full Optimise and add per-job setup timeffca95d
  • ImprovementAuto-save optimized route order after IcePack optimisationb3187e1
  • FixFix arrival/departure times not showing after Full Optimise on ScheduleViewPage13b2eb1
  • FixFix IcePack trailing slash - 301 redirect was converting POST to GET (405)a0242aa
  • Fixuse shared JWT secret for aione-auth call instead of separate API key8475c72
  • FixFix IcePack IVR URL - use vehicle-router/solve and don't append model ID to URL01996e6
  • Fixcall aione-auth during access code registration so users can re-login7cdacae
  • FixFix IVR default URL to /ivr/solve matching SolveSmart21b764a
  • UpdateSeparate IVR and ISR IcePack env vars completely50270e2
  • FixFix IVR client model ID - don't fall back to ISR model00f490e
  • FixFix IcePack client using test URL instead of productiona94285f
  • FixFix optimize_route 500 error - method was renamed to optimize_work_items19c0c02
Platform4 updates
  • Fixpreserve selected org across token refresh for multi-org users8b96721
  • Fixadd logout endpoint logging for debugging token revocationse4791bf
  • Fixuse shared JWT for internal endpoint auth instead of separate API key89e2467
  • Featureadd internal register-product-user endpoint for service-to-service registrationd6cb603
SolveSmart18 updates
  • Featureauto-scroll to job in table when map marker clicked9039f54
  • Fixmove unplanned sort dropdown to compact header iconefe0efd
  • Fixpreserve _isNewJob and _jobData through evaluation merges90a7ee7
  • Fixmap aione-auth product IDs in local JWT verification529f9a1
  • Fixadd exponential backoff to SSE reconnectione3b0cea
  • Fixadd exponential backoff to SSE reconnection55a6150
  • Fixinclude stops data in evaluation request for new jobs9c82c0c
  • Fixprevent evaluation results being wiped by routes reset useEffect13ad92d
  • Fixadd taskId to reconstructed job pickup/dropoff tasksd5960c9
  • Fixpass coordinates and time dimension for rule-excluded jobse00200a
  • Fixalso preserve manually-added jobs from infeasible path8f54800
  • Fixresolve TypeScript errors in modelSmartOptimisationControlleraa456e7
  • Fixpreserve manually-added unplanned jobs during evaluation mergea8ee31f
  • Featureadd workflow drag-and-drop reordering + custom job types + territory decomposition9bd029d
  • Fixresolve 19 bug tickets across SS and MS modulesd62da1d
  • Fixuse shared JWT secret for aione-auth call instead of separate API keyf4f197e
  • Fixcall aione-auth during access code registration so users can re-loginbd2b49d
  • Fixallow overnight time windows for night shift jobs7ae184a
Thursday, 19 February 20262026-02-19
AIOne Mobile3 updates
  • Fixprevent "No refresh token" error on login with wrong credentials6061be8
  • Fixresolve Apple review rejections - privacy manifest and login bug1be658d
  • Fixserver health check fallback for offline sync - bypasses NetInfo when server is reachable, shows clear connectivity feedback to user87ab377
SolveSmart2 updates
  • Featureenable multi-tenant Azure AD SSO for external organisations1eeb5b8
  • Fixrecord cancellation metadata and audit logs for visit status changes626560a
Monday, 16 February 20262026-02-16
AIOne Mobile2 updates
  • Fixinclude fileName and mimeType in offline attachment submissionsb6a4c34
  • Fixreplace hard 5-retry cap with exponential backoff, add Force Retry buttonafa4810
SolveSmart1 update
  • Fixhandle offline-synced submissions with base fieldIds in repeat stepsa5bf1cf
Friday, 13 February 20262026-02-13
AIOne Mobile2 updates
  • FeatureAdd dynamic step repetition and summary step supportdbe27a4
  • FeatureAdd email/password login, update notifications, base location managementd9abeaa
FlowSmart3 updates
  • FixFlowSmart ticket fixes - permissions, rejection emails, auth tokens, submission source48fdc3f
  • Fixstep list overflow on small screens + export authb545fe3
  • FixFlowSmart ticket fixes - AND/OR conditions, permissions support, auto-fill options61f51c0
MapSmart3 updates
  • Fixremove unused DatePicker import from ControlTowerPage2bd3931
  • Fixresolve 6 mapsmart tickets - binding, date picker, search, segments, lookups, workload9badad5
  • Fixauto-close previously closed missed tickets to prevent reappearing1ff0451
SolveSmart20 updates
  • Featureadd quantity edit handler and wire up to DetailsPanele09dca6
  • Fixsuppress unused variable warnings in DetailsPanel quantity edit featurea38afb0
  • Featureshow total distance in Gantt footer statsc65a151
  • Fixfix naming, unique prefixes, skip depot breaks, include names in API5bf3546
  • Fixadd break cards to DetailsPanel, fix rule name lookup, revert Gantt 2min marker73c76c6
  • Fixrule names from DB, fix auto-scroll, improve name lookupa6fddc4
  • Fixshow rule names and fix Gantt break positioning21bb20c
  • Fixbatch bug fixes for SolveSmart and ModelSmart tickets681edb6
  • Fixenrich solver request with DB useStandingState/useTransitState flags4086001
  • Fixuse prisma db push instead of migrate deployde6774a
  • Fixconvert global stop indices to per-route for transit rule breaksdf16dfd
  • Fixuse ruleId labels, fix break positioning and tooltip placement08bb490
  • Featurevisualise transit rule breaks in Gantt, table, and map4f7691a
  • Fixstop skills from overwriting vehicle transitRuleIds4bc6d2b
  • Fixinclude transit rules (lunch breaks, fatigue) in solver model0054ef3
  • Featureadd WhatsApp chatbot integration for SolveSmart & ModelSmart3726c0e
  • Fixshow break type name in jobs table instead of generic BREAKbfc5805
  • Fixper-vehicle shift start offset for time transit rules236fc72
  • Fixconvert time-based transit rule triggers from relative to absoluteb7a4496
  • Fixpass transit_rule_names through ScenarioMap to child componentsd9c53da
Thursday, 12 February 20262026-02-12
MapSmart1 update
  • Fixlazy-load sklearn/osmnx to prevent import deadlock, filter empty crews, fix depot-scoped vehicle stats5ddd813
SolveSmart6 updates
  • Fixadd missing scenario route registration594212a
  • Featureadd bulk edit, depot picker and setup tab improvementsc7b3e03
  • Featureenhance export templates with transform rulesfa47a4b
  • Featureadd AI-powered report builder for MS and SS platforms6c75efa
  • Featureenhance fullscreen route analysis with map and Gantt improvementsdb8d98d
  • Featureadd system data fields, summary step and PDF generationffc16d7
Wednesday, 11 February 20262026-02-11
MapSmart4 updates
  • Fixwrap React.Key in String() to fix TS2731 build errors6edd752
  • Featureimplement grid-based snake fill for walking crew assignmentaea82bc
  • Fixrender bound segments as separate polylines on all mapsdca3f9a
  • FixFix walking crew solver creating 10-20x too many crews6874b91
Tuesday, 10 February 20262026-02-10
MapSmart2 updates
  • FixFix single segment update to include sweeping_method and osm_highway_typeb184544
  • FixFix activation creating 0 jobs due to day_of_week mismatchaca7c83
Platform2 updates
  • FixFix mobile SSO missing hasModelSmartAccess flags in response8c01e27
  • FixFix mobile SSO missing hasModelSmartAccess flags in response2e2376a
Monday, 9 February 20262026-02-09
MapSmart9 updates
  • Fixschedule template activation and is_active field issues9da103a
  • Fixadd is_active to get_schedule_template_details response2d1b018
  • Fixuse correct is_active field instead of has_scheduled_jobs765d546
  • Fixrestore toggle activate/deactivate functionality22a0bdf
  • Fixproperly activate schedule templates with job creationc093761
  • Fixmove getExportUrl outside WorkflowApiClient adapter767111a
  • FixFix workflow type compatibility for external packagec9c4b73
  • FixFix workflow type compatibility for Docker build456e440
  • FixFix depot logic, API endpoints, and TypeScript errorsab3b934
Platform1 update
  • FixFix product access sync: respect per-user access flags and cleanup stale rows79f8e30
SolveSmart6 updates
  • FixWorkflow enhancement - variable to determine following steps or fields1bcfcd2
  • FeatureAdd CSV options for headers and BOM encodingc9c526d
  • FixReporting from completed workflows7005f80
  • FixEnabling workflow summaries35c599a
  • FixSystem generated fields - workflowf839b60
  • FixResource rates from app42f760f
Sunday, 8 February 20262026-02-08
AIOne Mobile6 updates
  • FeatureAdd Git LFS tracking for AAR filesfaedbb9
  • FixFix orientation change + speed display during navigation simulationfffc514
  • FeatureAdd Data & Storage screen with GPS tracking stats9b6d13d
  • UpdateClean up unused assets, use aione-logo for splashcbf4505
  • FixAdd GPS tracking indicator + fix app icon668a6de
  • FixFix location tracking - segment_id no longer required04ecb89
Saturday, 7 February 20262026-02-07
AIOne Mobile1 update
  • FixAdd screen wake lock and fix orientation handling8d57011
MapSmart9 updates
  • FixMinor fixes and UI improvements4fa8cfe
  • ImprovementEnhance schedule templates management23c0108
  • ImprovementRefactor schedule viewer5c7f8a6
  • FeatureAdd active services import/export9badd1f
  • FeatureAdd sweeping method supportd7ca755
  • FeatureAdd walking crew support115f43e
  • FeatureAdd depot assignment supportcb3bfed
  • FeatureAdd performance indexes for schedule viewer1398ed9
  • FixFix duplicate group member rows in template save - DISTINCT ONf2cdf59
SolveSmart9 updates
  • FixDuplication of visibility conditions in fields and steps89b0876
  • FixImport capabilities for workflowsbf618eb
  • FixSkipping steps in workflowc94e59e
  • FixJob icon on map enhancement12b24bc
  • FixTransform rule enhancementa121933
  • FixR and S unplanned jobs visibility5432c0c
  • FixRemoving jobs from a route1d26285
  • FixSave function in "review solve fullscreen" is not working4b2fe0d
  • FixMap icon enhancementee5265e
Friday, 6 February 20262026-02-06
AIOne Mobile4 updates
  • FeatureAdd HERE SDK .aar to android/app/libsc6a0046
  • UpdateWire up disclosure modal to Start Route flowcccdeb6
  • FixFix location permission flow to show disclosure modal first9512258
  • FeatureAdd pedestrian routing for walking crew mode in HERE Maps7481656
MapSmart10 updates
  • FeatureAdd diagnostic logging for duplicate segment expansion4ec822b
  • UpdateDeduplicate segment+slot during vehicle assignment clustering12b7637
  • UpdateDeduplicate segment+day+slot during multi-depot merge4768b32
  • UIDeduplicate segment+slot combinations when building scheduleec7360b
  • UpdateUse execute_values for bulk insert (10-100x faster)97c7005
  • FixFix N+1 query performance in Celery template save task3d73341
  • FixFix template save performance and walking crew support3cd1fd5
  • FeatureAdd backfill script for missing service_routes since Jan 2965f16a0
  • FixFix service_routes not populated after collection ID format changed82fed9
  • FeatureAdd resource_type (vehicle/walking_crew) to templates, jobs, and mobile API131a48a
SolveSmart9 updates
  • FixGantt view51fa618
  • FixEnforcement rule for jobs7527b27
  • FixExport rule enhancementbe35591
  • FixWorkflow not submittingc1b932a
  • FixError message remains after errors have been resolvede088d3a
  • FixPlanning date identification8d870e1
  • FixBulk edit capabilitiesb2b31c7
  • FixManually moving a job within a tripbdfac10
  • FixWorkflow rules enhancement - all modulesbcb80bb
Thursday, 5 February 20262026-02-05
InvoiceSmart1 update
  • Fix'View' Action button not sized correctlyacb1316
MapSmart31 updates
  • FeatureAdd dynamic terminology for walking crews vs vehicles92e6186
  • UpdateAuto-detect walking crew mode from service type configuration720947f
  • FeatureAdd walking crew parameters to Celery task signature3d68f40
  • ImprovementUpdate frontend to handle per-depot vehicle numberingb716dbd
  • UpdateChange vehicle numbering to be per-depot instead of global5236c73
  • FixFix optimize route to denormalize segments before sending to API5997283
  • FixFix optimize route API to handle GeoJSON geometry coordinates3143259
  • UIRedesign Resources tab from card grid to table view0095c0d
  • ImprovementUpdate road segment processing thresholdsdc02869
  • FeatureAdd road segment processing sub-stepper to Status pagee8af8ac
  • FeatureAdd compact mode toggle to Risk, Route Optimisation, and Road Cluster pages8897c07
  • FeatureAdd missing ActiveServices modal components96ae2d2
  • FeatureAdd missing LookupStreetNamesModal component111d178
  • FeatureAdd multi-row selection for bulk delete on Schedule Jobs pageb16933d
  • FixFix depot query to only use START hubs for auto-proximity allocationf77c427
  • UpdateTruncate Schedule Generation button text with ellipsis65016a7
  • UpdateApply height constraint to all action-stats container variants0bb6e1a
  • FeatureAdd compact mode toggle to UPRNPage, ServicesPageV2, VariableServicesPage, FinalServicesPagee35ad02
  • UIMove scroll/compact mode styles to common statspanel.cssdbdbd33
  • FixFix button styling: Bulk Edit and Individual Mode use green-button-uprnc5bd999
  • UpdatePrevent button shrinking in scrollable Actions areadfa670b
  • UpdateConstrain stats/actions container height to enable scroll0fb6eaa
  • UpdateForce scrollbar visibility on Actions section1037202
  • FixOnly Actions section scrolls, not Stats/Selection82f2763
  • FeatureAdd scrollable action-stats sidebar with visible scrollbar642f6c6
  • FeatureAdd compact mode toggle for Actions buttons52a61dc
  • FeatureAdd map overlay spinner for Apply Service operation6545680
  • FixFix DataTable height recalculation when sibling elements appear/disappeared28442
  • FixFix road segments table height and scrollbar visibility60540a8
  • ImprovementAdjust table height offset and improve scrollbar visibility07405b4
  • FixFix road segments table: rows cut off and invisible scrollbar900b55f
Wednesday, 4 February 20262026-02-04
InvoiceSmart1 update
  • Fix'View' Action button not sized correctly2fac225
MapSmart3 updates
  • FixFix type mismatch in set_previous_day_cluster9ecfb75
  • FixFix N+1 slot queries in get_all_active_services7f98365
  • FixFix selection to ADD instead of replace, optimize slot queries4ab7b70
Platform2 updates
  • FeatureAdd User.Read scope for Microsoft Graph API accessb441e89
  • FixFix Microsoft SSO for hotmail/personal accountsfc82070
SolveSmart3 updates
  • FixDon't copy conditions when duplicating fieldsddb4186
  • FixDon't copy branching settings when duplicating steps28368b3
  • FeatureExtend system_data with job/project fields and add protection0345eb4
Tuesday, 3 February 20262026-02-03
AIOne Mobile1 update
  • FeatureAdd FlowSmart product support with workflows UI39fcf85
FlowSmart5 updates
  • FixReorder routes so /groups is matched before /:idb4f772b
  • Fixdebug: Add logging to trace organisation ID in contacts routes9b4ee2a
  • FixUse flowsmart product code in contacts routesd0f3536
  • FeatureAdd Group Share feature for batch form distribution9efb0fa
  • FixCompute stepCount, fieldCount, submissionCount for templates909cd76
MapSmart18 updates
  • ImprovementOptimize ActiveSweepingServicesPage performance30c5cc8
  • UpdateDefault to freeform selection mode on RoadSegmentsPage12e12e8
  • ImprovementOptimize RoadSegmentsPage performance with O(1) selection lookupse6762f1
  • FeatureAdd Flask-Compress to docker requirements18468f0
  • FixOptimize large dataset performance with gzip compression and selection fixes2e22ba0
  • RemovedRemove unused message imports691b98d
  • ImprovementOptimize freeform selection: inline point-in-polygon with Float64Arrayad4808d
  • ImprovementOptimize selection: single callback instead of batched callbacks59cae0b
  • UpdateReplace selection limit with batched processinge282c27
  • FixFix 500 error on schedule export - use task_id instead of sending large payloadse3b5beb
  • FeatureAdd selection limit to prevent browser crashes on large selections8c33c1f
  • FixFix rectangle and freeform selection tools not workingf70a766
  • FeatureAdd multi-term search for road segments808eed6
  • UpdateSimplify ticket close - allow any non-closed ticketdff81f0
  • FixFix FILTERED ticket matching - use LIKE for suffixed classifications84216f4
  • UpdateAlso allow closing ERROR tickets in missed collectionseb3e3bb
  • UpdateAllow closing both VALID and FILTERED ticketsce6bf8f
  • FixFix scheduler not passing round_plan_names and round_refs204aace
Platform1 update
  • FixFlowSmart uses aione-auth org ID directly for product organisationId2e2945a
SolveSmart10 updates
  • FeatureHumanise solver terminology for planner-friendly UI582c512
  • FixSettings page improvements and route fixes113cbd0
  • FeatureAdd configurable currency settings for ModelSmart3a58e14
  • FeatureAdd multi-select for vehicle class and attribute constraintsaeb128a
  • FixUse totalOriginalJobs for accurate solve statisticsd93b3b9
  • FeatureAdd editable time windows and preserve leading zeros41562f6
  • FeatureAdd column settings, collapsible pickups, and departure markers88572d9
  • FixShow additional time window columns in validate screen5309e95
  • FixFix multiple time windows for solver and validate displayf290cb6
  • FeatureAdd customerId field and multiple time windows support7c6ff7d
Monday, 2 February 20262026-02-02
FlowSmart2 updates
  • FeatureAdd CSV/Excel export for workflow submissionsf268e4d
  • FeatureAdd export button to SubmissionsDrawerb4c984f
MapSmart1 update
  • FeatureAdd submission export support for MapSmart199691d
SolveSmart12 updates
  • ImprovementClean up scenario map and grouping logicc0eabb2
  • FeatureEnhance IVR7 model building from import4ec0ad6
  • FeatureUpdate FullScreen route analysis UI styles and components62138fc
  • FeatureAdd customizable table props across MS and SS components4360514
  • FixFix rule-based unplanned job handling and add dimensions to context menud8395b1
  • FeatureAdd sticky solve type preferencecdb3e93
  • FeatureAdd loading state to OK button on submitc2f7bb8
  • FixRequire template selection before import8f00268
  • FeatureAdd vertical action bar and position drag auto-evaluatea8b7b79
  • FeatureAdd missing table customization files1ad7311
  • FixAdjust vehicle swap tooltip position to prevent blocking buttonddf8222
  • FixFix VOR toggle and data loss in vehicle editinge363766
Sunday, 1 February 20262026-02-01
SolveSmart1 update
  • UpdateMajor map performance optimizations for high-volume solves37862c5
Friday, 30 January 20262026-01-30
AIOne Mobile4 updates
  • UIChange org selection to require product tap73cbb59
  • FeatureAdd FlowSmart support to org selection344cf7a
  • UIChange org selection to require product tapb741ce4
  • FeatureAdd FlowSmart support to org selection6f61c42
FlowSmart5 updates
  • FeatureAdd flowsmart product and submission entity type to attachment uploads411f3b6
  • FixFix templates route to use product-specific org ID802d629
  • FixFix seed script to use database service singleton02d34ec
  • FixFix seed script import path6c3944a
  • FeatureAdd FlowSmart seed script and types36560c5
MapSmart5 updates
  • FixFix missed bins lookup to use original service name191169d
  • FixFix day_week_clusterid validation for new services merged6e1ace
  • FeatureAdd day_week_clusterid support for multi-week cycles4f37761
  • FeatureAdd support for new services added after solve was starred1da466c
  • FixFix timezone comparison using naive UTC datetimes54a7cd4
Platform4 updates
  • FixSync organisation names from MapSmart to aione-auth320fe47
  • FeatureAdd FlowSmart product support98f521e
  • FeatureAdd FlowSmart product support to auth service94d7100
  • FeatureAdd FlowSmart access sync to ProductSync service5e9d74f
SolveSmart1 update
  • FixDuplicate steps in workflow tabb6a1ebf
Thursday, 29 January 20262026-01-29
FlowSmart1 update
  • FeatureAdd unified pre-upload endpoint for all products317f091
MapSmart8 updates
  • FixFix missed collections scheduler timezone and add schedule_time columne2b2f1e
  • ImprovementOptimize road segments rendering with single GeoJSON layere9fb875
  • FixFix missed collection IDs to use {UPRN}_{SERVICE}_MISS formatc6d0989
  • FixFix missed collections blending and standalone round creation0eaf595
  • FixFix solver to use same service code format as bins uploadbf9198f
  • FixFix duplicate key constraint in AIONE scheduler by making UPRN unique per serviceb1bdf13
  • FixImprove RoadSegments performance and fix map cleanup errors78181bf
  • FeatureImplement per-vehicle IVR optimization for schedule generation55c4199
SolveSmart20 updates
  • FeatureAdd 'First' position option to reassign tool33a1045
  • FixFix reassign tool to directly add job without drag visual50b508f
  • FixFix crash when reassigning unplanned job to vehicled848aea
  • FixRemove debug logging for task filter0ceeede
  • FixAdd debug logging for task filter investigation24bb6c3
  • FeatureAdd task filter to sheet configurationb6787fb
  • Fixdebug(export): Add logging to list templates to verify transformRulesConfigcf55c4d
  • FixAdd transformRulesConfig to controller create/updatea7d12ed
  • FixAdd transformRulesConfig to ExportTemplate interface47602c0
  • Fixdebug(export): Add planning date logging to controllerd0f0e82
  • Fixdebug(export): Add console logging to transform rules for debugging62aa537
  • FixFix custom columns not receiving transform rule values8f6e0a3
  • FixImprove rule editor modal styling to match Import Templatefa85140
  • FeatureImprove UI consistency for transform rules and routing conditionsfd8e50b
  • FeatureAdd "Combine Date & Time" transform rule7ffc48d
  • FixShow date format in Planning Date field names6d7e3ec
  • FeatureAdd Vehicle Skills field to export optionse29639e
  • FixShow all fields for concatenate/lookup source selection504ed3b
  • FixAdd transform rules, fix vehicle class lookupf23f67c
  • FeatureAdd OSRM-based route evaluation for fast UI updates79b4121
Wednesday, 28 January 20262026-01-28
AIOne Mobile6 updates
  • FixFix group detail filtering to match slot names, not hours737e93d
  • FixFix time slot sorting - sort by actual start time, not alphabeticallybc2a631
  • ImprovementUpdate mobile app to use slot times from APIc7756e9
  • FeatureConnect workflow photo uploads to MapSmart backend89cef54
  • FixFix file.exists() error in offline queue syncaba7d29
  • UpdateHandle workflow approval status in submission response2126782
FlowSmart1 update
  • FeatureSupport productCode in attachments endpoints54c2db2
MapSmart11 updates
  • FixFix bind segments and group deletion issuese01e435
  • FixFix table name: service_type_collection_slots not street_sweeping_collection_slots506a6b0
  • FixFix mobile API to get slot info from collection_slots table6ba3dc2
  • FeatureAdd scheduled_arrival_time to mobile API for per-segment timesb041596
  • FixUpgrade protobuf to v6 for IcePack generated code1f92149
  • FixAdd protobuf to Docker requirements for IcePackf4264fc
  • FixNamespace S3 paths by product to avoid collisionsb9f35ff
  • FeatureAdd attachment upload endpoint for mobile workflow photos56d6541
  • FixFix save template progress count after group expansion888685d
  • FixFix workflow approval flow and group workflow editing2e7b5a5
  • FeatureAdd workflow submission view modal for MapSmart4eab4ea
SolveSmart5 updates
  • FixFix O(N²) jobSequence calculation in enhancedJobStops5635328
  • FeatureAdd React.memo to TripPolyline and DraggableJobMarker495e16d
  • TestReduce redundant convertRoutesToTripBased callsafa5867
  • FixFix auto-fit and add smart job positioningbc72348
  • FeatureAdd requestId column to avoid fetching heavy responseJson0ecd109
Tuesday, 27 January 20262026-01-27
AIOne Mobile10 updates
  • FeatureAdd workflow submission review modal with approve/rejectdc7559c
  • UpdateMake mileage stat smaller in landscape to prevent overlapa7c8abf
  • FeatureAdd workflow submission viewing and approval status for MapSmarte7cc9d2
  • ImprovementImprove landscape side panel layout for MapSmart route screen016a3b7
  • FeatureAdd MapSmart group detail screen following ModelSmart pattern6ce699c
  • FeatureAdd Clear App Cache button in settings087772a
  • FixFix MapSmart workflow screens and improve offline bannerdea4381
  • FixPrevent infinite loop in OfflineBanner Zustand selector10027be
  • FixFix SSO registration flow and multi-org support4119f34
  • FeatureAdd MapSmart offline workflow supportf516eec
FlowSmart5 updates
  • FeatureSupport productCode in approve/reject endpoints3501429
  • FeatureSupport productCode query param in GET submission endpointf8cbcf3
  • FixFix submit endpoint to support product-specific org ID03aedd1
  • FeatureAdd create-and-submit endpoint for product integrations1f868be
  • FixUse productCode to get product-specific organisationId for submissions374c0d2
MapSmart21 updates
  • FeatureAdd approve/reject endpoints for workflow submissions5a84366
  • FeatureAdd workflow submission details endpointd63480c
  • ImprovementUpdate Control Tower empty state with LandingInstructionsed275ae
  • FixFix group workflow submission to aione-workflowsbfc9eec
  • FixFix SweepingSchedulesPage stats display and NaN issue96d049f
  • FixHandle non-numeric group IDs for workflow submissionsf9ba6a2
  • RemovedGroups view: remove pagination, collapse dates by default73f2ff2
  • FixFix Groups view scroll - add fixed height container4699d68
  • FixSupport AIOne Auth tokens in schedule workflow endpoints94c5a26
  • FixFix Jobs tab: default to Segments view, Groups view shows by day313b2e9
  • FixRemove non-existent working_days_per_week column from query679ec89
  • FixFix NULL handling in scheduled calendar template info lookup5c1b533
  • FeatureAdd template day sequence to Applied Schedule calendar0ab3864
  • FeatureAdd skills selector to Create Access Code modal4b6feb3
  • FixRemove non-existent columns from user insert in access code registration45a0b41
  • Fixdelay submission history fetch to allow backend to create record0765f17
  • Fixuse verify_bin_exists instead of check_bin_exists5cb62e4
  • UpdateRestore DUPLICATE_CHECK_FAILED handling for bins endpoint25786fc
  • FixFix duplicate detection to use bins endpoint instead of jobsc6db8a7
  • FixAdd per-round refs, cancel submissions, fix duplicate check flow, increase task limits1a96604
  • ImprovementRefactor scheduled services for batched submission with per-round tracking4b95ecf
Platform2 updates
  • FixFix token refresh to include all product org IDs6b91444
  • FixFix mobile SSO state passthrough for registration flowb246a91
SolveSmart3 updates
  • FixAdd debug logging to getMyProfile endpointcf9d5f0
  • FixChange User-Resource relation to one-to-many75bbfef
  • FixAllow users to have resources in multiple organisationsee00ace
Monday, 26 January 20262026-01-26
AIOne Mobile13 updates
  • FixRemove verbose debug console.log statements from map components2a23d84
  • FixFix HereMapView SDK check causing navigation disruption on orientation change07d6cd0
  • FixFix workflow template endpoint path782e735
  • FixFix navigation camera on orientation change - re-enable 3D follow mode7a1d580
  • FixFix map zoom on orientation change - center on user positionbf20811
  • FeatureAdd segment grouping and group workflow support for MapSmart775e550
  • ImprovementUpdate MapSmartRouteScreen and API typesede5edb
  • FeatureAdd cancel job functionality and hide workflow routes from tab bare9a8efe
  • FixGeofence threshold, complete button visibility, landscape statuse6ec94a
  • FixAllow orientation changes in AndroidManifest1969f07
  • FixNavigation bar overlap in landscape, scroll padding024eb4e
  • FixNavigation issues - duplicate arrow, orientation, geofencec24b2ab
  • FixCorrect location tracking endpoint path (/location-batch)1195b66
FlowSmart6 updates
  • FeatureSupport productCode query param for multi-product JWT tokensff58053
  • FeatureSupport MapSmart legacy JWT token formatde62f2b
  • FeatureAdd logo endpoints and combined public submit endpointa8d37e1
  • FixFix dropdown overflow in FieldEditor modal4a601a5
  • FeatureAdd duplicate step and clone field functionality481916d
  • FixFix workflow creation to include default schemac38149e
InvoiceSmart1 update
  • Fixadd account picker prompt to Microsoft SSOc37e526
MapSmart23 updates
  • FixFix all remaining antd deprecation warnings8668f7d
  • FixFix workflow template proxy to pass productCode to aione-workflowsc8dcaf6
  • FeatureAdd workflow template proxy endpoint for field app85dfbfd
  • FixFix scheduled services to use per-entity schedule_timec11091b
  • FeatureAdd group workflow submission endpoint for MapSmart11180fc
  • FixSchedule management improvements and bug fixesbc51f64
  • FixFix antd deprecation warnings8c5ded5
  • FixGet JWT token from cookie for workflow service requests98ceb64
  • Fixprevent external workflow service auth errors from triggering frontend logout81b5a73
  • FeatureAdd Workflows tab to schedule view and update action column styling72dfb08
  • ImprovementUpdate types, configs, and misc frontend improvements4355ca8
  • ImprovementUpdate services pages with bulk edit and collection slots3b133b8
  • ImprovementEnhance schedule wizard and view with timeline improvementsc38f29e
  • FeatureAdd map selection tools across multiple pages804d016
  • FeatureAdd collection slots, workflow tracking, and database migrationsb3be6d2
  • FeatureAdd service types and street sweeping API enhancementsa406f6f
  • ImprovementEnhance clustering controller with auto-clustering and merge operations296793e
  • FeatureAdd Icepack route optimization and schedule generator improvementsbf577c2
  • FixFix schedule stop counts and improve scheduled services table4331b23
  • FeatureAdd public workflow page and logo management proxy routesd320b56
  • FeatureAdd mobile cancel endpoint, Control Tower bulk complete, and duplicate prevention6568c7b
  • FixFix empty state button to navigate to builder instead of opening modal00e332f
  • FixFix cross-entity job contamination in route solve builder7da86be
Platform1 update
  • Fixadd account picker prompt to Microsoft SSO8af958a
SolveSmart12 updates
  • Removedrevert: Remove 0.001 workaround for pickupDuration3e4dd22
  • FixUse tiny non-zero value when pickupDuration is 063272bc
  • FixFix undefined jobIndex in debug logginga0dcec2
  • Fixdebug(import): add IVR7 builder pickup duration logging8b89218
  • Fixallow pickup duration to be set to 0 via arrows48512b9
  • Fixdebug(import): add logging for pickupDuration in staging43dd9fe
  • Fixshow 0:00 for pickup duration of 0 minutes9d06060
  • Featureadd pickup duration to Default Time Windows UI6d06095
  • Fixallow pickup duration of 0 minutes6343b1f
  • Featureadd separate pickup duration (loading time) supportbf76be6
  • Fixsupport camelCase pickup/dropoff fields and HH:MM format in IVR7 buildere147598
  • Fixsupport camelCase pickup window fields and HH:MM formatf7a9e7b
Sunday, 25 January 20262026-01-25
AIOne Mobile2 updates
  • FeatureAdd GPS location tracking with travel/job distinction3587158
  • FixSSO flow, product mode restoration, and route screen improvementsb35b2aa
MapSmart2 updates
  • FeatureAdd Control Tower job reassignment and completion featuresad44b89
  • FixDisable demo mode and strip demo_ prefix from existing solves02577fd
Saturday, 24 January 20262026-01-24
AIOne Mobile8 updates
  • Fixuse new App Icon for app iconfa24370
  • Fixadd google-services.json to android/app/8bf5645
  • Fixadd Google Services plugin for Firebase/FCMda40ce0
  • Fixhandle Firebase not initialized gracefullyb011a90
  • Featurewire up traffic & truck settings to route calculation712bcdc
  • Fixadd truck specs editor & fix type errors782d870
  • Featureadd truck, camera & environmental zone warnings150e122
  • Fiximprove landscape mode and segment colorsd3f366d
MapSmart6 updates
  • FixFix all TypeScript build errors340fa86
  • FixFix slow job delete and add bulk delete endpointdfc15e7
  • UpdateStore full schedule result in database instead of Redis only8371133
  • FixFix service filter on Active Sweeping Services pageced4331
  • FixFix table name in get_schedule_task_result fallback queryf917a4d
  • FixFix Resources tab showing Unassigned for active schedules70b0c0a
SolveSmart1 update
  • Fixmake legend visible below tabledeb2613
Friday, 23 January 20262026-01-23
FlowSmart3 updates
  • FixCopy prisma.config.ts in Dockerfile65b3d8f
  • FeatureAdd Prisma 7 config file for migrations36ccc93
  • FixAdd DATABASE_URL to Prisma datasource5eb893a
MapSmart16 updates
  • FixFix activation: use total_working_days for period length167c443
  • FixFix save_template: use actual working days instead of hardcoded Mon-Fri9d42f16
  • FixFix scheduled jobs query with correct column names from schema4c78738
  • FixFix scheduled jobs query: add fallback and loggingcbb0b85
  • UpdateShow actual dates in Calendar for applied schedulesc0a65ab
  • FixFix old schedule runs: fallback to saved template data2d1ca7d
  • FixFix calendar period: calculate weeks from actual data3105a99
  • FixFix schedule view: correct working days + show operator names77ca523
  • FixFix grey map in ScheduleViewPage vehicle route popovera3d2dee
  • FixFix FK constraint on save_template + workflow UI improvements46e8f82
  • FixCorrect SQL query for looking up group segment members867f889
  • FixLook up group segments from database when not provided880f3b7
  • FixInclude group segments when saving schedule templates4513629
  • FeatureAdd validation and logging for schedule template job saving5fe3291
  • FixAllow viewing inactive schedule templatesd17e278
  • FeatureAdd road segment split functionalityc76b372
SolveSmart9 updates
  • Featureadd legend to explain high-penalty row highlighting1cc6c0f
  • Fixcheck capacity_weight/capacity_units field namesca1280f
  • Fixadd comprehensive capacity field lookups for excluded jobs2b590c9
  • Fixcast to any for debug logging to fix TypeScript errorc35bbaf
  • Fixdebug: add frontend logging to trace weight/units data in UnplannedTabfa57a41
  • Fixdebug: add logging for excluded job fields to trace weight/units issueac005bb
  • Fixlook up capacity data from baseModelJson for old scenarios086ec78
  • Fixshow real customer names for solver-infeasible jobs169ab6e
  • Fixshow excluded jobs at dropoff locations with correct data1f9a580
Thursday, 22 January 20262026-01-22
MapSmart5 updates
  • UICache pyrosm build in separate Docker layer4c48e65
  • UpdateIncrease global Celery task time limits9d9417b
  • UpdateIncrease submission task time limitsd8f5e24
  • UpdateIncrease Celery worker concurrency to 4813f3e1
  • UpdateIncrease time limits for missed collections tasks2329f9d
SolveSmart11 updates
  • Featureadd IcePack compatibility notes and improve commentsd038b2c
  • Fixset default penalty to 10000 to match SolveSmart739f195
  • Fixrevert solveType fix to diagnose 502 error372c619
  • Fixsave full model JSON to baseModelJson for debuggingd7feab7
  • Fixexplicitly write solveType and save request data for debugginga0f6518
  • Fixexplicitly write solveType=0 in protobuf to fix 502 errorsa6d3e02
  • Fixadd pickupDurationMins to ParsedMSJob type properly63937df
  • Fixcast pickupDurationMins to fix TypeScript error6a01d6e
  • Fixadd pickup duration support and fix orphaned dimension9cd65a2
  • Fixreorder bulk routes before parameterized routes5772453
  • Fixsync access flags to userOrganisation table850577b
Wednesday, 21 January 20262026-01-21
MapSmart3 updates
  • FeatureAdd email report sending to missed collections pipeline21c7187
  • FixFix import paths for Celery worker context7d37b47
  • FeatureAdd scheduled pipeline runs and UI improvements for Missed Collections982cd68
Tuesday, 20 January 20262026-01-20
AIOne Mobile5 updates
  • Featureshow detailed error messages on visit detail screenseaedd72
  • Featureshow detailed error messages for workflow submissionsa047ae9
  • Fixprevent submission while photo capture is in progressee0bf5b
  • Fiximprove sync reliability and cache invalidationc7f2d56
  • Fixprevent photo duplicates and sync offline cache on status changec28a5d4
FlowSmart3 updates
  • FixCast Prisma JSON type through unknown for pdfService2add5aa
  • FeatureAdd PDF generation and email functionality8864023
  • FeatureAdd template attachments featurebe7bc11
MapSmart31 updates
  • FixFix UPRN type conversion - cast to int for BIGINT comparison9177b8e
  • FeatureImplement proper planned miss round logic from original script93b5a51
  • FeatureAdd Quick Add feature to Filtered tab in Missed Collectionsdd5ed05
  • UpdateChange service mismatch from ERROR to FILTERED9eb63fd
  • ImprovementImprove error tracking in missed collections enrichmentf560294
  • FeatureAdd planned miss round computation8af13e8
  • FeatureImprove missed collections UI and add closure breakdownde052d1
  • FixFix missed collections ticket counting and classification84d7516
  • UpdateIncrease DataTable height buffer to prevent last row cutoff87c42cd
  • FixAdd migration to fix column sizes in missed_ticketse4b9e53
  • FixFix column names and indexes in missed collections queryd1e5ff8
  • FixFix missed collections pipeline errors46724a9
  • FixFix npm install: single command with all deps as devDeps494fcfb
  • UpdateCommit all pending workflow-components and ERP changesc06534c
  • RemovedRemove package-lock.json before npm install in Docker643dbe8
  • UIInstall peer deps before building workflow-components8d024f6
  • RemovedRemove dist from git, build workflow-components in Docker6b3ebf3
  • UpdateRestore workflow-components dist files69c7d38
  • FixFix delete button styling to match app designf2eaabb
  • FixFix delete button visibility for paused schedules854e7c9
  • FeatureAdd Missed Collections System - full digitizationa944241
  • FixFix import path in MissedCollectionsModal56ef0d2
  • FixScheduled services: Fix timeout + missed collections UI4ade38f
  • FeatureAdd value transformation rules for ERP column mappinga0084dc
  • UpdateLimit console flooding: cap no-schedule warnings to 10625d830
  • FixFix ERP frequency conversion: days to week intervals2accdec
  • UpdateNormalize full day names to 3-letter abbreviations49aab8a
  • FeatureERP import: Auto-create missing UPRNs from file datae60afdb
  • FixFix auto-normalize overriding custom column mappings6b17ec1
  • FixFix misleading import success messages and ERP preview serialization02f60ed
  • FixFix erp_mapping_enabled not returned in login/switch_entity responses5d65952
SolveSmart8 updates
  • Featureadd real-time formula validation in FormulaInputc60db59
  • Fixmove validateFormulaSyntax before component5e6bbf7
  • Fixadd formula syntax validation for rules1b6b893
  • Improvementsimplify excluded job location handlinga2f6cb2
  • Featureuse 2-column grid layout for photos1855489
  • Fiximprove excluded job location lookup and eye icon zoomedb04f2
  • Fixadd user access logging for debugging login issues3ec45b7
  • Fixshow all photos in PDF and prevent duplicate attachments0d35687
Monday, 19 January 20262026-01-19
AIOne Mobile4 updates
  • Fixread EAS projectId from app config41b6732
  • Fixdebug: add logging for photo state to diagnose issue1bbcd67
  • Fixprevent photo loss and enable back navigation on resume10e9353
  • Fixreduce excessive API requests causing 429 rate limit errors80d4bc0
MapSmart15 updates
  • FeatureAdd erp_mapping_enabled to EntitySchema validationfadecdd
  • FeatureAdd configurable ERP mapping feature flag per entitybd12c79
  • FixFix Specific Weeks validation for fortnightly/monthly services06e32eb
  • UpdateLog detailed info for all UPRNs with no schedules736dbf2
  • FixFix UPRN precision loss from Excel scientific notation86d177d
  • FeatureAdd detailed logging for UPRNs with no schedules2d3347e
  • FixFix variable services import: weekly frequency should visit all weeks6002b46
  • FixFix cleanup_stale_solves removing non-existent error_message column103b5ad
  • FixFix variable services search filter and improve import diagnostics3b655e1
  • FixFix Docker file sharing for variable services import and stale solve cleanupdb883bb
  • FixFix RouteOptPage table scroll by using flex layout instead of percentage heighta7f0afc
  • FixFix table scroll in Route Optimisation page697a31c
  • FeatureAdd explicit height to data-table-container for scroll supportc603214
  • FixFix table scroll in Route Optimisation paged177e2b
  • FixFix scheduled routes not finding starred solves for multi-week services5ead22f
Platform1 update
  • Fixincrease auth rate limit from 100 to 500 requests per 15 minutese4c30f1
SolveSmart13 updates
  • Fixuse type assertion for project.requiresVisitAcceptancee860d7c
  • Fixadd acceptanceStatus to visitCreates type777ac68
  • Fixinitialize acceptanceStatus when creating visitsd00e713
  • FixCreate attachment records when updating existing draft/rejected submissions45a6ccf
  • Fixconvert boolean values to Yes/No in PDF reportsfd1ca2a
  • Fixinclude full job data for rule-excluded jobs in unplanned display65dd622
  • Fixenable table scrolling and add purple markers for rule-excluded jobse08fcd1
  • Fixmap excluded jobs to unplanned list with rule name76aa06c
  • Fixfilter out template rule excluded jobs from solver2d0f4ec
  • Featureadd penalty column to Planning page jobs validation table39690b8
  • Fixupdate penalty display in JobConfigurator to show actual valuesb382f5d
  • Fixcast job to any for penalty access in MS PBF builderd7c18bb
  • Fixuse job.penalty directly instead of hardcoded priority-to-penalty lookup3d774c4
Sunday, 18 January 20262026-01-18
AIOne Mobile7 updates
  • Fixapply route cleanup fix to MapSmart route screen41bcff0
  • Fixclear old route line when switching destinations6248837
  • Fixrefresh user location on screen focus and watch continuously09390ba
  • Featureshow user location with distance, use internal navigationf585c7d
  • Fiximprove date navigation touch targets in landscape mode5dbfa24
  • Fixfilter cancelled visits, always show navigate, status marker colorsea673d8
  • FixLocationIndicator usage and various UI improvements9fab83d
SolveSmart5 updates
  • Featuremake Job column clickable to open details pane66d46ef
  • Fixfix approvals data and add clickable photos0d105f9
  • Fixenhance approvals tab and fix status sorting0504e37
  • Fixdebug: add logging for status sorting and approvals filteringbc372c7
  • Fixhide approve/reject buttons for pending revision status and fix status sorting1728e9a
Saturday, 17 January 20262026-01-17
AIOne Mobile14 updates
  • Featureauto-scroll to today and add date badges5af6ae2
  • Fixinitialize HERE SDK and fit map on preset change751b0a5
  • Fixuse visitDate instead of scheduledDate for route navigationada9d28
  • Featureshow Jobs by Week legend when viewing month levelddb4221
  • FixSchedule Map view improvements24e2dc3
  • Fixensure scheduledDate is set on visits in range querycb8ceab
  • Featureadd Map view to Schedule for multi-day planningb016364
  • Fixpass visit date and improve highlight/navigate handlingabda876
  • Featureintegrate View on Map and Get Directions with HERE Maps703a1f3
  • FixBack to Route navigates to route tab instead of history back8b24bf1
  • Featureadd marker tap popup on HERE Maps route screen4458e8a
  • Featureadd attachment display to visit detail screene99a051
  • Featureadd visit acceptance workflow and multi-view schedule08cb6df
  • FixUse presignedUrl from backend for revision photosbe02492
MapSmart1 update
  • FeatureAdd Clear AIOne Jobs feature and improve submission UX8fe5e58
Platform1 update
  • Fixdebug(jwt): add logging to diagnose token validation failuresa67dc14
SolveSmart13 updates
  • Fixremove unused imports in WorkflowsTab86337d6
  • Fixonly show answered fields and improve rating display9907ad7
  • Featureadd project-scoped approvals tab to project view9a1773c
  • Fixresolve TypeScript errors in attachment controllers9fa23c9
  • Fixremove url from datasource for Prisma 7 compatibility409738d
  • Fixuse Switch instead of Checkbox for boolean fields in public workflowb69ccd5
  • Featureinclude attachments in public workflow share link response42e64b8
  • Fixresolve TypeScript errors in WorkflowBuilderPage912e7a4
  • Featureadd workflow template and project attachments0db9c11
  • Fixcalculate plannedMargin as percentage, not difference6228cde
  • Featureadd requiresVisitAcceptance to project settings tabb8a6b51
  • Featureadd visit acceptance workflow and admin visibility0ecc907
  • FeatureAdd presigned URLs for photos in rejected workflow answers0802831
Friday, 16 January 20262026-01-16
AIOne Mobile16 updates
  • FixPre-populate photos and locations for workflow revision8b096f9
  • FixOnly show spinner on manual pull-to-refresh3314352
  • FixRefresh schedule when returning from visit detail0078682
  • FeatureRespect canCancelVisits permission in mobile appbdf065f
  • FixAdd awaiting_approval status and navigation bar fix28eec49
  • FeatureImplement offline-first architecturea529067
  • FeatureAdd pull-to-refresh and auto-refetch on focus6eb7436
  • FixMove Cancel Visit button to scrollable area and remove debug logging1df07cc
  • FixSave draft immediately on cancel to preserve step progressaef6b77
  • Fixdebug: Add logging to VisitCard for rejection status038d611
  • FixForce WorkflowForm remount to load previous answers on revision97c81e2
  • FixHide Complete Visit button when completion workflow is locked13ee47c
  • FeatureAdd approval workflow support for flow enforcement1afe54a
  • FeatureAdd workflow flow enforcement and draft save supporteb3bac8
  • FeatureAdd Firebase config for push notifications6998226
  • FeatureWorkflow rejection visibility and push notifications66ddd65
MapSmart11 updates
  • FixFix Icepack auth header: Apitoken not Bearer083e6a8
  • FixFix Icepack API URL - use ICEPACK_SOLVE_URL from envd50f95f
  • FixFix AIOne submission: timing, vehicle ID, and error handling9ca2217
  • FeatureEnrich bins payload with address data from uprns table8a55fa3
  • FixFix service_type_name not being populated in scheduled submissionsd09f96e
  • Fixdebug: Log bins upload response content8a6c292
  • Fixdebug: Log first 3 bins payload for AIOne debugging150e649
  • FixMap service names to AIOne codes for bins uploada76afed
  • FixRemove double demo_ prefix in AIOne submissiondf65589
  • FixSolve count for weekly services + demo_ prefix for AIOne testingcf9bd97
  • FixEnable Celery Beat scheduler for scheduled services638cfce
SolveSmart13 updates
  • FixInclude global instructions in visit detail endpoint4c96b6a
  • FeatureAdd canCancelVisits permission for field workers4f3cc62
  • FeatureAdd push notifications for visit lifecycle eventsa0a6bad
  • FixOnly complete visit when both workflows are done7c20fbe
  • FixPrioritize submitted status over rejected in workflow lookupc8aac7f
  • FixPrioritize rejected submissions when updating on resubmit6c8e394
  • FixPrioritize rejected submissions over drafts when finding workflow status19d6ea3
  • FixUpdate existing draft submission on submit instead of creating duplicate3f6cf3c
  • FeatureAdd approval workflow flags to visit detail API17284c8
  • FeatureAdd workflow draft save endpoint and flow enforcement supportc782783
  • FeatureWorkflow rejection visibility and push notificationscf9ca2e
  • FixImport Prisma from generated client path872b1a6
  • FixTypeScript errors in mobile controller0e08451
Thursday, 15 January 20262026-01-15
AIOne Mobile1 update
  • FixMultiple bug fixes from app feedback1f0825c
FlowSmart1 update
  • FixHide approve/reject buttons for non-submitted workflowsa188908
InvoiceSmart5 updates
  • FixFix Dockerfile: add OpenSSL for Prisma, update port to 4050062466e
  • FixFix docker-compose: both backend and frontend in Docker73fcb5b
  • ImprovementUpdate docker-compose: use shared PostgreSQL, PM2 for backende2abc99
  • FeatureAdd AIOne auth env vars to docker-compose30b4b38
  • UpdateInitial release v1.0.0 - InvoiceSmart2282be9
MapSmart2 updates
  • FeatureAdd ScheduledServicesPage CSS52fef7a
  • FeatureAdd automated route submission to AIOne421a39d
SolveSmart1 update
  • FixMultiple bug fixes from app feedback7f8664b
Wednesday, 14 January 20262026-01-14
AIOne Mobile10 updates
  • UpdateInvalidate schedule queries after workflow submissioneab032c
  • UpdateUse expo-file-system/legacy for uploadAsync880141d
  • FixFix S3 upload using Expo FileSystem.uploadAsynce9936cc
  • UpdateSimplify photo upload using React Native fetch with file URI0d45db4
  • FeatureMigrate to new Expo FileSystem API (SDK 54)adaf282
  • UpdateUse expo-file-system/legacy for SDK 54 compatibility106a8b3
  • FixFix FileSystem encoding - use string instead of enum7551fd8
  • FixAdd detailed logging for photo upload debugging10c7464
  • FeatureAdd temp files to gitignoreef063eb
  • FeatureAdd HERE SDK improvements, offline maps, onboarding and settingsd7390a8
MapSmart6 updates
  • UpdateUse COPY instead of INSERT for 5-10x faster bulk save2d7a3da
  • Fixdebug(road-segments): Add timing logs to identify save bottleneckb92d30a
  • FixUse batch save for add_road_cluster endpointe36f5d3
  • FixAdd real-time progress updates to frontend42c5902
  • FixAdd duplicate UPRN validation93f3a7e
  • FixUse batch insertion for saving road segmentsebb4a4f
SolveSmart2 updates
  • UpdateUse consistent S3 path for mobile uploads (workflows/ instead of workflow-attachments/)338b8dd
  • FixFix mobile upload bucket - use DOCUMENTS_S3_BUCKET9196723
Tuesday, 13 January 20262026-01-13
AIOne Mobile4 updates
  • FixFix photo upload using FileSystem API instead of fetch0072954
  • FixFix useMemo import in WorkflowForm83ca880
  • FixFix signature step and photo mimeType in workflows5811071
  • FixFix photo upload in offline queue using FileSystem API03c62d1
MapSmart2 updates
  • FixUse build ARGs for Vite env vars instead of hardcoded .env757e126
  • FixImprove column handling and relax validationd9fe911
SolveSmart18 updates
  • Fixinclude requiresSignature and brandColor in visit workflow data3696258
  • Fixincrease JSON body limit for signature submissions57ab84c
  • Fixuse vehicleLabel for resource names and handle NaN distances547df7c
  • Fixshow request ID for failed solves, not just completed0fb9a31
  • Featureadd Stats tab to route analysis viewf688e71
  • Fixadd request ID column and fix reset unplanned jobs bugda2f370
  • Featureadd bulk delete endpoint for jobs and darken unscheduled markerc568e1a
  • Fixrestore roq/ to gitignore and remove tracked roq files01e6cdd
  • Featureadd route evaluation endpoint for ModelSmartf9805f3
  • Fixcheck all possible field names for weight/volume validation1f14c3b
  • Fixsave Icepack requestId immediately so it's visible on failed solves49762d3
  • Fixadd multi-value support to startsWith/endsWith/contains operatorsba84918
  • Fixuse correct IVR7 Job property names for location filter3b0a91b
  • Fixfix TypeScript errors in Planning jobs map toggle86a66a4
  • Featureadd map view for jobs validation in Planning2258c21
  • Fixfilter locations in stagePlanningData to only job-referenced45931c1
  • Fixfilter unused locations at solve timecbfb91a
  • Fixonly include job-referenced locations in solve request9aabda0
Monday, 12 January 20262026-01-12
MapSmart3 updates
  • FixBulk update + NULL/UNASSIGNED day_week_clusterid handlingc9bbf9a
  • FixUse bulk update endpoint for road segment UPRN assignments0bba6e5
  • FixRead day/week from each assignment in apply_fleet_mix_rounds423a8c9
SolveSmart11 updates
  • FixReduce map height by 40px86f9f48
  • FixRestore days remaining fix that was accidentally reverteda3990a5
  • FixSet explicit viewport height on map tab container6998c1d
  • FixMake map container fill available viewport heighta6becb2
  • FixRevert tab CSS changes that broke tab switchingc4b3801
  • FixFix arrow function syntax in ProjectViewPage6e038ff
  • FeatureAdd fullscreen mode and dynamic height for project mapde0785a
  • FixDays remaining - show days until start and project durationafe72e0
  • FixDays remaining calculation per project looks incorrect212efdc
  • FeatureAdd duplicate field button in workflow builder271d7f5
  • FixRestore Workflows tab in ProjectViewPage74867cc
Sunday, 11 January 20262026-01-11
FlowSmart2 updates
  • FixDisable strict mode for Docker buildsa54e252
  • UIInitial commit: Shared workflow builder components9938297
MapSmart9 updates
  • FixCopy .env file in Docker build for API URLs2b293d9
  • FixAdd uuid to vite aliases14722cc
  • FixUse pre-built dist + resolve peer deps via vite aliases1e6caf0
  • FixInstall peer deps for workflow-components build6931899
  • FixBuild workflow-components from source in Docker9ce7360
  • FeatureInclude workflow-components for Docker buildd4d7dab
  • FixRemove package-lock.json in Docker build to avoid npm bug0f7eb31
  • FeatureAdd frontend Docker service for production deployment403a75b
  • FixAdd @jwt_required() to download_variable_service_template routef97038c
SolveSmart16 updates
  • FixResolve TypeScript build errors0ebc08b
  • FixResolve TypeScript build errors515844e
  • FixDropped Workflow Tab9d37011
  • FixResolve TypeScript build errors511f8c3
  • FixResolve TypeScript build errors5387ecc
  • FixRefresh rate in the "optimisations" tab within a projectca0372d
  • FixRefresh rate in the "optimisations" tab within a project8c4d23a
  • FixDisplay field type label instead of raw type namee43b007
  • FixRename Checkbox field type to Boolean15cb051
  • FixYes/No (Boolean) option for fields in workflows8c88ef2
  • FixYes/No (Boolean) option for fields in workflows7c74860
  • FixJob visibility within a project4d89b41
  • FixResolve TypeScript build errors2e197b7
  • FixJob visibility within a project0ae3a12
  • FixJob visibility within a project515193e
  • FeatureAdd 'Once Off' option to default visit frequency dropdown2669143
Friday, 9 January 20262026-01-09
MapSmart19 updates
  • Fixuse correct variable name user_entity_id in streaming query6df2f08
  • Fixadd entity_id filters to variable service queries37ba179
  • FixFix day_clusterid case mismatch: 'Variable' -> 'VARIABLE'341e486
  • FeatureAdd missing _safe_float helper function to variable_services_controllerdea810f
  • FeatureAdd missing _safe_str helper function to variable_services_controller7a8bbc9
  • FixFix road_clusters JOIN missing entity_id in variable_services_controller1a558b2
  • FixFix duplicate key error when saving variable service clusterseddec3d
  • FixFix variable service clustering endpoint URLs missing API prefix4ee2824
  • FeatureAdd granular progress feedback to basic clustering endpointsc209d0d
  • FixFix road_clusters JOIN missing entity_id in backend_v2 clustering controller42e5030
  • FixFix road_clusters JOIN missing entity_id filter causing row multiplicationd33892c
  • FixFix clustering modal stats: add bin_count to GeoJSON and explicit entity filtering954e782
  • FixFix hub_name column error in get_selected_hubs_for_clustering330c2de
  • FixFix resource user link check to be per-entity60f07e1
  • UpdateHandle user already linked to resource constraint87020f0
  • FixFix multi-entity user linking for resources5cf5b2a
  • FixFix user role constraint - use viewer instead of app_operatora5e301b
  • FixFix users table column error - use username instead of nameb7720e6
  • UpdateSplit Schedule modal tabs by mode (Generator vs Viewer)daccf56
SolveSmart2 updates
  • FixUAT ModelSmart routing and platform detection75e980d
  • FixRefresh rate in the "optimisations" tab within a project8355aad
Thursday, 8 January 20262026-01-08
MapSmart13 updates
  • FixFix Schedule Jobs workflow and back navigation42f88d6
  • FixFix Schedule Jobs back navigation to preserve Active Services state137f905
  • FixFix PostgreSQL COPY escaping for JSON with quotes in OSM dataf60add4
  • ImprovementRefactor Schedule Jobs page - split modal into config and results6319437
  • FeatureAdd missing batch_generate_town_clusters endpoint mappingfebbed1
  • FixFix TypeScript build errors375700d
  • FixFix blank CRM Reference on Errors tab82325ea
  • RemovedClean up workflow components - remove unused builder code26daab9
  • FeatureAdd UPRN CRM ticket history tracking for FCC missed reportsf3bbf78
  • FeatureAdd UAT domains to CORS allowed origins3978e72
  • FixFix Schedule Jobs flow - drill-down from Active Services6efae80
  • FeatureAdd Schedule Jobs Dashboard for persistent job tracking67328d2
  • FixFix Redis connection timeout for long-running schedule tasks4850404
Platform1 update
  • UpdateIncrease JWT access token expiry from 15m to 1hdd20b12
SolveSmart1 update
  • FixSequence of tabs on project view69a9efa
Wednesday, 7 January 20262026-01-07
AssetSmart2 updates
  • FixFix DB SSL config - use function to defer file read989557c
  • FeatureAdd UAT support - skip SSM and optional DB SSL729f84b
FlowSmart5 updates
  • FeatureAdd raw SQL init script for database setup1c539d1
  • FeatureAdd JS version of prisma config for production7db94de
  • FeatureAdd prisma.config.ts for Prisma 7 migrationsd35d30d
  • FeatureAdd DATABASE_URL to Prisma schemaa713f88
  • FeatureSupport MapSmart legacy entity_id in JWT tokensf9b6a2b
MapSmart12 updates
  • FixFix FlowPreview props in preview modal101e586
  • FixFix broken Settings/Preview buttons in workflow builder9e0c78d
  • FixFix workflow proxy - get entity_id from header or JWT1427dcd
  • FixFix remaining VariableServiceModal.css case mismatches (7 files)391539b
  • FeatureAdd organisationId to workflow proxy requests8e7b4df
  • FixFix leaflet-fullscreen CSS import case (Leaflet -> leaflet)efcbf7f
  • FixFix CSS import case: VariableServiceModal.css -> variableservicemodal.cssd4205fb
  • ImprovementUpdate workflowService to use backend proxyd1d4319
  • FeatureAdd workflow proxy routes for aione-workflows serviced90f8c4
  • FixAdd resolve alias for leaflet-fullscreen in Vite config16eec3c
  • FixFix uprnpage.css filename case (was UPRNPage.css in git)ea6a4bb
  • FixFix fetchWithAuth.ts filename case (was fetchwithAuth.ts)66ac66b
Platform6 updates
  • FeatureAdd password login endpoint for UAT testing9861766
  • UpdateCopy prisma.config.ts in Dockerfile9c1dbe4
  • RemovedRemove misplaced prisma.config.ts from prisma folder613f630
  • FixFix Prisma 7 config - use correct format from ss-monorepo470d214
  • FeatureAdd Prisma 7 config for migrations and db push0057885
  • FeatureAdd DATABASE_URL to Prisma datasource config3ea1d2b
SolveSmart13 updates
  • FeatureDisplay Icepack request ID on solve cards08e76c3
  • FixAdd Unplanned tab and fix exclusion rules flowea512e3
  • FixAdd better debug logging for exclusion rules6d7d8e7
  • FixSupport both single and double braces in formula rules7169cb4
  • FeatureSupport multiple values in exclusion rules using semicolone600c96
  • FixAdd conditionalFormula rule type + debug loggingf8ad8f4
  • FeatureShow dimension coverage validation in Planning Room UI5e8059d
  • FixAdd dimension coverage validation and fix Save modal styling6460e34
  • FeatureAdd numeric validation to catch icepack 502 errorsd7ec77a
  • FeatureRename Pickup Window to Loading Window and add to Jobs table0fb8cd5
  • FixIncrease fleet commit transaction timeout to 60s9a5d523
  • FeatureAdd between/notBetween operators for range conditionsef4cfbc
  • FixFix Excel time parsing for vehicle shift timesdd07d4f
Tuesday, 6 January 20262026-01-06
AIOne Mobile15 updates
  • FixFix location tracking breaking when navigation mode changesf9ff679
  • FixFix route progress events not firing during navigationc444437
  • FixFix useHereMaps to auto-init for ModelSmart tood58ee20
  • FixFix ModelSmart HERE navigation - use shared hook with credentialsab75603
  • TestDEV: Clear auth tokens on app start for easier testing867f2ca
  • FixFix ModelSmartHereRouteScreen HERE navigation issues5f09fe3
  • FeatureAdd HERE Maps to ModelSmart + UI improvements2b3d564
  • Updatetypescript cleanupcbac56a
  • FeatureAdd 3D navigation with speed limits and lane guidance9a01ca8
  • FixFix MultiLineString geometry - render road curves instead of diagonals6a506e1
  • FixFix MapDownloader race condition - wait for async initf9e9224
  • FixFix MultiLineString geometry - don't flatten disconnected lines3f9938e
  • UpdateUse MapSmart green theme for all MapSmart screens2999d35
  • UpdateEnable landscape mode only for Route screenfe526b9
  • FixFix route display and improve navigation UX2fb97cf
FlowSmart3 updates
  • FeatureAdd Docker deployment configurationf918538
  • FixFix API response format to match frontend expectations226e8c5
  • UpdateInitial commit - AIOne Workflows microservice1cf040a
MapSmart18 updates
  • UISkip tsc in Docker build, let Vite handle transpilation39c249f
  • FixFix tsconfig to include all context folder files7235ae0
  • FeatureAdd Dockerfile and nginx.conf for MapSmart frontend044953a
  • FixFix CSS build error and add ellipsis to correct CSS file0ed589a
  • FixFix Cycle/Round column ellipsis with CSS classf27765c
  • FeatureIncrease Cycle/Round column widths and add maxWidth constraint2653fbb
  • FixFix PDF overlay z-index and cycle column ellipsisdca415b
  • FixFix PDF map generation - use original WeasyPrint implementation4534d8e
  • FixAdd debug logging for map download investigation98c24ef
  • FixFix Cycle column overflow in FinalServices tablea0008cc
  • FixFix TypeScript errors in buildf5d0763
  • FeatureAdd Workflow Builder feature and misc updates1eef129
  • FixFix map download - frontend/backend response format mismatch275e456
  • FixFix Dockerfile Chrome install - use modern signed-by method8090124
  • FixFix map file paths - use temp directory with absolute paths4c818f2
  • FeatureImplement missing PDF map generation functionsa6cafff
  • FixFix Sweeper Schedules "Add All" losing segments (race condition)9d83469
  • FixFix MapSmart customer-reported bugs batch89c81b2
Platform1 update
  • FeatureAdd web OAuth endpoints - no org selection for internal tools2d4445c
SolveSmart5 updates
  • FeatureAdd pickup time windows separate from delivery windows1fc40ec
  • FixFix docker-compose for production - add Redis, correct portscba8ee4
  • FeatureBlock Standard solve mode for large problems (>250 vehicle-days)49872cd
  • FeatureRestore solve type selector for project optimisationeee491d
  • FeatureAdd penalty field to import template rules02c5d65
Monday, 5 January 20262026-01-05
AIOne Mobile24 updates
  • FixFix .easignore excluding native modules on Windowse94f989
  • RemovedRemove broken dependencyResolutionManagement from settings.gradlef0653ce
  • FixFix HERE SDK AAR loading - use fileTree (official HERE approach)966240d
  • FixFix HERE SDK AAR not loading - move flatDir to settings.gradle19b828e
  • FixFix .easignore - exclude native-libs/ and HERE/ (saves ~5GB upload)67dd12f
  • FixFix HERE SDK crash - add lazy loading with availability checkff477f8
  • FeatureAdd offline map download UI to Map Management settings3a5cecf
  • UpdateLimit Route screen date range to ±1 day for data saving84a09d7
  • ImprovementEnhance landscape mode with detailed stats and nav progress7e509a8
  • FeatureAdd full turn-by-turn navigation with UK voice guidanced48e054
  • FixFix route API response transformation for HERE map display70bce21
  • FixFix nullable String in deleteDownloadedRegions13c0bb2
  • FeatureAdd TypeScript interfaces for new offline maps methods8a3f2fe
  • FixFix HERE SDK 4.25 offline maps API - use correct async constructors4a36280
  • FixFix HERE SDK 4.25 compatibility - remove deprecated offline map APIs0acfdd6
  • FixFix MapSmart API response transformation and endpoints215f401
  • FixFix MapSmart API and dynamic theme colorsa3ac8ec
  • ImprovementRefactor profile screen into clean menu structure71c82e7
  • FixFix org switching - add auth interceptors and switch-org API5d7d00c
  • FeatureAdd back DeviceEventManagerModule import to HereMapModulede17c45
  • RemovedRemove unused imports from HereMapModulec6645e2
  • RemovedRemove road names from maneuvers (HERE SDK API issue)28308f5
  • UISimplify HERE SDK navigation module for initial build0e787d0
  • FixFix HERE SDK 4.25 navigation API compatibility374cf73
MapSmart6 updates
  • FeatureAdd sweeping plans features and MapSmart resource controller updates1cde2c2
  • FixAdd debug logging to MapSmart mobile profile lookup2272c45
  • FeatureAdd green-button styling to Import and Access Codes buttons85c478f
  • FixFix Actions column styling in SweeperResourcesPage5fe4ffe
  • FeatureAdd rolling 14-day work summary endpoint for mobile appf6df44d
  • FeatureAdd vehicle-to-resource assignment in schedule activation modalb9bc06e
Platform5 updates
  • FeatureAdd 'sub' claim to JWT for Flask-JWT-Extended compatibility8b34989
  • FeatureAdd /switch-org endpoint for authenticated org switchingd02daf1
  • FixUse HTML redirect for custom URL schemes (Android fix)d390708
  • FeatureAdd logging for mobile redirect URL6d55049
  • FixFix OAuth callback URL to use BASE_URL env varea2050e
SolveSmart7 updates
  • FeatureAdd Map tab to Project View for pre-solve visualizationbdffe9a
  • FixAdd bulk project resource ops and fix solver polling4ade41b
  • FixUse correct Prisma model names for bulk operationsfd388bc
  • FeatureAdd bulk edit shift times and bulk delete for resources8662eb8
  • FixAdd shift time validation in scenario buildere81c344
  • FixUse Experimental solveType (3) for ModelSmart optimisations00756e1
  • FixUse background processing for ModelSmart optimisation to avoid timeoutsdd2e12a
Sunday, 4 January 20262026-01-04
AIOne Mobile6 updates
  • FeatureAdd HERE SDK 4.25 native modules and iOS supporte1112ed
  • FixFix HERE SDK 4.25 API compatibility issues in native modulesfd0e1f4
  • FixFix .easignore to not exclude android here/ folderd4c20ff
  • FeatureAdd android folder with HERE SDK native modules for EAS buildsd21ae17
  • FixInclude android folder for EAS builds with custom native modules1ae5acb
  • FeatureUpdate auth styling, add MapSmart registration support, optimize build9eb15d8
AssetSmart9 updates
  • FixSet page title using next/head in _app.tsxac0b4d0
  • FixSet page title to AssetSmart04d0fe5
  • FixAdd system font to Back to AIOne button to match MapSmartbabab9f
  • FixAdd explicit font-weight to back button for consistencyb422cce
  • UpdateSync login page styling with MapSmart502197f
  • Updatelogin gap on welcome2e4e63e
  • Improvementlogin updates61789e1
  • Improvementlogin updates1d9541f
  • ImprovementAIONE login pages updatedfd9b8bc
MapSmart20 updates
  • FeatureAuto-create user and send welcome email when creating resourcefc2139a
  • FeatureAuto-link resource to user by email match on admin create2fd7bcd
  • ImprovementImprove access code registration for existing usersb97eb83
  • FixFix JSON serialization for time fields and improve UI stylingb87c3e2
  • FixSimplify title to just MapSmart3a7d6d8
  • FixRemove unused ProCard import6e7573f
  • FixAdd system font to Back to AIOne button90db7b9
  • FixFocus state shows green border with green glow like AssetSmartf5ea46a
  • FixGreen border on hover, grey border on focus5f9e437
  • FixKeep input borders grey on hover/focus like AssetSmarta49ee8d
  • FixGrey placeholder text instead of grey backgroundec0726c
  • FixGrey input backgrounds and larger login button text3c23a1c
  • FixMatch login card padding with AssetSmart (32px -> 24px)5127a12
  • FixStandardize login page styling across products1510b14
  • FixFix MapSmart login button sizing - stronger CSS selectorsbc4ae37
  • UpdateMatch MapSmart login styling to AssetSmartf87df35
  • FixFix login page background flash - change dark fallback to light grey80e8d54
  • Updatems frontend overhaul8bba9b2
  • ImprovementAIOne login update649a59d
  • Improvementmobile sweeper updatesf5f385e
SolveSmart14 updates
  • FixUse OAuth state parameter instead of session for redirect origin326c28c
  • FixExplicitly save session before OAuth redirectbd61774
  • FixPreserve login domain (modelsmart vs solvesmart) through OAuth flowb5fab86
  • FixCheck hostname for ModelSmart detection (modelsmart.aione.uk)186ad2d
  • FixDynamic title (SolveSmart/ModelSmart) and fix SmartSolve typo157ba87
  • FeatureDynamic favicon based on platform (SS=teal, MS=orange)5bf70ef
  • FixUpdate index.html to use favicon.icoe547e08
  • FixStandardize login page styling to match AssetSmart/MapSmart0057871
  • Improvementbackground updateceebdbd
  • Updatelogin gape53eb7f
  • Improvementprivacy and landing updates7be268e
  • ImprovementAIOne login alignment update6118d15
  • Fixorg name correction128bd06
  • Improvementdual token update35b60d0
Friday, 2 January 20262026-01-02
AIOne Mobile4 updates
  • UIInject CSS to hide login/header in privacy and terms WebViewsb13727b
  • UpdateHide privacy and terms routes from tab bara4461cc
  • TestUse product-specific URLs for privacy and terms pages9bd818e
  • UpdateHandle multi-org selection in AuthCallbackf558fbd
MapSmart6 updates
  • FixFix entity_id filtering in exports controller JOIN clauses5015f65
  • FixFix entity_id filtering in UPRN service queries1357589
  • FeatureAdd region override indicator to services table8a89c36
  • FixFix Bulk Edit visibility on Services pagesd9a465a
  • UpdateDisable healthchecks for celery and osrm containerse254872
  • Improvementupdatesffc16ac
Platform10 updates
  • FeatureAdd product-specific organisationId to token payloada4602c4
  • FixAdd debug logging to productSync for userId tracking6e10299
  • FixFix MapSmart user sync with proper table structure4b79745
  • FixFix multi-org support in product sync8eb36fd
  • FixFix ProductAccess upsert for nullable organisationIdf9273b6
  • FixFix Resource table name to ModelSmartOrganisationResourcedd16492
  • FixFix table names for SolveSmart and MapSmart syncc9cf863
  • FixFix SSL for AWS RDS connections in productSyncdbc0a53
  • FeatureAdd pg package for database connections08c84b4
  • FeatureAdd product access sync from existing databases528fdf3
SolveSmart3 updates
  • TestUse product-specific organisationId from token019c66a
  • FixAdd debug logging to verifyToken for userId tracingfb2042e
  • FixFix verifyToken to use product-specific userId5a9a7c4
Thursday, 1 January 20262026-01-01
MapSmart4 updates
  • FeatureStrip geometry from save payload and add logging6edb17c
  • UpdateIncrease Flask max request size to 50MB for large schedule dataaf2a7fc
  • Fiximport fix159ab7a
  • Fixschedule fix93d9889
Platform5 updates
  • FeatureAdd trust proxy for nginx reverse proxy1810110
  • FixFix remaining TypeScript errors7cf2657
  • FixFix TypeScript errors for build89f913e
  • FixFix Dockerfile for multi-stage buildc15c6df
  • UpdateAIOne Auth - central authentication serviced699c5b
SolveSmart10 updates
  • ImprovementUpdate auth middleware to use AIOne Auth validation9b4b607
  • FeatureAdd API proxy to frontend nginx config01c66f4
  • FixFix API URL environment variable - remove hardcoded ngrok fallback25c5f9c
  • FeatureAdd .dockerignore to exclude local env files from builds778fcbe
  • FixFix case-sensitive CSS import for Linux compatibility599625b
  • FixFix frontend TypeScript errors for production build36250b3
  • FixFix TypeScript errors for production buildf0b4f52
  • UpdateSwitch to node:20-slim for better sharp compatibility0b7d3c9
  • FixAdd node-gyp for sharp compilation in Dockercb8082d
  • UpdateRoq Dec Madnessd82b8d0
Thursday, 18 December 20252025-12-18
SolveSmart1 update
  • Improvementplanning room refactored85189e6
Monday, 15 December 20252025-12-15
MapSmart4 updates
  • FeatureAdd faker to Docker requirementseb773df
  • Fixfaker fix2be5792
  • FeatureAdd faker dependency for UPRN template generation7caa61c
  • Fixdelete fixes +++66a5d8d
Monday, 8 December 20252025-12-08
MapSmart3 updates
  • Updatescheduler and comments continued29a6fab
  • Improvementscheduler updates24f8b50
  • Improvementscheduler update + last sweeper bitsda9fef4
Sunday, 7 December 20252025-12-07
MapSmart14 updates
  • UIComplete DEPLOYMENT.md with operations and troubleshooting guide9e643a1
  • UpdateChange backend port from 5000 to 8081 to match existing frontend config0575e64
  • FixFix libgdk-pixbuf package name for Debian Trixiecf3c42b
  • FeatureAdd WeasyPrint system dependencies to Dockerfiledf6c85f
  • FixFix run_gar_sync.py import paths for Docker523036e
  • FeatureAdd selenium, pdfkit, weasyprint, docx packagesb775883
  • FeatureAdd pyrosm, spatial analysis, and more utilities544b1af
  • FeatureAdd osmnx, rtree, folium and system dependencies39b4b4f
  • FeatureAdd more packages to Docker requirements178d030
  • FeatureAdd scikit-learn to Docker requirements8fbbf2f
  • UpdateUse env_file to load all environment variables13dd83f
  • RemovedRemove external Redis port mapping3abba62
  • FixAdd Docker requirements and fix Celery for containerization7d06132
  • Updatebiffa blur 2e4689b5
Monday, 1 December 20252025-12-01
MapSmart3 updates
  • FixAdd driver map and debug HTML/PNG files to gitignore0e9683b
  • ImprovementBackend refactoring, UI improvements, and test infrastructure579675a
  • FixSecurity: httpOnly cookie auth, SQL injection fixes, and security checklistf6c016d
Sunday, 30 November 20252025-11-30
MapSmart3 updates
  • FeatureSecurity: Environment-based CORS and Redis rate limiting support3866405
  • FeatureSecurity: Add security headers, file validation, and remove hardcoded credentials5e96da7
  • FeatureUI/UX improvements, code reorganization, and feature updates8e0ab79
Wednesday, 26 November 20252025-11-26
MapSmart1 update
  • Updatebiffa_blur2a9786b
Saturday, 22 November 20252025-11-22
MapSmart1 update
  • DocsERP + Legal Docsd0ae0df
Thursday, 20 November 20252025-11-20
MapSmart1 update
  • ImprovementEntity Rehaul + Sweeper Update3d952df
Tuesday, 18 November 20252025-11-18
MapSmart15 updates
  • FeatureEnhance: Add logo, better spacing, and scrollable container to Entity Selectionfd998d0
  • UIRedesign: Entity Selection Page now matches application stylingef5a1d1
  • FixUse logging instead of logger in get_territory_templates2bfe36c
  • FixSecure /edit_entity endpoint for reseller adminsb467769
  • FixAuto-populate reseller_id from JWT for reseller admins in /add_entityd6cbe91
  • FixReseller entities now properly include reseller_id and license fieldsef48ec4
  • FixEntity and user tables now update immediately after add/editec0dde1
  • FixUse logging instead of logger in get_territory_templates5d01e9d
  • FixRemove duplicate get_territory_templates endpoint4cc9e0c
  • FeatureAdd convert_templates.mjs script for reference1c6647a
  • FixAdd territory templates endpoint and update TerritorySelectora489854
  • FeatureApply tabs and territory selector to reseller dashboard entity modal6be874c
  • FeatureAdd tabs to entity modal for better organization4763c13
  • FeatureAdd territory selector for street sweeping entity creation014f579
  • FixAdd license fields support to entity creation and updates9ed9c3c
Monday, 17 November 20252025-11-17
MapSmart19 updates
  • FixOptimize v_reseller_summary view to resolve 50+ second load time1aa80e4
  • FixAllow reseller admins to create users in their entities5f0946f
  • FixCheck user-reseller relationship via entity for multi-entity access8b66a32
  • FixAllow reseller admins to manage user entity access for their users365b221
  • FixRemove duplicate get_user_entities endpoint causing Flask startup errord87b65b
  • UpdateUX: Move entity info from full-width banner to compact sidebar card2ad1332
  • FeatureFeature: Add user entity access management UI (Phase 4 - Multi-entity system)3cdc29c
  • FeatureFeature: Enhance JWT token with multi-entity context in login endpoint9c92441
  • FeatureFeature: Implement multi-entity user access frontend971319a
  • FeatureFeature: Add multi-entity user access backend endpointsc0709a9
  • FeatureFeature: Add license management fields to dashboard Create Entity modal5abf493
  • FixRemove non-existent created_at column from service_types queryf8c4cb3
  • FeatureFeature: Enhance reseller dashboard with location counts, expandable rows, and license management3ed7ebf
  • FeatureAdd diagnostic tools for UPRN count and migration runner1babdd9
  • FixUse existing street_sweeping_logs table instead of creating duplicates9873d51
  • FixRename sweeping road_segments to sweeper_road_segments to avoid conflictb78017a
  • FeatureAdd '(Coming 2026)' label to gully, gritting, and line marking system types36dcdb9
  • FixMake Reseller column condition more explicit for reseller adminsd5e0ce1
  • FixGlobalLayout service type check for non-entity users + Add license managementf57d631
Friday, 14 November 20252025-11-14
MapSmart23 updates
  • FixPrevent reseller admin 403 errors and null reference crashes in Settings8fc80bb
  • FixCorrect services table column name in reseller dashboard query3632e96
  • FixDashboard views now count only ACTIVE records (exclude soft-deleted)e3db1ff
  • FixPrevent crashes when clearing user filter dropdownsc5f933c
  • FixRestrict reseller admin view to only their entities and usersb3a2b4b
  • FixResolve Settings redirect and reseller dashboard SQL errorsd56de39
  • FixAdd null-safe filtering in SettingsPage to prevent crashes when clearing dropdowns3c59f3f
  • FeatureImplement smart routing based on user typea4074bf
  • FixImport fetchWithAuth from correct location in SuperAdminDashboardPage02616f0
  • FeatureImplement view hierarchy and entity selection frontendb0e7810
  • FeatureImplement multi-entity user architecture7db34b3
  • FeatureAdd reseller admin user creation functionality95bed00
  • FixEntity controller now saves all fields (reseller_id, system_type, etc)663c674
  • FixEntity form not submitting reseller_id and system_type52d75a3
  • FixUpdate EntitySchema and remove unprofessional emojis19b46d5
  • FixUse AIOne as reseller example instead of Biffa966d16b
  • FeatureAdd Reseller and System Type Management to Settings Page8741456
  • FixHandle undefined entity in AuthContext for superadmin users009de83
  • FeatureImplement Phase 2: Complete Multi-Tenant Reseller Architecture21f8e2b
  • FeatureImplement Phase 1: Multi-Tenant Reseller Architecture with System Types89e2a5d
  • Removedremove unnecessary files8cdf688
  • FeatureAdd Street Sweeping Module - Phase 1: Territory Setup43341f5
  • UpdateInitial MapSmart codebasec5f7d9b
SolveSmart10 updates
  • Improvementremove Column Mapping tab from Setup page0201ccd
  • Fixadd missing SettingOutlined import and change TimePicker to 5min stepsd323364
  • Featurereplace text input with TimePicker for time window selection311f7ac
  • Fixhandle undefined rule ID when creating new rules from suggestions9e9b3f7
  • Fiximprove Rule Builder modal UX with better widths and HH:MM time input15c8001
  • Fixremove Space wrappers from RuleBuilder modal to fix width constraintsc1bbba4
  • Fiximprove Rule Builder modal UX with better widths and HH:MM time input9bb9c29
  • Fiximprove Rule Builder UX with tabs and fix suggestions displaya04c8ba
  • Fixapply SolveSmart branding and filter column mapping to jobs import657f9c6
  • Featureintegrate Column Mapping with Rules page and add smart rule suggestionse584930
Thursday, 13 November 20252025-11-13
SolveSmart23 updates
  • Fixuse import type for Rules page type imports434d89b
  • Featureimplement Rules Engine for time window transformations4144750
  • Fixtemplate download authentication and improve jobs import messaginga895260
  • Fixtemplate download authentication and improve jobs import messaging6542a62
  • Featureadd jobs template download endpoint for users without column mappingc795877
  • Featureimplement backend endpoints for jobs import273b85d
  • Featureadd jobs import functionality to Planning pageff26fc3
  • Fiximport Text from Typography to fix dimension table rendering7079f67
  • Fixadd defensive rendering for dimensions to prevent Text constructor errorff3f64b
  • Fixadd missing authentication middleware to dimension and location routes89cd1e8
  • Featureadd click navigation to stat cards and use British English847e57a
  • Fixremove SMT mode toggle and fix dimensionId case conversiond9dac20
  • Fixcorrect TransitRule import to match schema structureef2dfec
  • Featureimplement complete vehicle import with shifts and capacities54f9b30
  • Fixremove invalid shift time fields from fleet vehicle import3c90fea
  • Featureadd masterOnly mode to template download modal6d1bdcf
  • Fixpass required props to SetupTemplateDownloadModal in Setup pagebc688c6
  • Featureadd download template button to Setup import tabde6ac2a
  • Fixremove description row from Depots sheet to fix header detectiondbfad16
  • Fixinclude Depots sheet when building seeded templates with vehicles7dfef96
  • Fixproperly merge depots into locations for solver validation and import8a1781c
  • Fixadd Depots sheet to master template, seed depot data, and fix vehicle depot references4494460
  • Fixskip vehicles with missing required depot/class references instead of failing8943789
Tuesday, 11 November 20252025-11-11
SolveSmart4 updates
  • Fixadd required name field to vehicle import60d9ecb
  • Fixuse correct Prisma schema fields for VehicleClass and VehicleCostClass imports15aac07
  • Featureadd depot parsing support to master template import92e6f77
  • Featureadd commitFleetSetup to save setup entities directly to DB instead of creating scenarios88cc285
Monday, 10 November 20252025-11-10
SolveSmart23 updates
  • Improvementstreamline master import to validate on upload, remove redundant validate button18fdf5a
  • Featureadd fleet-specific import route aliases for Setup tab imports16d794c
  • Fixcorrect depot detail card width by removing aggressive min-width rulea1f1baf
  • Improvementreorder Setup tabs - Setup Status first, Import Setup Data second, then alphabetical7707ac2
  • Fixmove Setup Status to tab within Setup page and fix styling92c911e
  • Featureadd Setup Status page for configuration overviewe487ee4
  • Featureimplement full master template import functionality in Import Setup Data tabbbcdc89
  • Improvementreplace Import Fleet Data tab with Import Setup Data tab1c85049
  • Fixapply comprehensive SolveSmart teal branding to Setup pagec860578
  • Fixapply SolveSmart teal branding to Actions dropdown button850db3a
  • Fixchange Excel template tab colors from orange to teal for SolveSmart branding005e462
  • Featureadd template download and import functionality to Setup management tabs26ae271
  • Fiximprove Setup page data loading and add common dimension presetsbe45c63
  • Fixcorrect postcode service import in location controller2288180
  • Featureadd location conflict resolution UI for master imports4988998
  • Featureadd location conflict detection and resolution to master importsaad5dc8
  • Improvementupdate packages55abe60
  • Featureadd Dimensions, Locations, and Transit Rules tabs to Fleet & Setupc53ada6
  • Featureadd API service methods for Dimensions and Locationsaaba151
  • Featureadd frontend types for Dimension and Location4550473
  • Featureadd Dimension and Location models with full CRUD APIs6ba9443
  • Fixseparate SmartSolve and ModelSmart column mappings with proper branding73549eb
  • Fixstyling fixes23e4d65
Tuesday, 4 November 20252025-11-04
SolveSmart8 updates
  • Featureadd comprehensive Fleet Import tab to Fleet & Setup page77f7cae
  • Featureadd fleet import service for bulk fleet data importsc3f17aa
  • Improvementremove column mapping from Import page0a5e418
  • Fixresolve TypeScript errors in Planning.tsx2ff2376
  • Fixrestore fleet.ts service with correct API endpointsc0a638d
  • Improvementconsolidate fleet management into Fleet & Setup page43dc8c8
  • Fixproperly track backend and frontend source code3aea3a9
  • UpdateFinal mono setupfb51011