Add clone support for scene and automation cards, update sync clock descriptions

- Scene clone: opens capture modal with prefilled name/description/targets
  instead of server-side duplication; removed backend clone endpoint
- Automation clone: opens editor with prefilled conditions, scene, logic,
  deactivation mode (webhook tokens stripped for uniqueness)
- Updated sync clock i18n descriptions to reflect speed-only-on-clock model
- Added entity card clone pattern documentation to server/CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 22:47:11 +03:00
parent bc5d8fdc9b
commit a330a8c0f0
9 changed files with 115 additions and 65 deletions

View File

@@ -164,27 +164,6 @@ async def delete_scene_preset(
raise HTTPException(status_code=404, detail=str(e))
# ===== Clone =====
@router.post(
"/api/v1/scene-presets/{preset_id}/clone",
response_model=ScenePresetResponse,
tags=["Scene Presets"],
status_code=201,
)
async def clone_scene_preset(
preset_id: str,
_auth: AuthRequired,
store: ScenePresetStore = Depends(get_scene_preset_store),
):
"""Duplicate a scene preset with all its stored target snapshots."""
try:
cloned = store.clone_preset(preset_id)
except ValueError as e:
raise HTTPException(status_code=404, detail=str(e))
return _preset_to_response(cloned)
# ===== Recapture =====