Is your feature request related to a problem?
The assessment results spreadsheet only saves UI styling in localStorage, while user edits to cell values are lost on modal close or page reload. This leads to frustration as users must redo their work each time.
Describe the solution you'd like
Persist the entire workbook (cells + styles) to localStorage on every mutation, keyed by runId. This will ensure that user edits remain intact across refreshes and modal closures.
Why is this enhancement needed?
- Usability: User edits persist through reload, reducing rework.
- Reliability: Flushing prevents data loss during the debounce window.
- Performance: Mutation filter and deduplication avoid unnecessary serialization.
- Maintainability: Schema version management discards stale data on updates.
- Scalability: Eviction strategy maintains storage under the 5MB limit across multiple runs.
Original issue
Describe the current behavior
A clear description of how it currently works and what the limitations are.
The assessment results spreadsheet (SpreadsheetModalInner) persists only Univer UI/styling state (column widths, formatting, frozen panes) per runId in localStorage. Cell value edits made by the user are kept in memory by the Univer instance but are not saved — on modal close or page reload, edited cell values revert to the original server-fetched dataset. There is no schema versioning, no quota handling, no mutation filter (every Univer command triggers a re-serialize), and no flush on tab close.
Describe the enhancement you'd like
A clear and concise description of the improvement you want to see.
Save the full workbook snapshot (cells + styles) to localStorage on every mutation, keyed by runId, so that user edits survive refresh, modal re-open, and accidental tab close.
Why is this enhancement needed?
Explain the benefits (e.g., performance, usability, maintainability, scalability).
- Usability: edits survive reload, no rework.
- Reliability: flush prevents data loss inside debounce window.
- Performance: mutation filter + dedup skips redundant serialize on selection/scroll.
- Maintainability: schema version auto-discards stale payloads on Univer upgrades.
- Scalability: eviction keeps storage under 5MB origin cap across many runs.
Additional context
Add any other context, metrics, screenshots, or examples about the enhancement here.
Key: kaapi_sheet_state_<runId>. Out of scope: cross-device sync, multi-tab conflict resolution, server autosave.
Is your feature request related to a problem?
The assessment results spreadsheet only saves UI styling in localStorage, while user edits to cell values are lost on modal close or page reload. This leads to frustration as users must redo their work each time.
Describe the solution you'd like
Persist the entire workbook (cells + styles) to localStorage on every mutation, keyed by runId. This will ensure that user edits remain intact across refreshes and modal closures.
Why is this enhancement needed?
Original issue
Describe the current behavior
A clear description of how it currently works and what the limitations are.
The assessment results spreadsheet (SpreadsheetModalInner) persists only Univer UI/styling state (column widths, formatting, frozen panes) per runId in localStorage. Cell value edits made by the user are kept in memory by the Univer instance but are not saved — on modal close or page reload, edited cell values revert to the original server-fetched dataset. There is no schema versioning, no quota handling, no mutation filter (every Univer command triggers a re-serialize), and no flush on tab close.
Describe the enhancement you'd like
A clear and concise description of the improvement you want to see.
Save the full workbook snapshot (cells + styles) to localStorage on every mutation, keyed by runId, so that user edits survive refresh, modal re-open, and accidental tab close.
Why is this enhancement needed?
Explain the benefits (e.g., performance, usability, maintainability, scalability).
Additional context
Add any other context, metrics, screenshots, or examples about the enhancement here.
Key:
kaapi_sheet_state_<runId>. Out of scope: cross-device sync, multi-tab conflict resolution, server autosave.