feat(FN-4179): optimistically clear room composer on send
Implements optimistic room composer clear in the ChatView, providing instant UI feedback when switching rooms without waiting for server confirmation, with accompanying tests and documentation updates. Fusion-Task-Id: FN-4179 Fusion-Task-Lineage: 0c3588fa-81ca-464b-b001-506c1756d0ea
This commit is contained in:
@@ -145,6 +145,10 @@ async function runOverlapMerge(dir: string, taskId: string, settingsOverrides: R
|
||||
return { store, result };
|
||||
}
|
||||
|
||||
function testTempParent(): string {
|
||||
return process.env.FUSION_TEST_WORKER_ROOT ?? tmpdir();
|
||||
}
|
||||
|
||||
function assertIsolatedWorkspace(dir: string): void {
|
||||
const repoRoot = process.env.FUSION_TEST_REAL_ROOT;
|
||||
if (!repoRoot) return;
|
||||
@@ -189,7 +193,7 @@ describe("merger overlap guard", () => {
|
||||
let dir: string;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-overlap-guard-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-overlap-guard-"));
|
||||
createdDirs.add(dir);
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
@@ -336,7 +340,7 @@ describe("aiMergeTask overlap-aware fallback integration", () => {
|
||||
let dir: string;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-overlap-merge-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-overlap-merge-"));
|
||||
createdDirs.add(dir);
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
|
||||
@@ -74,6 +74,10 @@ function squashBranch(dir: string, branchName: string, fileName: string, content
|
||||
// Minimal stub settings / args used by commitOrAmendMergeWithFixes
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function testTempParent(): string {
|
||||
return process.env.FUSION_TEST_WORKER_ROOT ?? tmpdir();
|
||||
}
|
||||
|
||||
function assertIsolatedWorkspace(dir: string): void {
|
||||
const repoRoot = process.env.FUSION_TEST_REAL_ROOT;
|
||||
if (!repoRoot) return;
|
||||
@@ -127,7 +131,7 @@ describe("snapshotDirtyFiles", () => {
|
||||
let dir: string;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-merger-snapshot-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-merger-snapshot-"));
|
||||
createdDirs.add(dir);
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
@@ -177,7 +181,7 @@ describe("snapshotDirtyFiles", () => {
|
||||
});
|
||||
|
||||
it("returns empty set when rootDir is not a git repo (error swallowed)", async () => {
|
||||
const nonRepo = mkdtempSync(join(tmpdir(), "fusion-test-merger-non-repo-"));
|
||||
const nonRepo = mkdtempSync(join(testTempParent(), "fusion-test-merger-non-repo-"));
|
||||
assertIsolatedWorkspace(nonRepo);
|
||||
try {
|
||||
const snapshot = await snapshotDirtyFiles(nonRepo);
|
||||
@@ -193,7 +197,7 @@ describe("commitOrAmendMergeWithFixes — staging allowlist", () => {
|
||||
let warnSpy: ReturnType<typeof vi.spyOn>;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-merger-allowlist-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-merger-allowlist-"));
|
||||
createdDirs.add(dir);
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
@@ -528,7 +532,7 @@ describe("snapshotDirtyFiles — paths with embedded spaces", () => {
|
||||
let dir: string;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-merger-snapshot-spaces-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-merger-snapshot-spaces-"));
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
});
|
||||
@@ -581,7 +585,7 @@ describe("commitOrAmendMergeWithFixes — embedded-space paths round-trip", () =
|
||||
let warnSpy: ReturnType<typeof vi.spyOn>;
|
||||
|
||||
beforeEach(() => {
|
||||
dir = mkdtempSync(join(tmpdir(), "fusion-test-merger-allowlist-spaces-"));
|
||||
dir = mkdtempSync(join(testTempParent(), "fusion-test-merger-allowlist-spaces-"));
|
||||
createdDirs.add(dir);
|
||||
assertIsolatedWorkspace(dir);
|
||||
initRepo(dir);
|
||||
|
||||
Reference in New Issue
Block a user