Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions PolyPilot/wwwroot/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,9 @@
el.value = '';
if (window.__liveDrafts) delete window.__liveDrafts[elementId];
el.__lastRestoredDraft = '';
// Mark this input as recently cleared — prevents stale draft restore on re-render
window.__recentlySentIds = window.__recentlySentIds || Object.create(null);
window.__recentlySentIds[elementId] = Date.now();
el.style.height = 'auto';
// Remove slash command ghost overlay
var ghost = document.getElementById(elementId + '--slash-ghost');
Expand Down Expand Up @@ -818,12 +821,30 @@
}
}
}
// Sweep stale __recentlySentIds entries (5s TTL prevents unbounded growth)
if (window.__recentlySentIds) {
var now = Date.now();
for (var k in window.__recentlySentIds) {
if (now - window.__recentlySentIds[k] > 5000) delete window.__recentlySentIds[k];
}
}
for (var id in drafts) {
var el = document.getElementById(id);
if (!el) continue;
var desired = drafts[id] || '';
var current = (typeof el.value === 'string') ? el.value : '';
var lastRestored = (typeof el.__lastRestoredDraft === 'string') ? el.__lastRestoredDraft : '';

// Skip restore if this input was recently cleared (prevents re-filling with stale draft)
if (window.__recentlySentIds && window.__recentlySentIds[id]) {
if (desired && !current) {
continue; // Don't restore stale text into a cleared input (flag survives for next re-render)
}
// Danger window over: desired is empty or user has typed — flag no longer needed
delete window.__recentlySentIds[id];
}

// Skip restore if user has typed diverged content since last restore
var hasDivergedUserText = current.length > 0 && current !== desired && current !== lastRestored;
if (hasDivergedUserText) continue;
if (current !== desired) {
Expand Down
Loading