Skip to content

1.45.1: path waypoints, AI connections, Add flow, HDRI drop toast, local objects in files - #483

Merged
AlexZ005 merged 7 commits into
release/1.45.1from
fix/batch-2
Oct 26, 2026
Merged

AlexZ005 merged 7 commits into
release/1.45.1from
fix/batch-2

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

Patch 1.45.1 (fix-batch-2). Five fixes, one commit each; CHANGELOG 1.45.1 + battery.json (5 new suites).

1. Path patrol capture trap (11388ab7 → rebased). Capture ended only through the card's toggle; after a deselect every viewport click appended an invisible waypoint and the object could not be selected again. Capture now ends on Esc, Done, deselect, a click on the object (selects it), the node-editor pane, Play, or the node going away/muted. A "Placing waypoints" toolbox shows the count, Undo last point and Done; the capturing peer holds the object still. e2e path-capture-trap 19/0 (§2 red on 1.45.0), waypoint-viz 8/0. path-node's "identical patrol on both peers" drift is red on the 1.45.0 candidate too (A/B, 2/2 base runs) — pre-existing flake.

2. AI connections (Settings ▸ AI; providers/client/meshProviders/stt — AiSettings layout untouched apart from one "Will call" line). Base URLs without a scheme or with a pasted /chat/completions tail are normalized; Test connection stages time out at 10 s; the completion probe sends no max_tokens and its reason is shown; unreachable vs CORS vs mixed content are told apart (with the right flag for vLLM / Ollama / LM Studio); 400 API_KEY_INVALID, 403, vLLM tool flags, context length and unknown models get hints, in the assistant too. Unit aiUrl 15/15, e2e ai-connection 14/0 against a mock OpenAI server (no GPU, no real keys).

3. Add flow to Scene graph creates the flow (seeded Flow Input + Flow Output) and embeds it — one undo step, replicated; disabled with "Locked by …" while a peer holds the object. e2e add-flow-scene 14/0 (two peers).

4. HDRI drop toast: an HDRI dropped on the viewport says where it goes, with Open Environment. e2e hdri-drop-toast 6/0.

5. Local objects in files. Measured (two peers + late joiner): edits to an object after it is moved to Local objects still go out by reference and peers drop them — nothing re-appears for anyone, and a late joiner never receives it. Files did carry local objects: .tpscene download, whole-scene JSON/GLTF export, the publish bundle (+ its signature), gallery submit, game export, and the saved selection. They now leave them out with "N local objects were not included — share them …". Save to Library / checkpoints / autosave unchanged (roadmap 80). e2e drafts-leak 18/0.

Gates on the branch: check-ratchet 283 errors (baseline 287), vitest 2857/2857, check:tokens clean, build OK.

The KTX2 fix (#480) is cherry-picked onto release/1.45.1 by the integrator; its CHANGELOG line is already in the 1.45.1 entry.

🤖 Generated with Claude Code

AlexZ005 and others added 7 commits October 26, 2026 20:05
…ts, real reasons (1.45.1)

- ai/url.js normalizeEndpointUrl: no scheme -> https:// (ComfyUI mesh -> http://), "https:/host"
  repaired, pasted /chat/completions (or STT) tails and trailing slashes stripped; used by
  providers/meshProviders/stt/client. AiSettings shows "Will call <address>" under Base URL.
- client.js: Test connection stages time out at 10 s; the completion probe sends no max_tokens and
  its failure reason is shown; diagnoseNetwork tells unreachable from CORS (with the right flag
  for vLLM / Ollama / LM Studio, no vLLM blame for others) and mixed content; serverErrorHint maps
  400 API_KEY_INVALID, 403, vLLM's tool-call flags, context length and unknown models.
- describeAiError(error, config): the assistant shows the same reasons.
- tests: unit aiUrl (15), e2e ai-connection against a mock OpenAI server (no GPU, no real keys).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…1.45.1)

Capture used to end only through the card's own toggle; after a deselect the editor hid the card
and every viewport click appended an invisible waypoint, so the object could not be selected again.

- pathCaptureState (leaf) + pathCapture: start/end with watchers — capture ends on deselect, a
  graph switch, the node going away or being muted, Play, and Esc (not while typing).
- A click on the patrolling object (or its ancestors) ends capture and selects it; a click that
  adds no point (sky) falls through to normal selection.
- "Placing waypoints" toolbox (PathCaptureToolbar: count, Undo last point, Done); the card says
  "Placing… (Esc / Done)" with aria-pressed; a click on the node-editor pane or another node ends it.
- The capturing peer holds the object at its base pose while points are placed (flowRuntime).
- PathWaypoints: resolves the node across graphs, listens on the canvas in capture phase.
- e2e path-capture-trap (§1-§6; §2 red on 1.45.0).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…none (1.45.1)

It used to stop at a toast ("select it in the Flow editor and click Create flow").
flowGraphs.addFlowToSceneGraph creates the object's flow seeded with Flow Input + Flow Output (so
the embed has sockets) and embeds it as ONE undo step, replicated; toast "Flow created and added
to the Scene graph" with an Open flow action. The row is disabled with "Locked by <name>" while
a peer holds the object. e2e add-flow-scene (two peers; §1 red on 1.45.0).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
An HDRI dragged from the Explorer onto the viewport fell into the generic "Audio/text items are
used where they plug in" toast. It now says "An HDRI lights the whole scene as its sky — pick it
in Configure Scene ▸ Environment" with an Open Environment action. e2e hdri-drop-toast.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…enes (1.45.1)

Local objects (moved to Local objects = deleted for peers) were still written into every file:
the .tpscene download, the whole-scene JSON/GLTF export, the publish bundle and its signature,
gallery submit and the game export — plus the payload's workspace selection.

- objectPermissions.liftLocalObjects / withoutLocalObjects: lift every local-only root out of the
  scene tree for the build (children arrays spliced, put back in place, also on a throw; async
  GLTF exports restore with the animation park) and scrub lifted uuids from `workspace`.
- toast "N local objects were not included — share them from the object list to include them."
- moveToLocalObjects extracted from LocalObjects.svelte (the editor drop-to-local path).
- e2e drafts-leak (two peers + a late joiner): later edits to a local object go out by reference
  and peers drop them (nothing re-appears); a late joiner never gets it; §4-§6 the files leave it
  out and the scene keeps it; Share brings it back. Save to Library / checkpoints / autosave keep
  local objects (this machine's copies) — the full design is roadmap 80.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@AlexZ005
AlexZ005 merged commit 85000b4 into release/1.45.1 Oct 26, 2026
8 of 9 checks passed
@AlexZ005
AlexZ005 deleted the fix/batch-2 branch October 26, 2026 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant