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:
@@ -143,6 +143,34 @@ describe("collectChanges — work range", () => {
|
||||
assert.equal((await gitFacts(LANE)).untracked, 2);
|
||||
});
|
||||
|
||||
// #72: a change staged and then undone in the working tree is `MM` in
|
||||
// `git status` while the file on disk equals HEAD — JetBrains' Changes view
|
||||
// (GitChangesCollector) drops it after a `git diff HEAD`, and so does this.
|
||||
it("leaves out a staged change the working tree has reverted (#72)", async () => {
|
||||
write(LANE, "a.txt", "one\nTWO\nthree\n");
|
||||
g(LANE, "add", "a.txt");
|
||||
write(LANE, "a.txt", "one\ntwo\nthree\n"); // back to HEAD's content
|
||||
write(LANE, "keep.txt", "staged\n");
|
||||
g(LANE, "add", "keep.txt");
|
||||
write(LANE, "keep.txt", "staged, then edited\n"); // MM and still a change
|
||||
assert.deepEqual(porcelain(LANE).sort(), ["MM a.txt", "MM keep.txt"]);
|
||||
|
||||
const out = await collectChanges(LANE, { range: "work" });
|
||||
assert.deepEqual(
|
||||
out.files.map((f) => f.path),
|
||||
["keep.txt"]
|
||||
);
|
||||
});
|
||||
|
||||
it("still lists a file whose only change is its mode, as JetBrains does", async () => {
|
||||
fs.chmodSync(path.join(LANE, "a.txt"), 0o755);
|
||||
const out = await collectChanges(LANE, { range: "work" });
|
||||
assert.deepEqual(
|
||||
out.files.map((f) => [f.path, f.added, f.deleted]),
|
||||
[["a.txt", 0, 0]]
|
||||
);
|
||||
});
|
||||
|
||||
it("returns hunks for every file in full mode", async () => {
|
||||
write(LANE, "a.txt", "one\nTWO\nthree\n");
|
||||
const out = await collectChanges(LANE, { range: "work", full: true });
|
||||
|
||||
Reference in New Issue
Block a user