T13: the right column's Git and Files switch, kept in settings; Files shows the shown session's folder as a tree, folders first, Git's marks on names from git status without optional locks, unreadable folders noted; a double press opens a folder, or a file in the system's app; it reloads when the session reports a folder, so at each prompt; a program without shell integration gets a line saying it reports no folder; header controls keep their presses from the header's double-press zoom
CI / platforms (windows-latest) (push) Failing after 8s
CI / macos (push) Failing after 9m12s
CI / platforms (ubuntu-24.04) (push) Canceled after 0s

This commit is contained in:
ZacharyZhang-NY committed 2026-10-14 19:09:21 -04:00
1 parent 2ddc40d939
commit 8369d96b36
11 files changed
+700 -27

No files matched your search

+6
View File
@@ -47,6 +47,8 @@ pub struct Launch {
pub program: Option<(String, Vec<String>)>,
pub cwd: PathBuf,
pub env: Vec<(String, String)>,
/// Shell integration makes it report its folder.
pub reports: bool,
}
/// A running program on a pseudo-terminal and the grid it draws into.
@@ -239,6 +241,7 @@ mod tests {
program: Some(("/bin/sh".into(), vec!["-c".into(), script.into()])),
cwd: std::env::temp_dir(),
env: vec![("ELY".into(), "ok".into())],
reports: false,
};
let (pty, mut events) =
spawn(&launch, size, (8, 16), config(&Settings::default())).expect("sh starts");
@@ -298,6 +301,7 @@ mod tests {
program: Some(("/bin/sh".into(), vec!["-c".into(), script.into()])),
cwd: std::env::temp_dir(),
env: Vec::new(),
reports: false,
};
let (pty, mut events) =
spawn(&launch, (20, 4), (8, 16), config(&Settings::default())).expect("sh starts");
@@ -342,6 +346,7 @@ mod tests {
program: None,
cwd: "/nonexistent/ely".into(),
env: Vec::new(),
reports: false,
};
let error = spawn(&launch, (20, 4), (8, 16), config(&Settings::default()))
.err()
@@ -359,6 +364,7 @@ mod tests {
program: Some(("/bin/sh".into(), vec!["-c".into(), "true".into()])),
cwd: folder.clone(),
env: Vec::new(),
reports: false,
};
let started = spawn(&launch, (20, 4), (8, 16), config(&Settings::default()));
std::fs::set_permissions(&folder, std::fs::Permissions::from_mode(0o700)).expect("700");
+5 -1
View File
@@ -87,6 +87,7 @@ pub fn launch(shell: &str, cwd: PathBuf, dir: &Path) -> anyhow::Result<Launch> {
program: (!shell.is_empty()).then(|| (path.clone(), Vec::new())),
cwd,
env: Vec::new(),
reports: true,
};
let script = |name: &str| dir.join(name).display().to_string();
match name.as_str() {
@@ -130,7 +131,10 @@ pub fn launch(shell: &str, cwd: PathBuf, dir: &Path) -> anyhow::Result<Launch> {
],
));
}
_ => log::info!("shell integration: none for {path}; its folder goes unreported"),
_ => {
launch.reports = false;
log::info!("shell integration: none for {path}; its folder goes unreported")
}
}
log::info!("shell integration: {path} as {name}");
Ok(launch)