Conversation
…rocedural parity (AK-09, failing first) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tem and procedural adopt it (AK-09 1/2)
Capabilities.mechanism { has, isOn, set, verb? } with transient state in
useInteractive (mechanisms map for single-switch kinds). The action menu's
Play/Stop and the E fallback read it instead of item/procedural-item checks,
so a plugin kind gets both by declaring it. Item and procedural-item declare
it with their existing semantics; their light switch stays as it was.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rgeted in the walkthrough (AK-09, failing first) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nd targeted in the walkthrough (AK-09 2/2) The GLB lists extras.clips for every node that baked clips, not only item and procedural-item, so a plugin kind's loop is discoverable. The baked viewer runs loop clips no other controller owns from the GLB alone: stopped at start, click and E toggle them, the walkthrough prompt says turn on/off. The editor walkthrough targets any kind that declares capabilities.mechanism; procedural parts and catalog item toggles keep their own targets. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
I hit an error while handling your request (Model unavailable on AI Gateway free tier: Free tier users do not have access to this model. Upgrade to paid credits at https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%3Fmodal%3Dtop-up for unrestricted…). Please try again, rephrase, or reach out if it keeps failing. Error id: c54a4136-348e-425c-95ef-04b9260b89f2 |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AK-09 first slice, part 2 of 2. Stacked on #954; it targets
main, so until #954 merges its diff includes #954's commits. This PR's own commits: compare.What and why
A plugin kind's baked loop clip was never listed (
glb-export.tslistedextras.clipsonly for item and procedural-item), so the baked viewer could not play it. The editor walkthrough and the baked viewer only knew item, procedural-item and openables.extras.clips.openableis still set only for an: openclip. In-tree, cabinets, doors and windows bake: open(already listed), and items and procedural items bake loops (already listed). The only newly listed clip is Articraft's<id>: loop, the only otherexportAnimationamong the hosted plugins.bakedLoopMechanismsfinds nodes whose: loopclips no other controller owns, meaning no procedural playback, no scene-graph interactive item and not openable. Those loops start stopped. A click in the zone view and E or a click in the walkthrough toggle them throughuseInteractive.mechanisms, and the prompt reads "turn on/off".proceduralMotionextras and the door, window, item and procedural paths are unchanged.capabilities.mechanismis an E/click target (type: 'mechanism'), and the prompt verb comes from the capability'sverb. Procedural per-part targeting and catalog item toggles run first, as before. They record the nodes they tested (covered), and the generic pass skips those, so no node is targeted twice and item/procedural targeting is unchanged.Visible only once a plugin adopts it. The owner preview ships with the Articraft adoption (AK-ART).
Failing case first
aad1baa2e(tests only) on #954's code:glb-export.test.ts"lists any kind's registry loop clip":extras.clipsis undefined. 0 pass, 1 fail.glb-mechanisms.test.tsandmechanism-targets.test.tsfail: neither module exists.Proof
bun run --cwd packages/viewer test: 392 pass, 0 fail.bun run --cwd packages/editor test: 1120 pass, 0 fail, including all 47 existing export tests (door, window, cabinet, item and procedural clips unchanged) plus the new one.bun run check: no errors.bun run check-types: every package passes.apps/editorfails on the missing local@webxr/plugin, as onmain.bun typecheckagainst rebuilt core, viewer and nodes dists: 12/12.extras.clips.exportAnimation; the extras contract (clips,openable,proceduralMotion) is unchanged and only extended to more kinds. Transient playback in the viewer.R2–R5, R7 and R9 are unaffected.
House effect: no change. /next has no plugin mechanisms, and its bake lists the same clips.
For Wassim (procedural items, #930)
first-person-controls.tsx: the procedural and item loops are untouched apart fromcovered.add(rawId). The new generic loop runs after them and skips covered ids.glb-scene.tsx: procedural playback owns its nodes (proceduralPlayback.entries), so its clips are excluded from the generic loops.🤖 Generated with Claude Code
Note
Medium Risk
Extends GLB extras and viewer interaction paths and centralizes walkthrough/E behavior; changes are transient and scoped, but affect export output for new loop-only plugin clips and shared first-person targeting.
Overview
Introduces
capabilities.mechanismso any node kind (including plugins) can expose moving parts through one transient switch inuseInteractive.mechanisms, withnodeMechanism/toggleNodeMechanismhelpers and no scene or undo writes.Editor: a generic Play/Stop action appears for a single selected node with a mechanism; E runs
runNodeInteraction(kindkeyboardActions.efirst, then mechanism). First-person walkthrough addsmechanismtargets after procedural and catalog-item passes, with HUD verbs from the capability’sverb. Item and procedural-item wireitemMechanism/proceduralMechanism; per-kind Play/Stop is removed from item action contributions (lights only there).Export & baked viewer:
glb-exportlistsextras.clipsfor every node that baked animation, still settingopenableonly when a clip ends with: open.bakedLoopMechanismsdrives unowned: loopclips inglb-scenefromuseInteractive.mechanismson click and E, without changing procedural, interactive-item, or openable paths.Reviewed by Cursor Bugbot for commit 07f5761. Bugbot is set up for automated code reviews on this repo. Configure here.