forked from 1b-agent/opencadstudio-upstream
WBLOCK, SAVEALL, and web ARCHIVE now serialize through the Web Worker like SAVE/AUTOSAVE: prepare on the main thread, writer pass on the worker, inline fallback on any worker failure. SAVEALL clears each tab's dirty flag under the same unchanged-tab race guard the single save uses; ARCHIVE assembles the ZIP in the completion handler so the transmittal matches the snapshot taken at command time. The review of the previous fix commit found the collision refusal still REPLACED the registry bytes — the exact silent retargeting it was meant to prevent. The refusal now keeps the old registration, the extraction settings picker reports refused picks in the wizard's error slot (previously silent, and the stale collision flag could surface as a wrong-file warning on an unrelated browse), and the xref registry's same-name ambiguity is documented as a browser fundamental (native distinguishes by folder): newest registration wins consistently for resolution, ARCHIVE, and XRELOAD — matching what the drawing displays. Also: the Quit pending-close survives a successful web tab-save (continue the quit instead of dropping it), the last ZIP64 sentinel (central size) is rejected like the other four, and the new behaviors gained regression tests (collision keeps old bytes, registry eviction, including the deadlock fix for the guard-scoping that test exposed).