fix: v2.7.4 — Changes matches JetBrains (#72), the chat says when Claude waits on a trust prompt (#73), Vietnamese Telex in Safari
- Changes (#72): a file git reports `MM` whose working copy equals HEAD again (a staged change since undone on disk) is no longer listed — JetBrains' GitChangesCollector drops it the same way. Mode-only changes stay listed. statusCounts (the dirty-tree safety checks) is unchanged. - Chat (#73): Claude Code runs no hook before a folder is trusted, so a new pane's session has no row; the chat now says the session has not started, offers Open terminal, and asks before typing a message or /model //effort into the pane (an Enter would pick the trust prompt's "No, exit"). - Terminal: Safari + macOS's own Vietnamese Telex replaces the whole word on each key (insertReplacementText), which xterm.js ignores — only each word's first letter reached the pane. The edit is now sent as DELs + the new tail. - Also: Ctrl+V pastes a screenshot into the terminal as a file path; the folder browser fallback lists files for a file field (`files=1`); the macOS native picker opens in front of the browser; a hidden tab is marked while a chat waits or once a turn ended; chat live line shows running calls, turn time and tokens, and "Done in …".
This commit is contained in:
@@ -395,13 +395,17 @@ async function summarizeWork(dir) {
|
||||
const [entries, numstat] = await Promise.all([
|
||||
laneStatus(dir),
|
||||
// --relative: cwd-scoped, cwd-relative paths, so they key the status ones.
|
||||
git(dir, ["diff", "--numstat", "-z", "--relative", "HEAD"]).catch(() => ({ stdout: "" })),
|
||||
git(dir, ["diff", "--numstat", "-z", "--relative", "HEAD"]).catch(() => null),
|
||||
]);
|
||||
const stats = parseNumstat(numstat.stdout);
|
||||
const stats = parseNumstat(numstat?.stdout ?? "");
|
||||
const files = [];
|
||||
for (const { code, path: file } of entries) {
|
||||
const untracked = code === "??";
|
||||
const stat = stats.get(file);
|
||||
// `MM` with no line against HEAD: a staged change the working tree has
|
||||
// reverted — nothing to commit from the file on disk. JetBrains' Changes
|
||||
// view drops it the same way (#72). Only when the numstat answered.
|
||||
if (code === "MM" && numstat && !stat) continue;
|
||||
// One read per untracked file, not two: its line count and its
|
||||
// binary-ness are the same buffer answered twice.
|
||||
// Sequential on purpose: `normal` folds untracked dirs, so this is short.
|
||||
|
||||
@@ -85,6 +85,8 @@ function dialogCommands(kind, dir, platform = process.platform) {
|
||||
const title = TITLES[kind];
|
||||
if (platform === "darwin") {
|
||||
const what = kind === "dir" ? "folder" : "file";
|
||||
// osascript started by a background server is not the frontmost app, so
|
||||
// its dialog opened BEHIND the browser; `activate` brings it forward.
|
||||
return [
|
||||
[
|
||||
"osascript",
|
||||
@@ -92,6 +94,8 @@ function dialogCommands(kind, dir, platform = process.platform) {
|
||||
"-e",
|
||||
"on run argv",
|
||||
"-e",
|
||||
"activate",
|
||||
"-e",
|
||||
`POSIX path of (choose ${what} with prompt (item 1 of argv) default location (POSIX file (item 2 of argv)))`,
|
||||
"-e",
|
||||
"end run",
|
||||
|
||||
Reference in New Issue
Block a user