diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index 86fa1d5864..a3d70a157c 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -514,8 +514,7 @@ // the draft's `draft_path` so the topbar shows the pending name, which after // someone renames the item still names the old location. Comparing against // that fetches the row left behind there instead of the live one. - path: userDraftPath || initialPath, - withStarredInfo: true + path: userDraftPath || initialPath }) // A superseded opening must not write these: the current one would then render // and offer Take latest against the older head. diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 3ee365be89..7c6db7b242 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -693,8 +693,7 @@ // the user has typed, so after someone renames the item it still names // the old location and this would compare against the archived row left // there. Resolving by the row is what lets the diff show the rename. - path: userDraftPath || initialPath, - withStarredInfo: true + path: userDraftPath || initialPath }) // A superseded opening must not write these: the current one would then render diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index f6f89b864f..b6e0134eff 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -380,8 +380,7 @@ async function syncWithDeployed(opening?: number) { const deployedApp = await AppService.getAppByPath({ workspace: $workspaceStore!, - path: $appPath!, - withStarredInfo: true + path: $appPath! }) // A superseded opening must not write these: the current one would then render diff --git a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte index fbc391ac78..a03d5512ca 100644 --- a/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppEditorHeader.svelte @@ -479,8 +479,7 @@ async function syncWithDeployed(opening?: number) { const deployedApp = await AppService.getAppByPath({ workspace: opWorkspace!, - path: appPath!, - withStarredInfo: true + path: appPath! }) // A superseded opening must not write these: the current one would then render diff --git a/frontend/src/lib/utils.test.ts b/frontend/src/lib/utils.test.ts index 07216d341f..65cef7085c 100644 --- a/frontend/src/lib/utils.test.ts +++ b/frontend/src/lib/utils.test.ts @@ -367,7 +367,8 @@ describe('cleanValueProperties', () => { 'edited_by', 'workspace_id', 'parent_hashes', - 'lock_error_logs' + 'lock_error_logs', + 'starred' ] it('strips every server-managed bookkeeping key', () => { diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index cbc6b84503..f3dfb01746 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -1422,7 +1422,8 @@ function replaceFalseWithUndefinedRec(obj: any) { // `hash` is the deployed version's identity, `assets` is re-derived from the // script content by the editor, and `inherited_labels` is computed at read time // from the parent folder — none is editable content, so all three are noise in a -// fork/workspace or version diff. +// fork/workspace or version diff. `starred` is the viewer's own favorite flag, and a +// starred item's `starred: true` survives `replaceFalseWithUndefined`. // // `lock` and `extra_perms` are deliberately NOT in this set: both are legitimate, // user-meaningful fields in some diff contexts (lockfile changes in version-to-version @@ -1447,7 +1448,8 @@ const CLEANED_VALUE_KEYS = new Set([ 'edited_by', 'workspace_id', 'parent_hashes', - 'lock_error_logs' + 'lock_error_logs', + 'starred' ]) export function cleanValueProperties(obj: Value) {