Fix pre-release defects from the v1.0.30 regression audit#747
Open
brentyi wants to merge 3 commits into
Open
Conversation
Python:
- Initialize _share_tunnel before the atexit registration so a failed
__init__ can't leave the atexit stop() recursing through the
backwards-compat __getattr__ shim at interpreter exit.
- request_share_url now closes and replaces a dead ("failed"/"closed")
tunnel instead of returning None forever; ViserTunnel.close()
tolerates the failed connection's already-closed loop.
- GuiTabGroupHandle.remove() tombstones under _panel_lifecycle_lock
(mirroring PanelHandle.remove) so a racing add_tab can't register an
orphan container for a dead group.
- min/max_orbit_distance setters validate finiteness, positivity, and
min<=max before the no-op short-circuit.
- _colors_to_int_tuple materializes its argument once so generator
inputs can't be half-consumed by the warning pass.
- Async callback dispatch reachable from user threads (on_client_connect
replay, value-setter update callbacks, form submit, pointer-done
cleanups) now uses run_coroutine_threadsafe instead of the
non-thread-safe loop.create_task.
Client:
- App.tsx reads the mobile media query synchronously on first render so
mobile-width loads no longer mount the canvas inside the dock surface
and immediately remount it (throwaway WebGL context + GPU re-upload).
- The mobile bottom-sheet panel list subscribes with value-level
equality, so visible/order/tab-metadata updates propagate.
- InstancedMesh2.dispose() nulls instanceIndex and drops the geometry
attribute so a frame drawn in the dispose->swap window re-initializes
instead of binding a deleted GL buffer.
- The splat sort worker tracks buffer dirtiness so an updateBuffer that
lands during a running sort is re-sorted even with a stationary
camera.
Dock (spec-traced per dock-ux-spec.md):
- All resize surfaces (region resizer, docked dividers, stack divider,
window grips) share the one-gesture slot move-drags already used, so
a second pointer can't start a concurrent gesture (spec 4).
- Hit-testing: vertical tab insertion gets the same proximity bound as
the horizontal bar path so rail merge is reachable (spec 5.3); the
region side band yields across its overhang of a collapsed cell so
one seam yields one drop with no hint hop (D55); sub-8px bottom
split/snap bands are removed rather than shrunk (P11).
- The stack divider's cancel/motionless-press path commits the stored
pinned height instead of the capped rendered height (P2/D56).
- Escape during a region resize restores float positions pushed by
pushFloatsAheadOfSeam, not just widths (spec 4, P2).
Every behavioral fix is pinned by a regression test verified to fail on
the pre-fix code: 5 Python (tunnel recovery, orbit validation, color
coercion, atexit exit, tab-group race) and 11 client assertions across
hit-testing, divider cancel, float restore, splat staleness, and
dispose. Gates: ruff check/format clean, 689 Python tests pass; tsc,
eslint, prettier clean, 630 client tests pass.
The new setter validation rejected non-finite values, which removed the only opt-out from the 1e4 default: infinity is the pre-1.1.0 unbounded behavior and the camera-controls default, and large-scale scenes need it. Accept +inf for the max bound (NaN and <= 0 still raise); the min bound stays strictly finite.
brentyi
force-pushed
the
claude/regressions-v1-0-30-5wehcp
branch
from
July 26, 2026 15:19
37b58d6 to
e922562
Compare
A local npm 10 re-resolve during the gate runs dropped the @emnapi/core and @emnapi/runtime entries that @napi-rs/wasm-runtime references, which npm 11's stricter 'npm ci' sync check rejects. No dependency changes were intended; this restores main's lockfile byte-for-byte.
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.
Generated by Claude Code