mirror of
https://github.com/stablyai/orca.git
synced 2026-10-02 00:02:05 +00:00
refactor(workspaces): unify display-name pin derivation
Three call sites (renderer optimistic update, local IPC updateMeta handler, remote worktree.set handler) each restated the same formula; a future edit to one would silently skew provenance between paths.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { ipcMain } from 'electron'
|
||||
import type { WorktreeMeta } from '../../../../shared/worktree/meta-types'
|
||||
import { displayNameUpdatePinsLabel } from '../../../../shared/worktree/display-name-provenance'
|
||||
import { parseExecutionHostId } from '../../../../shared/execution-host'
|
||||
import { stripOrcaProvenanceMetaUpdates } from '../../../worktree-removal-safety'
|
||||
import { getRepoIdFromWorktreeId } from '../../../../shared/worktree/id'
|
||||
@@ -40,7 +41,7 @@ export function registerWorktreeMetadataHandlers(context: WorktreeIpcContext): v
|
||||
? {
|
||||
...validatedUpdates,
|
||||
// The host persists provenance; do not rely on renderer-authored metadata.
|
||||
displayNameIsPinned: Boolean(validatedUpdates.displayName.trim()),
|
||||
displayNameIsPinned: displayNameUpdatePinsLabel(validatedUpdates.displayName),
|
||||
pendingFirstAgentMessageRename: false,
|
||||
firstAgentMessageRenameError: null
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
resolveAutomationWorkspaceProvenance
|
||||
} from '../../../automations/workspace-provenance'
|
||||
import { buildCliWorkspaceProvenance } from '../../../../shared/cli-workspace-provenance'
|
||||
import { displayNameUpdatePinsLabel } from '../../../../shared/worktree/display-name-provenance'
|
||||
import { defineMethod, type RpcMethod } from '../core'
|
||||
import { buildManagedWorktreeCreateArgs } from './worktree-create-args'
|
||||
import { resolvePairedCallerHostId } from './paired-caller-host-id'
|
||||
@@ -134,7 +135,7 @@ export const WORKTREE_METHODS: RpcMethod[] = [
|
||||
worktree: await runtime.updateManagedWorktreeMeta(params.worktree, {
|
||||
displayName: params.displayName,
|
||||
...(params.displayName !== undefined
|
||||
? { displayNameIsPinned: Boolean(params.displayName.trim()) }
|
||||
? { displayNameIsPinned: displayNameUpdatePinsLabel(params.displayName) }
|
||||
: {}),
|
||||
linkedIssue: params.linkedIssue,
|
||||
linkedPR: params.linkedPR,
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { WorktreeSlice } from '../../worktree-helpers'
|
||||
import type { WorktreeSliceGet, WorktreeSliceSet } from '../listing/worktree-slice-types'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { isPositiveHostedReviewNumber } from '../../../../../../shared/hosted-review'
|
||||
import { displayNameUpdatePinsLabel } from '../../../../../../shared/worktree/display-name-provenance'
|
||||
import { parseWorkspaceKey } from '../../../../../../shared/workspace-scope'
|
||||
import { applyWorktreeUpdates, getRepoIdFromWorktreeId } from '../../worktree-helpers'
|
||||
import { getHostedReviewCacheKey } from '../../hosted-review-cache-identity'
|
||||
@@ -124,7 +125,7 @@ export function createUpdateWorktreeMeta(
|
||||
// Why: bump lastActivityAt on comment edits so the time-decay sort doesn't drop a just-touched worktree.
|
||||
const displayNameProvenance =
|
||||
'displayName' in normalizedUpdates
|
||||
? { displayNameIsPinned: Boolean(normalizedUpdates.displayName?.trim()) }
|
||||
? { displayNameIsPinned: displayNameUpdatePinsLabel(normalizedUpdates.displayName) }
|
||||
: {}
|
||||
const targetEnriched = resolvedPushTarget
|
||||
? { ...normalizedUpdates, ...displayNameProvenance, pushTarget: resolvedPushTarget }
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
/** A rename with text pins the label; empty text returns it to automatic (branch-derived). */
|
||||
export function displayNameUpdatePinsLabel(displayName: string | undefined): boolean {
|
||||
return Boolean(displayName?.trim())
|
||||
}
|
||||
Reference in New Issue
Block a user