Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Revert "fix: use safeWriteJson for all JSON file writes" by mrubens · Pull Request #4471 · RooCodeInc/Roo-Code · GitHub
Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Revert "fix: use safeWriteJson for all JSON file writes" - #4471

Merged
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files
Jun 9, 2025
Merged

Revert "fix: use safeWriteJson for all JSON file writes"#4471
mrubens merged 1 commit into
mainfrom
revert-3772-use-safe-write-json-for-all-files

Conversation

@mrubens

@mrubensmrubens commented Jun 9, 2025

Copy link
Copy Markdown
Collaborator

Reverts #3772

Looks like this causes issues with saving history, and possibly other things.


Important

Reverts atomic JSON file writes using safeWriteJson, replacing with fs.writeFile, and updates related tests and documentation.

  • Behavior:
    • Reverts use of safeWriteJson for JSON file writes, replacing it with fs.writeFile in modelCache.ts, modelEndpointCache.ts, importExport.ts, FileContextTracker.ts, apiMessages.ts, taskMessages.ts, webviewMessageHandler.ts, and McpHub.ts.
    • Removes atomic write guarantees and locking mechanisms previously provided by safeWriteJson.
  • Tests:
    • Removes safeWriteJson tests from safeWriteJson.test.ts.
    • Updates tests in cache-manager.test.ts and McpHub.test.ts to reflect changes from safeWriteJson to fs.writeFile.
  • Documentation:
    • Deletes use-safeWriteJson.md rule documentation.
  • Dependencies:
    • Removes proper-lockfile and stream-json from package.json dependencies.

This description was created by Ellipsis for d47929e. You can customize this summary. It will automatically update as commits are pushed.

@mrubens
mrubens requested review from cte and jr as code ownersJune 9, 2025 17:47
@dosubotdosubotBot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jun 9, 2025
jr
jr approved these changes Jun 9, 2025
@dosubotdosubotBot added the lgtm This PR has been approved by a maintainer label Jun 9, 2025
cte
cte approved these changes Jun 9, 2025
@mrubens
mrubens merged commit 8d2eeda into mainJun 9, 2025
@mrubens
mrubens deleted the revert-3772-use-safe-write-json-for-all-files branch June 9, 2025 17:53
@github-project-automationgithub-project-automationBot moved this from New to Done in Roo Code RoadmapJun 9, 2025
@github-project-automationgithub-project-automationBot moved this from Triage to Done in Roo Code RoadmapJun 9, 2025
@KJ7LNWKJ7LNW mentioned this pull request Jun 15, 2025
@KJ7LNW

Copy link
Copy Markdown
Contributor

See also: #4468

daniel-lxs pushed a commit that referenced this pull request Jun 21, 2025
Fix race condition where safeWriteJson would fail with ENOENT errors
during lock acquisition when the parent directory was just created.
The issue occurred when the directory creation hadn't fully synchronized
with the filesystem before attempting to acquire a lock. This happened
primarily when Task.saveApiConversationHistory() called the function
immediately after creating the task directory.
The fix ensures directories exist and are fully synchronized before
lock acquisition by:
- Creating directories with fs.mkdir({ recursive: true })
- Verifying access to created directories
- Setting realpath: false in lock options to allow locking non-existent files
Added comprehensive tests for directory creation capabilities.
Fixes: #4468
See-also: #4471, #3772, #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

lgtmThis PR has been approved by a maintainersize:XLThis PR changes 500-999 lines, ignoring generated files.

Projects

No open projects
Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants

@mrubens@KJ7LNW@jr@cte@daniel-lxs