Skip to content

[33-editor-ui] toolbar order, Interact cell, edit-in-game moves stay, FPS + draw calls - #258

Merged
AlexZ005 merged 3 commits into
feat/1.19from
feat/33-editor-ui
Oct 2, 2026
Merged

AlexZ005 merged 3 commits into
feat/1.19from
feat/33-editor-ui

Conversation

@AlexZ005

@AlexZ005 AlexZ005 commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

Roadmap 33, lane 33-editor-ui — items E1 E2 E3 E4 Q1 of cloud plans/core/lanes/33/user-feedback-2026-10-01b.md.

What changed

  • E1 toolbar order — the default bar is Move, Rotate, Scale, Interact, Play, Object list, Node editor, Explorer, Animation. A stored toolbar that is still a shipped default migrates (keeps where the bar is parked and whether it is collapsed); a customized bar wins as saved and does not gain Animation (Controls.svelte: LEGACY_DEFAULT_ROWS, PROMOTED_DEFAULTS).
  • E2 red border — the Interact <button> took focus on click and wore classActive's focus:ring-4; its ring is now keyboard-only (focus-visible), so a click looks like every other cell.
  • E3 corners by Play — the well's hover halves listened to p:hover; the Interact toggle is a <button>, so they never painted beside it. Now *:hover.
  • E4 Edit in a running game — measured: with a game running then Edit, Towers 10/44, Stars Room 26/49 and the football could not be put anywhere (the gizmo release handed a dynamic body back to the still-running sim with a throw). In Edit, in a game scene, a release now parks the body (physics.js, hold 'edit'); leaving Edit releases every parked body at rest. A plain physics playground keeps the editor throw. VR: scenery (>= 4 m, or around your head) was never grip-holdable; a selected wall/floor is now held in Edit (vrGrip.pickGripTarget), unselected scenery still moves the world, and a one-time headset banner says so.
  • Q1 FPS + draw calls — Settings ▸ Interface ▸ Viewport (and the VR settings panel): fps, frame ms, draw calls, triangles, in any mode. Desktop: the one FpsCounter (the game shell's); VR: vrPerfStrip.js, a head-locked strip. Draw calls amber > 120, red > 150 (fpsMeter.callsTier). XR frames now drive the draw-call sampler (sceneBudget.noteExternalFrame), which froze in a headset because the window rAF stops.

Proof

  • svelte-check 333/47 (baseline held); vitest 385/385 (new fpsMeter, extended vrGrip).
  • e2e, green on this branch: editor-ui-33 (new, 3/3 consecutive runs), edit-move-games (new — the seven Games-tab games, every object moved fresh and with the game running; 38 bodies parked), controls-roster, editor-modes, game-shell, vr-game-panel, vr-grips-by-mode, throw-velocity.
  • Counterfactuals: p:hover restored -> E3.1/E3.2 red; classActive back on the toggle -> E2.1/E2.2 red (a 4 px ring over the neighbour); the pre-park game-running probe is the E4 "before". Logs: /home/deck/.code/lanes-30/after-33/33-editor-ui/.

Not done / owed

  • Waves' walking enemies are positioned by the module as a pure function of time during a wave, so they still snap back in Edit mid-wave — module side, filed for 33-modules (QUESTIONS F5).
  • A non-initiator peer's drag of a dynamic body reaches the initiator as a move (external hold, then physics) — not parked; would need an additive wire field (F4).
  • On a Quest (owed): the perf strip's placement/readability, the select-then-grip feel on walls/floors, the hint banner.

🤖 Generated with Claude Code

AlexZ005 and others added 3 commits October 1, 2026 20:53
…counter, VR select-then-grip (WIP, proofs running)

- E1: default bar = move/rotate/scale, Interact, Play, object list, node editor, Explorer,
  Animation; a stored record that is still a shipped default migrates (keeps posX/collapsed),
  a customized bar wins as saved and does not gain Animation (PROMOTED_DEFAULTS)
- E2: the Interact <button> cell drops classActive's click-focus ring (focus-visible only)
- E3: the play well's hover halves answer `*:hover`, not `p:hover` (the Interact button left
  two pill-coloured corners beside Play)
- Q1: Settings > Interface > Viewport "Show FPS + draw calls" (+ VR settings row): the one
  FpsCounter in any mode, calls amber > 120 / red > 150 (fpsMeter.callsTier); vrPerfStrip.js
  head-locked strip in a headset; sceneBudget.noteExternalFrame so XR frames drive the
  draw-call sampler (the window rAF stops in a session)
- E4 (VR half): a SELECTED scenery object (>= 4 m / around the head) is grip-held in Edit;
  unselected scenery still moves the world; one-time headset hint
- tests: vitest fpsMeter + vrGrip; e2e editor-ui-33 (new), controls-roster + vr-grips-by-mode
  updated — the e2e proofs were still running at this commit (see the lane handover)

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

- physics.js: in EDIT, in a GAME scene (state-bound HUD screen or play.simOnPlay), releaseBody
  PARKS the body (hold 'edit': kinematic at its object pose, skipped by the deviation detector)
  instead of handing it back to the sim with a throw; leaving Edit (Interact or Play) releases
  every parked body at rest. A plain physics playground keeps the P-A editor throw.
  Measured before: Towers 10/44 pieces flung ~47 m, Stars Room 26/49 drifting, the football
  rolling away once a game ran and the editor went back to Edit.
- new suite edit-move-games: the seven games, every object (cap 60) dragged through the gizmo
  events, fresh AND game-running; parked bodies released on leaving Edit; Interact release not
  parked (counterfactual). Waves' walking enemies are module-positioned mid-wave (noted, F5).
- editor-ui-33: E3 corner pixels chosen outside the FAB and sampled un-hovered; Q1 toggle
  pressed as an element click. controls-roster: the walk needs a third press past Interact.

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

- FpsCounter: the detail parts are joined by " · " (svelte trimmed the whitespace:
  "251.2 ms·14 calls")
- editor-ui-33: E2 measures the ring where it is DRAWN (an outer box-shadow over the
  neighbour; layers parsed by colour + size); E3 corner pixels >= 1 px outside the FAB; Q1
  tier reads set+read in one page task on microtasks (the live meter republishes per rAF)
- edit-move-games: an object a flow/module effect animates (Waves' Goal core) is judged by its
  BASE pose (suspendAnimation/read/resumeAnimation), and a fresh-load failure names dx/dy

Counterfactuals (lanes-30/after-33/33-editor-ui/counterfactual*): with `p:hover` restored the
well corners stay pill-grey beside a hovered Interact (E3.1/E3.2 RED); with classActive back on
the toggle a rgb(255,213,204) 4px ring paints the neighbour (E2.1/E2.2 RED). The park: the
game-running probe before c561f24 measured Towers 10/44, Stars Room 26/49, football 1/60 moved
objects not staying (run1/run3.log).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@AlexZ005
AlexZ005 merged commit 4f9f6ca into feat/1.19 Oct 2, 2026
4 checks passed
@AlexZ005
AlexZ005 deleted the feat/33-editor-ui branch October 2, 2026 08:43
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