|
48 | 48 |
|
49 | 49 | // Track initial values to detect actual changes from the loaded state. |
50 | 50 | // This prevents false "unsaved changes" warnings when opening an existing task. |
51 | | - let initial_name = task.name |
52 | | - let initial_description = task.description |
53 | | - let initial_instruction = task.instruction |
54 | | - let initial_thinking_instruction = task.thinking_instruction |
55 | | - let initial_requirements = task.requirements.map((r) => ({ |
56 | | - name: r.name, |
57 | | - instruction: r.instruction, |
58 | | - type: r.type, |
59 | | - priority: r.priority, |
60 | | - })) |
| 51 | + let initial_name: string |
| 52 | + let initial_description: string | null | undefined |
| 53 | + let initial_instruction: string |
| 54 | + let initial_thinking_instruction: string | null | undefined |
| 55 | + let initial_requirements: Array<{ |
| 56 | + name: string | undefined |
| 57 | + instruction: string | undefined |
| 58 | + type: string | undefined |
| 59 | + priority: number | undefined |
| 60 | + }> |
61 | 61 |
|
62 | 62 | function reset_initial_values() { |
63 | 63 | initial_name = task.name |
|
71 | 71 | priority: r.priority, |
72 | 72 | })) |
73 | 73 | } |
| 74 | + reset_initial_values() |
74 | 75 |
|
75 | 76 | function requirements_changed( |
76 | 77 | reqs: Task["requirements"], |
|
79 | 80 | if (reqs.length !== initial.length) return true |
80 | 81 | return reqs.some( |
81 | 82 | (r, i) => |
82 | | - r.name !== initial[i].name || |
83 | | - r.instruction !== initial[i].instruction || |
84 | | - r.type !== initial[i].type || |
| 83 | + (r.name || "") !== (initial[i].name || "") || |
| 84 | + (r.instruction || "") !== (initial[i].instruction || "") || |
| 85 | + (r.type || "") !== (initial[i].type || "") || |
85 | 86 | r.priority !== initial[i].priority, |
86 | 87 | ) |
87 | 88 | } |
88 | 89 |
|
89 | 90 | // Warn before unload only if there are actual changes from the initial state |
90 | 91 | $: warn_before_unload = |
91 | | - !saved && |
92 | | - (task.name !== initial_name || |
93 | | - task.description !== initial_description || |
94 | | - task.instruction !== initial_instruction || |
95 | | - task.thinking_instruction !== initial_thinking_instruction || |
96 | | - requirements_changed(task.requirements, initial_requirements)) |
| 92 | + task.name !== initial_name || |
| 93 | + (task.description || "") !== (initial_description || "") || |
| 94 | + task.instruction !== initial_instruction || |
| 95 | + (task.thinking_instruction || "") !== |
| 96 | + (initial_thinking_instruction || "") || |
| 97 | + requirements_changed(task.requirements, initial_requirements) |
97 | 98 |
|
98 | 99 | // Allow explicitly setting project ID, or infer current project ID |
99 | 100 | export let explicit_project_id: string | undefined = undefined |
|
0 commit comments