diff --git a/portal/templates/app/orgs.html b/portal/templates/app/orgs.html
index 1b0dfd9..bd6e732 100644
--- a/portal/templates/app/orgs.html
+++ b/portal/templates/app/orgs.html
@@ -546,21 +546,25 @@
const errEl = document.getElementById('editModalError');
btn.disabled = true; btn.textContent = 'Saving...';
try {
- const version = parseInt(document.getElementById('eVersion').value) || 1;
+ // Always fetch fresh version to avoid stale version conflicts
+ const freshRes = await fetchAPI('/api/orgs/' + editingOrgId);
+ const freshOrg = await freshRes.json();
+ const version = freshOrg.version || 1;
+ document.getElementById('eVersion').value = version;
const mRes = await fetchAPI('/api/orgs/' + editingOrgId + '/members', {
method: 'PUT',
body: JSON.stringify({ members: editingMembers, version })
});
const mData = await mRes.json();
if (!mRes.ok) throw new Error(mData.error || 'Failed to save');
- document.getElementById('eVersion').value = mData.version || version + 1;
+ document.getElementById('eVersion').value = mData.version;
btn.disabled = false; btn.textContent = 'Save Changes';
if (window._orgsMap && window._orgsMap[editingOrgId]) {
window._orgsMap[editingOrgId].members = editingMembers;
- window._orgsMap[editingOrgId].version = mData.version || version + 1;
+ window._orgsMap[editingOrgId].version = mData.version;
}
} catch(e) {
- errEl.textContent = 'Save failed: ' + e.message + ' — contacts were added locally, click Save Changes to retry.';
+ errEl.textContent = 'Save failed: ' + e.message;
errEl.classList.remove('hidden');
btn.disabled = false; btn.textContent = 'Save Changes';
}