Repository navigation
feat(tab-drag): expose index and reveal rules over app FFI - #34507
Conversation
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: Shipped in:
|
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
|
Review (codex gpt-6-astra high, router-review): BLOCK at 1dbf47d BLOCK at 1dbf47d Visual verdict: unchanged by this diff
|
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-e4d349ccd5914e5fb6a5
|
Review (claude opus 5.5 medium): SHIP at 98f47e4 Visual verdict: unchanged by this diff. No UI code or Swift consumer calls change. Compared the Rust/C implementation line by line with the production Swift index and reveal rules. The terminal fleet run 41759609604 / checks 126345277544 supplies fmt, Clippy The old-head pin BLOCK is resolved by the documented additive-source publication order in Follow-ups:
Reviewed by a separate Claude Opus 5.5 medium session from immutable base/head diff and source objects. The final source head is unchanged after review. |
|
Found 6 test failures on Blacksmith runners: Failures
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
Moves the pure NEXT tab-drag index conversion and drop-reveal policy into the existing app FFI crate, with no Swift call-site changes. The API accepts caller-owned
UInt32tab ids, preserves Swift clamping and same-pane wire-index rules, and maps everyTabDragOutcomeexplicitly to reveal flags.This is the prerequisite Rust-only step for the later TabDrag consumer shards. Reverting this PR leaves the existing Swift implementation unchanged.
Validation
git diff --checkpassed.98f47e48ba366fbf7baf5021903132d2fe914047: run 41759609604, checks job 126345277544 passedcargo fmt --check, Clippy with-D warnings, and all 84 tests in the standalone FFI crate, including four tab-drag tests. No local build was used.# Safetysections; both are fixed and the same Clippy command is green at this head.Performance
cmux-layout-reducer-ffitest targetNo runtime benchmark is claimed: this step only adds pure decision APIs and preserves the current Swift behavior until its consumer shards land.
Changelog
none
Source-only release order
This prerequisite adds four Rust/C entry points and a direct
CCmuxAppFFItarget dependency. No Swift source imports or calls the new symbols in this PR, so the currently pinned binary continues to build and behave as before.The release sequence is mandated by
docs/ci/app-ffi-release.md: source lands onfeat-cmux-next,.github/workflows/app-ffi-release.ymlpublishes the landed SHA, then its generatedapp-ffi-repinPR updates the URL and real checksum. That workflow runs only atrefs/heads/feat-cmux-nextand its protected release environment accepts only that branch. The source-freshness check is expected to report the intermediate drift. This lane owns the release and generated pin through merge; the two Swift consumer shards wait for that pin.Please evaluate the prior review's pin finding against that documented two-stage publication order; no consumer uses these symbols before the matching binary exists.
🤖 Generated with Codex
Agent session: agent session
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Adds the NEXT tab-drag index conversion and drop-reveal policy to the app FFI crate, with no Swift call-site changes. The API takes caller-owned
UInt32tab ids, keeps Swift clamping and same-pane wire-index rules, and maps everyTabDragOutcometo reveal flags.CmuxNextBridgenow linksCCmuxAppFFIto reach the new entry points. Reverting this change leaves the existing Swift implementation unchanged.Validation
Int64before clamping, and each non-empty array pointer carries an explicit validity contract.Written for commit 98f47e4. Summary will update on new commits.