cx-zloqa: release New Tab split key hold on async refusal

Merged
TE
18d ago
+77-7

When a New Tab split's asynchronous tab creation is refused, the incoming key hold now ends immediately instead of waiting four seconds for its timeout. The split's existing synchronous refusal and move-failure paths remain unchanged.

Changelog

  • Fixed: release the New Tab split key hold when asynchronous tab creation fails.

Verification

  • python3 scripts/verify-local.py --only swift-syntax --swift-changed
  • git diff --check
  • Native visible change: keys typed after a refused New Tab split continue immediately instead of waiting on a stale hold.
  • No practical boundary harness currently injects an asynchronous tab-creation refusal; hosted cmux-next checks provide the compile and behavior gate.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

When a New Tab split's async tab creation is refused or cancelled, the keys typed after the split now go on immediately instead of waiting out the incoming hold's four-second limit. Synchronous refusal and move-failure paths are unchanged.

The fix is applied on the feat-cmux-next base, which restructured both files. A single release path now covers refused, cancelled, and unstarted pages, cancelling the split's sizing and ending the hold for all three. A test drives NewTabPage.split with a creation that fails asynchronously, covering both refusal and cancellation; it fails on the base.