feat: sidebar Repository identique au Workspace-local, pages forge unifiees, GC miroirs vides
FlowDeck CI / lint (push) Successful in 1m37s
FlowDeck CI / test (push) Successful in 25m11s
FlowDeck CI / docker (push) Successful in 1m32s

This commit is contained in:
2026-10-09 22:33:34 -04:00
parent 9ea0cddf3c
commit d95178156f
13 changed files with 1110 additions and 175 deletions
+7 -1
View File
@@ -18,6 +18,7 @@ from app.services.collection_lifecycle import (
from ._common import (
WORKSPACE_COOKIE,
_cleanup_empty_mirrors,
_get_active_workspace,
_get_user_id,
_require_user_id,
@@ -158,7 +159,12 @@ def delete_workspace(request: Request, ws_id: int):
@router.post("/api/workspaces/{ws_id:int}/select")
def select_workspace(request: Request, ws_id: int):
"""Set the active workspace via cookie."""
_require_ws_owner(request, ws_id)
uid = _require_ws_owner(request, ws_id)
# Switching workspace: prune other empty forge mirrors.
try:
_cleanup_empty_mirrors(uid, keep_id=ws_id)
except Exception:
pass
response = JSONResponse({"status": "ok", "workspace_id": ws_id})
response.set_cookie(WORKSPACE_COOKIE, str(ws_id), max_age=86400 * 30, httponly=True, path="/")
return response