From 89e7e0282d8e0bbe7601e9f0134bb6bfdd435459 Mon Sep 17 00:00:00 2001 From: Joe Date: Sat, 28 Feb 2026 05:31:01 -0600 Subject: [PATCH] Refactor TODO list and enhance sourcemap watch functionality - Updated the TODO list to refine tasks related to sync performance in scripts only mode, emphasizing the need to prune non-script leaves. - Enhanced the sourcemap command to handle non-terminal stdin during watch mode, allowing for graceful exit when stdin is closed. These changes aim to improve project management and optimize the sourcemap functionality. --- TODO.txt | 11 +---------- src/cli/sourcemap.rs | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/TODO.txt b/TODO.txt index 3481ae3d..f3086e50 100644 --- a/TODO.txt +++ b/TODO.txt @@ -345,17 +345,8 @@ we should support right-click to unselect the bubble (atlas/studio/skip) [auto select issue] when you commit changes on git, it's considered unchanged. we should send like the last git hash too, like prior to head, too. -[add ServerStorage/RBX_ANIMSAVES to ignore list!] - globIgnorePaths: ["src/ServerStorage/RBX_ANIMSAVES/**", "src/ServerStorage/MoonAnimator2Saves/**"], - syncbackRules: { - ignoreTrees: ["ServerStorage/RBX_ANIMSAVES/**", "ServerStorage/MoonAnimator2Saves/**"], - }, - [scripts only mode] -when in scripts only mode, try to avoid the entire tree where scripts dont exist to make syncing from the Roblox plugin faster - -[luau-lsp sourcemap gen] -luau-lsp sourcemap generator --watch is leaving instances of atlas running forever +when in scripts only mode, try to avoid the entire tree where scripts dont exist to make syncing from the Roblox plugin faster. prune non-script leaves. [yielding after sync] there is some process that is making disconnecting after a one-shot sync completes take FOREVER if the server is yielding (usually from the reconciler) diff --git a/src/cli/sourcemap.rs b/src/cli/sourcemap.rs index 0ec05686..51f418db 100644 --- a/src/cli/sourcemap.rs +++ b/src/cli/sourcemap.rs @@ -1,6 +1,6 @@ use std::{ borrow::Cow, - io::{BufWriter, Write}, + io::{BufWriter, IsTerminal, Write}, mem::forget, path::{self, Path, PathBuf}, process, @@ -104,6 +104,22 @@ impl SourcemapCommand { )?; if self.watch { + if !std::io::stdin().is_terminal() { + std::thread::spawn(|| { + use std::io::Read; + let mut buf = [0u8; 1]; + loop { + match std::io::stdin().lock().read(&mut buf) { + Ok(0) | Err(_) => { + log::trace!("stdin closed, exiting --watch"); + process::exit(0); + } + Ok(_) => {} + } + } + }); + } + let rt = Runtime::new().unwrap(); loop {