fix: merge subtask metadata instead of replacing in FileStorage

Changed from replacing metadata to merging it:
- Preserves existing metadata keys from original subtask
- Adds/overrides with new metadata keys from update
- Supports both AI updates (no metadata) and direct updates (with metadata)

Addresses CodeRabbit nitpick about metadata replacement.
This commit is contained in:
Cedric Hurst
2026-01-02 17:46:53 -06:00
committed by Ralph Khreish
parent d6e502a927
commit 01c274a21d

View File

@@ -386,9 +386,15 @@ export class FileStorage implements IStorage {
String(st.id) === String(updatedSubtask.id) ||
(updatedSubtask.title && st.title === updatedSubtask.title)
);
// Preserve original subtask's metadata if it exists
if (originalSubtask?.metadata) {
return { ...updatedSubtask, metadata: originalSubtask.metadata };
// Merge metadata: preserve original and add/override with new
if (originalSubtask?.metadata || updatedSubtask.metadata) {
return {
...updatedSubtask,
metadata: {
...(originalSubtask?.metadata || {}),
...(updatedSubtask.metadata || {})
}
};
}
return updatedSubtask;
});