Both steps relied on a debounced 5-second autosave as the only path
that wrote to the database. Continuing to the next step within those
5 seconds unmounted the component, cancelled the pending timer and
silently lost the data: Final Review then showed 0 m dimensions and
'Tagtype: unknown', and package materials/tasks were missing after a
project reload.
- EnhancedGeometry: handleNext now awaits handleGeometryCalculation
and blocks navigation if the save fails; the continue button shows
'Gemmer geometri...' while saving
- InlineSmartPackage: 'Gem Smart Pakke' and 'Naeste: Final Review' now
await autoSavePackageData (which syncs materials/rentals/status)
instead of only updating parent session state; autoSavePackageData
reports success; selecting a package marks the step as interacted so
the periodic autosave arms correctly
- InlineSmartPackage: rentals read and similar-experience lookup use
the correct /api/customer-projects/projects/{id}/... paths
Found by driving five different quote flows end to end: three runs
happened to win the autosave race, two lost it and persisted nothing.