fix: fail safe on missing workspace revisions
This commit is contained in:
@@ -180,12 +180,11 @@ export function ComposerFooter() {
|
||||
|
||||
const workspace = preferences.workspaceId ?? settings?.workspace ?? "";
|
||||
const selectedWorkspace = workspaces.find((candidate) => candidate.id === workspace);
|
||||
const selectedWorkspaceHasRevision = Boolean(selectedWorkspace?.revision);
|
||||
const { data: workspaceRecord, isError: workspacePolicyError } = useQuery({
|
||||
queryKey: ["workspace", workspace],
|
||||
queryFn: () => getWorkspace(workspace),
|
||||
// Legacy metadata responses do not carry a registry revision, so retain the
|
||||
// existing selector behavior without issuing an incompatible detail request.
|
||||
enabled: Boolean(selectedWorkspace?.revision),
|
||||
enabled: selectedWorkspaceHasRevision,
|
||||
});
|
||||
const model = preferences.model ?? settings?.model ?? "";
|
||||
const thinking = preferences.thinking ?? settings?.thinking ?? "medium";
|
||||
@@ -202,6 +201,8 @@ export function ComposerFooter() {
|
||||
workspacePolicyGate.beginSummary(workspace);
|
||||
} else if (workspaceSummariesError) {
|
||||
workspacePolicyGate.rejectSummary(workspace);
|
||||
} else if (selectedWorkspace && !selectedWorkspaceHasRevision) {
|
||||
workspacePolicyGate.rejectSummary(workspace);
|
||||
} else if (selectedWorkspace?.revision?.state === "migration_required") {
|
||||
workspacePolicyGate.rejectSummary(workspace);
|
||||
} else if (selectedWorkspace?.revision) {
|
||||
@@ -241,7 +242,8 @@ export function ComposerFooter() {
|
||||
function update(patch: WorkspacePreference) {
|
||||
if (patch.workspaceId && patch.workspaceId !== workspace) {
|
||||
const selected = workspaces.find((candidate) => candidate.id === patch.workspaceId);
|
||||
if (selected?.revision?.state === "migration_required") workspacePolicyGate.rejectSummary(patch.workspaceId);
|
||||
if (selected && !selected.revision) workspacePolicyGate.rejectSummary(patch.workspaceId);
|
||||
else if (selected?.revision?.state === "migration_required") workspacePolicyGate.rejectSummary(patch.workspaceId);
|
||||
else if (selected?.revision) workspacePolicyGate.select(patch.workspaceId);
|
||||
else workspacePolicyGate.allowLegacy(patch.workspaceId);
|
||||
}
|
||||
@@ -267,7 +269,7 @@ export function ComposerFooter() {
|
||||
{workspaces.length === 0 ? (
|
||||
<option value="">— workspace —</option>
|
||||
) : (
|
||||
workspaces.filter((w) => w.revision?.state !== "migration_required").map((w) => (
|
||||
workspaces.filter((w) => w.revision && w.revision.state !== "migration_required").map((w) => (
|
||||
<option key={w.name} value={w.name}>
|
||||
{w.name}
|
||||
</option>
|
||||
|
||||
Reference in New Issue
Block a user