fix(worktree): gate sessions on bootstrap readiness (#1762)
Co-authored-by: Leonid Skorobogatyy <bash@opencode.itc.local> Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Leonid Skorobogatyy
Bohdan Triapitsyn
parent
03e6f789a4
commit
8c1a24089d
@@ -14,7 +14,7 @@ import { checkIsGitRepository, previewGitWorktree } from '@/lib/gitApi';
|
||||
import { generateBranchName } from '@/lib/git/branchNameGenerator';
|
||||
import { parseModelIdentifier } from '@/lib/modelIdentifier';
|
||||
import { getRootBranch } from '@/lib/worktrees/worktreeStatus';
|
||||
import { getWorktreeSetupCommands } from '@/lib/openchamberConfig';
|
||||
import { getWorktreeSetupCommands, getWorktreeSetupWaitEnabled } from '@/lib/openchamberConfig';
|
||||
import {
|
||||
removeProjectWorktree,
|
||||
type ProjectRef,
|
||||
@@ -25,9 +25,16 @@ import {
|
||||
rejectPendingDraftWorktreeRequest,
|
||||
resolvePendingDraftWorktreeRequest,
|
||||
} from '@/lib/worktrees/pendingDraftWorktree';
|
||||
import { waitForWorktreeBootstrap } from '@/lib/worktrees/worktreeBootstrap';
|
||||
|
||||
const normalizePath = (value: string): string => value.replace(/\\/g, '/').replace(/\/+$/, '') || value;
|
||||
|
||||
const waitForWorktreeBootstrapIfEnabled = async (project: ProjectRef, directory: string): Promise<void> => {
|
||||
if (await getWorktreeSetupWaitEnabled(project)) {
|
||||
await waitForWorktreeBootstrap(directory);
|
||||
}
|
||||
};
|
||||
|
||||
const resolveProjectRef = (directory: string): ProjectRef | null => {
|
||||
const normalized = normalizePath(directory);
|
||||
const projects = useProjectsStore.getState().projects;
|
||||
@@ -417,6 +424,8 @@ export async function createWorktreeSessionForBranch(
|
||||
kind,
|
||||
};
|
||||
|
||||
await waitForWorktreeBootstrapIfEnabled(projectRef, metadata.path);
|
||||
|
||||
// Create the session
|
||||
const sessionStore = useSessionUIStore.getState();
|
||||
const session = await sessionStore.createSession(undefined, metadata.path);
|
||||
@@ -520,6 +529,8 @@ export async function createWorktreeSessionForNewBranch(
|
||||
kind,
|
||||
};
|
||||
|
||||
await waitForWorktreeBootstrapIfEnabled(projectRef, metadata.path);
|
||||
|
||||
const sessionStore = useSessionUIStore.getState();
|
||||
const session = await sessionStore.createSession(undefined, metadata.path);
|
||||
if (!session) {
|
||||
|
||||
Reference in New Issue
Block a user