Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ jobs:
cache: npm
cache-dependency-path: ui/package-lock.json
- name: Install UI deps
id: ui-deps
working-directory: ui
run: npm ci
- name: First-party LOC and complexity ratchet
Expand All @@ -176,6 +177,12 @@ jobs:
# with the previous tip (github.event.before). Never fall back to
# the historical dashboard: that paints merge commits red.
BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }}
BASE_BRANCH: ${{ github.event.pull_request.base.ref }}
SOURCE_BRANCH: ${{ github.event.pull_request.head.ref }}
SOURCE_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
BASE_REPOSITORY: ${{ github.event.pull_request.base.repo.full_name }}
SOURCE_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
EVENT_REPOSITORY: ${{ github.event.repository.full_name }}
run: |
set -euo pipefail
if [ -z "${BASE_SHA:-}" ] || [ "${BASE_SHA}" = "0000000000000000000000000000000000000000" ]; then
Expand All @@ -195,17 +202,24 @@ jobs:
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: code-health-report
path: code-health.md
path: |
code-health.md
code-health-integration.json
if-no-files-found: ignore
# Split `npm run check` so a hung runner is visible in the failing step
# instead of one opaque 6-hour job (GitHub's default timeout).
# Collect all validation results even when the ratchet or an earlier
# check fails. A failed step still fails this job and CI required.
- name: UI tests
if: ${{ !cancelled() && steps.ui-deps.outcome == 'success' }}
working-directory: ui
run: npm test
- name: Lint with zero warnings
if: ${{ !cancelled() && steps.ui-deps.outcome == 'success' }}
working-directory: ui
run: npm run lint -- --max-warnings=0
- name: Type-check, build and bundle budget
if: ${{ !cancelled() && steps.ui-deps.outcome == 'success' }}
working-directory: ui
run: python ../scripts/build_ui.py && python ../scripts/build_ui.py --check && npm run budget

Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ ui/blob-report/
# Private planning notes and local-only development artefacts.
/internal/
/comunicaciones/
# Temporary agent handoffs and unapplied integration instructions.
/H[0-9][0-9]_HANDOFF.md
/INTEGRATION*.patch
/PR_BODY.md
/ui/src/features/diagnostics/INTEGRATION.patch
/code-health-integration.json

# Pinokio runtime
logs/
Expand Down
48 changes: 0 additions & 48 deletions H07_HANDOFF.md

This file was deleted.

60 changes: 0 additions & 60 deletions H17_HANDOFF.md

This file was deleted.

30 changes: 0 additions & 30 deletions INTEGRATION.patch

This file was deleted.

109 changes: 0 additions & 109 deletions INTEGRATION_LAUNCH_RUNTIME.patch

This file was deleted.

30 changes: 0 additions & 30 deletions PR_BODY.md

This file was deleted.

7 changes: 5 additions & 2 deletions app/core_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,10 @@ async def save_scene(request: Request):
scene = body.get("scene") if isinstance(body, dict) else None
if not isinstance(scene, dict):
raise HTTPException(status_code=400, detail="A version 1 scene is required")
folder = core.workspace_dir(body.get("workspace") if isinstance(body, dict) else None)
workspace = body.get("workspace")
if workspace is None:
workspace = core.active_workspace()
folder = core.workspace_dir(workspace)
os.makedirs(folder, exist_ok=True)
import json
import time
Expand All @@ -532,7 +535,7 @@ async def save_scene(request: Request):
Path_write = path
with open(Path_write, "w", encoding="utf-8") as handle:
json.dump(scene, handle)
return {"name": name, "type": "scene", "url": f"/api/v1/file/{name}"}
return {"name": name, "type": "scene", "url": f"/api/v1/file/{name}?workspace={workspace}"}


@api.post("/api/v1/video-editor/probe")
Expand Down
2 changes: 1 addition & 1 deletion app/routers/user_diagnostics.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""HTTP boundary for user-facing install and generation diagnostics.

Importable without the application launcher, CUDA or heavy engines.
Mount with create_user_diagnostics_router() — see ui/src/features/diagnostics/INTEGRATION.patch.
Mount with create_user_diagnostics_router() in either application runtime.
"""
from __future__ import annotations

Expand Down
Loading
Loading