- {currentProjectWorkspaces.length > 0 && (
-
-
Codebase
-
- Choose which project workspace this issue should use.
-
-
-
- )}
-
{currentProjectSupportsExecutionWorkspace && (
Execution workspace
diff --git a/ui/src/components/ProjectProperties.tsx b/ui/src/components/ProjectProperties.tsx
index 016498d5..c3788b32 100644
--- a/ui/src/components/ProjectProperties.tsx
+++ b/ui/src/components/ProjectProperties.tsx
@@ -17,7 +17,6 @@ import { AlertCircle, Archive, ArchiveRestore, Check, ExternalLink, Github, Load
import { ChoosePathButton } from "./PathInstructionsModal";
import { DraftInput } from "./agent-config-primitives";
import { InlineEditor } from "./InlineEditor";
-import { useExperimentalWorkspacesEnabled } from "../lib/experimentalSettings";
const PROJECT_STATUSES = [
{ value: "backlog", label: "Backlog" },
@@ -152,7 +151,6 @@ function ProjectStatusPicker({ status, onChange }: { status: string; onChange: (
export function ProjectProperties({ project, onUpdate, onFieldUpdate, getFieldSaveState, onArchive, archivePending }: ProjectPropertiesProps) {
const { selectedCompanyId } = useCompany();
- const { enabled: showExperimentalWorkspaceUi } = useExperimentalWorkspacesEnabled();
const queryClient = useQueryClient();
const [goalOpen, setGoalOpen] = useState(false);
const [executionWorkspaceAdvancedOpen, setExecutionWorkspaceAdvancedOpen] = useState(false);
@@ -749,9 +747,6 @@ export function ProjectProperties({ project, onUpdate, onFieldUpdate, getFieldSa
)}
- {/* PAP-525: workspace UI gated by useExperimentalWorkspacesEnabled() */}
- {showExperimentalWorkspaceUi && (
- <>
@@ -990,8 +985,6 @@ export function ProjectProperties({ project, onUpdate, onFieldUpdate, getFieldSa
)}
- >
- )}
diff --git a/ui/src/lib/experimentalSettings.ts b/ui/src/lib/experimentalSettings.ts
deleted file mode 100644
index a48d7c06..00000000
--- a/ui/src/lib/experimentalSettings.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { useEffect, useState } from "react";
-
-const WORKSPACES_KEY = "paperclip:experimental:workspaces";
-
-export function loadExperimentalWorkspacesEnabled(): boolean {
- if (typeof window === "undefined") return false;
- return window.localStorage.getItem(WORKSPACES_KEY) === "true";
-}
-
-export function saveExperimentalWorkspacesEnabled(enabled: boolean) {
- if (typeof window === "undefined") return;
- window.localStorage.setItem(WORKSPACES_KEY, enabled ? "true" : "false");
- window.dispatchEvent(new CustomEvent("paperclip:experimental:workspaces", { detail: enabled }));
-}
-
-export function useExperimentalWorkspacesEnabled() {
- const [enabled, setEnabled] = useState(loadExperimentalWorkspacesEnabled);
-
- useEffect(() => {
- const handleStorage = (event: StorageEvent) => {
- if (event.key && event.key !== WORKSPACES_KEY) return;
- setEnabled(loadExperimentalWorkspacesEnabled());
- };
- const handleCustom = () => setEnabled(loadExperimentalWorkspacesEnabled());
- window.addEventListener("storage", handleStorage);
- window.addEventListener("paperclip:experimental:workspaces", handleCustom as EventListener);
- return () => {
- window.removeEventListener("storage", handleStorage);
- window.removeEventListener("paperclip:experimental:workspaces", handleCustom as EventListener);
- };
- }, []);
-
- const update = (next: boolean) => {
- saveExperimentalWorkspacesEnabled(next);
- setEnabled(next);
- };
-
- return { enabled, setEnabled: update };
-}
diff --git a/ui/src/pages/InstanceSettings.tsx b/ui/src/pages/InstanceSettings.tsx
index ab77a177..a4781e1f 100644
--- a/ui/src/pages/InstanceSettings.tsx
+++ b/ui/src/pages/InstanceSettings.tsx
@@ -12,7 +12,6 @@ import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
import { queryKeys } from "../lib/queryKeys";
import { formatDateTime, relativeTime } from "../lib/utils";
-import { useExperimentalWorkspacesEnabled } from "../lib/experimentalSettings";
function asRecord(value: unknown): Record