feat: Relocate experiment designer routes under studies, update ROS2 topic paths, and enhance designer hashing and performance.

This commit is contained in:
2025-11-19 18:05:19 -05:00
parent 86b5ed80c4
commit b21ed8e805
19 changed files with 647 additions and 288 deletions

View File

@@ -88,8 +88,8 @@ function DraggableAction({
const style: React.CSSProperties = transform
? {
transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,
}
transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,
}
: {};
const IconComponent = iconMap[action.icon] ?? Sparkles;
@@ -487,4 +487,6 @@ export function ActionLibraryPanel() {
);
}
export default ActionLibraryPanel;
// Wrap in React.memo to prevent unnecessary re-renders causing flashing in categories
export default React.memo(ActionLibraryPanel);

View File

@@ -48,9 +48,18 @@ export interface InspectorPanelProps {
*/
onTabChange?: (tab: "properties" | "issues" | "dependencies") => void;
/**
* Whether to auto-switch to properties tab when selection changes.
* If true, auto-switch to "properties" when a selection occurs.
*/
autoFocusOnSelection?: boolean;
/**
* Study plugins with name and metadata
*/
studyPlugins?: Array<{
id: string;
robotId: string;
name: string;
version: string;
}>;
}
export function InspectorPanel({
@@ -58,6 +67,7 @@ export function InspectorPanel({
activeTab,
onTabChange,
autoFocusOnSelection = true,
studyPlugins,
}: InspectorPanelProps) {
/* ------------------------------------------------------------------------ */
/* Store Selectors */
@@ -339,6 +349,7 @@ export function InspectorPanel({
steps={steps}
actionSignatureDrift={actionSignatureDrift}
actionDefinitions={actionRegistry.getAllActions()}
studyPlugins={studyPlugins}
onReconcileAction={(actionId) => {
// Placeholder: future diff modal / signature update