diff --git a/apps/desktop/src/components/BranchCommitList.svelte b/apps/desktop/src/components/BranchCommitList.svelte index 892737a63f..7aac8a4171 100644 --- a/apps/desktop/src/components/BranchCommitList.svelte +++ b/apps/desktop/src/components/BranchCommitList.svelte @@ -107,7 +107,6 @@ } else { laneState.selection.set({ branchName, commitId, upstream, previewOpen: true }); } - projectState.stackId.set(stackId); onselect?.(); } diff --git a/apps/desktop/src/components/CreateBranchModal.svelte b/apps/desktop/src/components/CreateBranchModal.svelte index e9b973f60e..fd52afd26a 100644 --- a/apps/desktop/src/components/CreateBranchModal.svelte +++ b/apps/desktop/src/components/CreateBranchModal.svelte @@ -2,8 +2,6 @@ import dependentBranchSvg from '$components/stackTabs/assets/dependent-branch.svg?raw'; import newStackSvg from '$components/stackTabs/assets/new-stack.svg?raw'; import { STACK_SERVICE } from '$lib/stacks/stackService.svelte'; - import { UI_STATE } from '$lib/state/uiState.svelte'; - import { sleep } from '$lib/utils/sleep'; import { inject } from '@gitbutler/core/context'; import { @@ -28,7 +26,6 @@ let { projectId, stackId }: Props = $props(); const stackService = inject(STACK_SERVICE); - const uiState = inject(UI_STATE); const [createNewStack, stackCreation] = stackService.newStack; const [createNewBranch, branchCreation] = stackService.newBranch; @@ -84,14 +81,10 @@ async function addNew() { if (createRefType === 'stack') { - const stack = await createNewStack({ + await createNewStack({ projectId, branch: { name: slugifiedRefName } }); - // Why is there a timing thing going on here? Without sleep you end - // up on stacks[0] after creating a new one. - await sleep(50); - uiState.project(projectId).stackId.set(stack.id); createRefModal?.close(); } else { if (!selectedStackId || !slugifiedRefName) { diff --git a/apps/desktop/src/components/FeedItem.svelte b/apps/desktop/src/components/FeedItem.svelte index c5ac183704..08ad5be922 100644 --- a/apps/desktop/src/components/FeedItem.svelte +++ b/apps/desktop/src/components/FeedItem.svelte @@ -199,7 +199,7 @@ {getDisplayNameForWorkflowKind(action.kind)}: - + {:else if isFeedMessage(action)} {#if action.type === 'assistant'} @@ -237,7 +237,7 @@ {#if action.toolCalls.length > 0}
{#each action.toolCalls as toolCall} - + {/each}
{/if} diff --git a/apps/desktop/src/components/FeedItemKind.svelte b/apps/desktop/src/components/FeedItemKind.svelte index 6a7e562f33..b532ee2ad8 100644 --- a/apps/desktop/src/components/FeedItemKind.svelte +++ b/apps/desktop/src/components/FeedItemKind.svelte @@ -7,7 +7,6 @@ import type { WorkflowKind } from '$lib/actions/types'; interface BaseProps { - projectId: string; type: 'workflow' | 'tool-call'; } @@ -23,30 +22,26 @@ type Props = WorkflowProps | ToolCallProps; - const { projectId, ...rest }: Props = $props(); + const { ...rest }: Props = $props(); const uiState = inject(UI_STATE); let isExpanded = $state(false); function selectCommit(stackId: string, branchName: string, commitId: string) { - const projectState = uiState.project(projectId); const laneState = uiState.lane(stackId); laneState.selection.set({ branchName, commitId, previewOpen: true }); - projectState.stackId.set(stackId); } function selectBranch(stackId: string, branchName: string) { - const projectState = uiState.project(projectId); const laneState = uiState.lane(stackId); laneState.selection.set({ branchName, previewOpen: true }); - projectState.stackId.set(stackId); } diff --git a/apps/desktop/src/components/FeedStreamMessage.svelte b/apps/desktop/src/components/FeedStreamMessage.svelte index 121027d969..7fe8ca1b76 100644 --- a/apps/desktop/src/components/FeedStreamMessage.svelte +++ b/apps/desktop/src/components/FeedStreamMessage.svelte @@ -94,7 +94,7 @@

Vibing

{#each toolCalls as toolCall, index (index)} - + {/each}
{/if} diff --git a/apps/desktop/src/components/NewCommitView.svelte b/apps/desktop/src/components/NewCommitView.svelte index ff977826d6..bfae1a749a 100644 --- a/apps/desktop/src/components/NewCommitView.svelte +++ b/apps/desktop/src/components/NewCommitView.svelte @@ -72,7 +72,6 @@ branch: { name: finalBranchName, order: 0 } }); finalStackId = stack.id; - projectState.stackId.set(finalStackId); finalBranchName = stack.heads[0]?.name; // Updated to access the name property uiState.global.draftBranchName.set(undefined); } diff --git a/apps/desktop/src/lib/stacks/createAiStack.svelte.ts b/apps/desktop/src/lib/stacks/createAiStack.svelte.ts index 599351c84c..f4933ae834 100644 --- a/apps/desktop/src/lib/stacks/createAiStack.svelte.ts +++ b/apps/desktop/src/lib/stacks/createAiStack.svelte.ts @@ -19,16 +19,12 @@ export function useCreateAiStack(projectId: Reactive) { } }); - // Because the ui state is updated asyncly, we need to let some time - // pass. This is far from a good solution to this problem. - await sleep(50); - uiState.project(pid).stackId.set(stack.id); if (!stack.id) return; - const lane = uiState.lane(stack.id); lane.selection.set({ codegen: true, branchName: stack.heads[0]?.name, previewOpen: true }); - // I strongly dislike this sleep + // Because the ui state is updated asyncly, we need to let some time + // pass. This is far from a good solution to this problem. await sleep(50); focusClaudeInput(stack.id); } diff --git a/apps/desktop/src/lib/stacks/macros.ts b/apps/desktop/src/lib/stacks/macros.ts index b298c4bd71..d5c9bf2066 100644 --- a/apps/desktop/src/lib/stacks/macros.ts +++ b/apps/desktop/src/lib/stacks/macros.ts @@ -43,8 +43,6 @@ export default class StackMacros { commitId: outcome.newCommit, previewOpen: true }); - - this.uiState.project(this.projectId).stackId.set(stack.id); } } @@ -124,6 +122,5 @@ export default class StackMacros { commitId: newCommitId, previewOpen }); - this.uiState.project(this.projectId).stackId.set(destinationStackId); } } diff --git a/apps/desktop/src/lib/state/uiState.svelte.ts b/apps/desktop/src/lib/state/uiState.svelte.ts index c3026f5d41..963e98299d 100644 --- a/apps/desktop/src/lib/state/uiState.svelte.ts +++ b/apps/desktop/src/lib/state/uiState.svelte.ts @@ -76,7 +76,6 @@ export type ExclusiveAction = export type ProjectUiState = { exclusiveAction: ExclusiveAction | undefined; - stackId: string | undefined; branchesSelection: BranchesSelection; showActions: boolean; branchesToPoll: string[]; @@ -171,7 +170,6 @@ export class UiState { readonly project = this.buildScopedProps(this.scopesCache.projects, { exclusiveAction: undefined, branchesSelection: {}, - stackId: undefined, showActions: false, branchesToPoll: [], selectedClaudeSession: undefined, @@ -459,11 +457,6 @@ export function updateStaleProjectState( ) { const projectState = uiState.project(projectId); - // Unselect the current stack if it is not in the list of stack IDs - if (projectState.stackId.current && !stackIds.includes(projectState.stackId.current)) { - projectState.stackId.set(undefined); - } - if (projectState.exclusiveAction.current) { updateExclusiveActionState( projectState.exclusiveAction.current, diff --git a/apps/desktop/src/lib/testing/mockUiState.ts b/apps/desktop/src/lib/testing/mockUiState.ts index d44a9b184f..3665ba948e 100644 --- a/apps/desktop/src/lib/testing/mockUiState.ts +++ b/apps/desktop/src/lib/testing/mockUiState.ts @@ -25,7 +25,6 @@ const MOCK_STACK_UI_STATE: StackState = { const MOCK_PROJECT_UI_STATE: ProjectUiState = { exclusiveAction: undefined, branchesSelection: { branchName: 'test' }, - stackId: undefined, showActions: false, branchesToPoll: [], selectedClaudeSession: undefined, diff --git a/apps/desktop/src/routes/[projectId]/workspace/+page.svelte b/apps/desktop/src/routes/[projectId]/workspace/+page.svelte index 61895ef02c..096ca7547a 100644 --- a/apps/desktop/src/routes/[projectId]/workspace/+page.svelte +++ b/apps/desktop/src/routes/[projectId]/workspace/+page.svelte @@ -4,25 +4,18 @@ import WorkspaceView from '$components/WorkspaceView.svelte'; import { MODE_SERVICE } from '$lib/mode/modeService'; import { STACK_SERVICE } from '$lib/stacks/stackService.svelte'; - import { UI_STATE } from '$lib/state/uiState.svelte'; import { inject } from '@gitbutler/core/context'; const modeService = inject(MODE_SERVICE); const projectId = $derived(page.params.projectId!); const mode = $derived(modeService.mode({ projectId })); - const uiState = inject(UI_STATE); const stackService = inject(STACK_SERVICE); - const projectState = $derived(uiState.project(projectId)); - const stackId = $derived(projectState.stackId.current); // Check for stackId in URL query parameters const urlStackId = $derived(page.url.searchParams.get('stackId')); let scrollToStackId = $state(undefined); - const firstStackQuery = $derived(stackService.stackAt(projectId, 0)); - const firstStack = $derived(firstStackQuery.response); - // Read all local commits in the workspace for the given project $effect(() => { stackService.allLocalCommits(projectId); @@ -30,10 +23,7 @@ $effect(() => { if (urlStackId) { - projectState.stackId.set(urlStackId); scrollToStackId = urlStackId; - } else if (stackId === undefined && firstStack) { - projectState.stackId.set(firstStack.id); } });