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:
@@ -579,6 +579,25 @@ describe("GET /api/lanes/browse", () => {
|
||||
assert.equal(notADir.status, 400);
|
||||
assert.equal(notADir.body.error.code, "ENOTADIR");
|
||||
});
|
||||
|
||||
it("with files=1 lists files too, opening a file path at its folder", async () => {
|
||||
const filePath = path.join(ROOT, "b-file.txt");
|
||||
fs.writeFileSync(filePath, "hi\n");
|
||||
const response = await request(
|
||||
"GET",
|
||||
`/api/lanes/browse?files=1&path=${encodeURIComponent(filePath)}`
|
||||
);
|
||||
assert.equal(response.status, 200);
|
||||
assert.equal(response.body.path, ROOT);
|
||||
const file = response.body.entries.find((e) => e.name === "b-file.txt");
|
||||
assert.equal(file?.file, true);
|
||||
assert.equal(file.path, filePath);
|
||||
const dir = response.body.entries.find((e) => e.name === "src-repo");
|
||||
assert.ok(dir && !dir.file);
|
||||
|
||||
const dirsOnly = await request("GET", `/api/lanes/browse?path=${encodeURIComponent(ROOT)}`);
|
||||
assert.ok(!dirsOnly.body.entries.some((e) => e.name === "b-file.txt"));
|
||||
});
|
||||
});
|
||||
|
||||
describe("destructive lane lifecycle actions", () => {
|
||||
|
||||
Reference in New Issue
Block a user