Conversation
Replace the Zoom Level select with six always-visible buttons. Keyboard stays local to the row: every level is a Tab stop, Enter/Space activate, and arrows step from the focused button with both ends clamped. Rapid clicks share a small zoom-pane write chain so 3 → 4 → 5 lands in order. Each request has a generation, so late settlement, a region switch, or a failed save can still retry. Fixes getopenscreen#670.
Rebase compatibility for current main: updateZoomClickImpact joined the zoom pane after this PR was authored, as one more one-field whole-document writer. A toggle arriving while a level write is pending rebuilt the pill from the stale pre-level document and dropped the level (fails the new regression test before this change: depth reverts 4 -> 3). It now shares saveZoomPatch with the pane's other one-field writes.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📝 Summary
WalkthroughChanges此变更将缩放深度下拉框替换为六级按钮组,并将缩放面板字段更新改为串行保存。新增组件测试、store 测试和浏览器端端到端测试。 缩放字段串行保存
六级缩放按钮控件
浏览器端缩放交互验证
Suggested reviewers: Priority: ⬇️ Low Change: Feature 🚥 Pre-merge checks | ✅ 3 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0fd408a03c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Disposition of the two Codex findings (verified against rehearsal head P1 — queued zoom writes vs. document replacement (undo / project switch): the hazard is real but inherited verbatim. The original upstream getopenscreen#694 head ( P2 — no deadline on queued zoom saves: Both are recorded as candidate upstream follow-ups for the PR author/owner; per the rebase scope rules (conflict-resolution hunks must serve semantic compatibility only, no "while here" hardening) they are deliberately left unchanged. |
… a stalled save Executable counterexamples against the rehearsal head showed two holes in the zoom-pane write chain, both in scope for getopenscreen#694 since it introduced saveZoomPatch: - A queued zoom patch that only started after an undo (epoch bump) or a project switch (neither loadProject nor createProject supersedes the queue) applied its stale patch to the replacement document, mutating the restored document or the newly loaded project when the region id happened to match. Each request now binds to the project/epoch pair addAsset already samples, and a task that starts after either changed no-ops. - A bridge save that never settles parked the whole zoom queue forever. saveWithDeadline now bounds each queued save; on timeout the write is reported as not-taken (buttons retry) and later zoom writes are refused until the unknown save settles — it may still land, so racing it would recreate the stale overwrite the chain exists to prevent. Regression tests cover: queued write vs. undo replacement, queued write vs. project switch to a project with the same region id, and refuse-until-settles recovery around an unknown save.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a681f8ad54
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Codex follow-up on the unknown-save refusal: the block was one hook-lifetime counter, so a save whose bridge call never settled kept zoom writes refused for the rest of the session — even after an undo bumped the epoch and made that save unable to install anything (saveDocument drops it), which is the only reason the block exists. Track unknown saves by their originating epoch instead: a stuck save blocks only writes into the document generation it was captured against. An undo/redo moves the epoch, the entry goes stale and stops matching; a project switch does not move the epoch, so there the stuck save can still land and the block correctly stays. Settling removes the entry. Regression test: timeout -> undo -> zoom writes work again without the stuck save ever settling, and its late settle is dropped by the epoch guard.
Fork-only rehearsal branch for upstream getopenscreen#694 (
36aedb5, one commit, issue getopenscreen#670), semantically rebased onto upstream/main8a51f517. Do not merge as the upstream PR; do not treat as upstream evidence.Commits
d83f865f— rebased feat(inspector): pick the zoom level from a row of buttons getopenscreen/openscreen#694:ZoomLevelControl(six always-visible zoom-depth buttons) on current main's FloatingInspector;saveZoomPatchsequential zoom-pane chain with main's current type signatures; main's camera presets (fixed + follow-cursor),Rotation3DPresetwidening, and click-impact UI untouched.0fd408a0— rebase adaptation (executable counterexample): main'supdateZoomClickImpactjoined the zoom pane after feat(inspector): pick the zoom level from a row of buttons getopenscreen/openscreen#694 was cut; as a plain writer it rebuilt the pill from the stale pre-level document and dropped the pending level (regression test fails pre-fix: depth reverts 4→3). It now sharessaveZoomPatch.a681f8ad— Codex-review correctness fixes, both reproduced by executable counterexamples against0fd408abefore changing code:loadProject/createProjectsupersede neither) and applied its stale patch to the replacement document — including a newly loaded project containing the same region id. Each request now binds to the project/epoch pairaddAssetalready samples; a task that starts after either changed no-ops. Read-inside-queue is preserved (same-project consecutive zoom writes still run).saveWithDeadline(repo semantics: timeout = unknown, retryable) now bounds each queued save; on timeout the write is reported not-taken and later zoom writes are refused until the unknown save settles — it may still land, so racing it would recreate the stale overwrite the chain exists to prevent. Recovery after settle is tested.Validation (local, Windows)
Scope guarantees
Current-main camera/follow-cursor/click-impact behavior preserved;
Rotation3DPresetnot narrowed; no writers outside the zoom pane chained; no global serialization; unrelated cleanup none.