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