Skip to content

fix: AppKit workspace double-click rename no longer commits instantly - #9496

Closed
XueyanZhang wants to merge 3 commits into
manaflow-ai:mainfrom
XueyanZhang:feat-workspace-doubleclick-rename
Closed

XueyanZhang wants to merge 3 commits into
manaflow-ai:mainfrom
XueyanZhang:feat-workspace-doubleclick-rename

Conversation

@XueyanZhang

@XueyanZhang XueyanZhang commented Aug 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes the workspace double-click inline rename flashing and committing instantly on the AppKit sidebar (regression of #8270 / #8390). Double-clicking a workspace name created the field and it took first responder, but the field editor was torn down ~1 ms later and the untouched title was committed before the user could type.

Closes #9495.

Root cause

SidebarWorkspaceRowTableCellView.beginInlineRename() called window.makeFirstResponder(renameField) (attaches the field editor, begins editing) and then renameField.selectText(nil). The extra selectText(nil) re-enters AppKit's field-editor machinery and synchronously fires controlTextDidEndEditing, which SidebarRowInlineRenameField honors by committing stringValue — the pre-filled, unchanged title.

How the root cause was isolated

A firstResponder probe in controlTextDidEndEditing showed the responder at blur time was still the shared field editor (NSTextView), not the terminal (GhosttyNSView) — so the editing session was being torn down and restarted synchronously inside beginInlineRename, not stolen by async focus reconciliation. The teardown aligned to the single call that followed makeFirstResponder in the same stack frame: selectText(nil). Removing it (an editable NSTextField already selects all on becoming first responder) eliminated the spurious commit.

Debug timeline before / after:

# before (every double-click, 100% reproducible)
sidebar.table.doubleClick row=1
sidebar.row.beginInlineRename tookFocus=1
sidebar.row.rename.endEditing isHidden=false   ← +1 ms, spurious commit
workspace.customTitle.write title=<unchanged>

# after
sidebar.row.beginInlineRename tookFocus=1
sidebar.row.rename.beginEditing                  ← field editor attaches, stays
( … user types … )
workspace.customTitle.write title=<new>          ← commit only on Enter
sidebar.row.rename.endEditing isHidden=true      ← guarded, no double-commit

Changes

  • Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
    • beginInlineRename(): removed the redundant selectText(nil) after makeFirstResponder (the fix). Also lay out before attaching the field editor so the field's frame is stable.
    • SidebarRowInlineRenameField.controlTextDidBeginEditing: make the shared field editor's background transparent so the white selected-row text is visible (was white-on-white once editing stuck).
  • cmuxTests/SidebarAppKitRowCellTests.swift: regression test beginInlineRenameLeavesFieldEditingWithoutCommittingPrefilledTitle — hosts the cell in a real NSWindow (so the field editor attaches), calls beginInlineRename(), and asserts commitRename is not invoked. Fails on the buggy path (selectText → spurious commit), passes with the fix.

Test plan

  • cmux-unit -only-testing:cmuxTests/SidebarAppKitRowCellTests/beginInlineRenameLeavesFieldEditingWithoutCommittingPrefilledTitle (green with the fix)
  • Manual dogfood on a tagged Debug build: double-click workspace name → inline field appears, caret visible, type + Enter commits, Esc cancels.
  • CI: PR is structured as two commits — (1) failing test only, (2) the fix — so the Commits tab shows the test genuinely fails without the fix.

Notes

  • No user-facing strings changed; localization audit: N/A.
  • The SwiftUI sidebar path is unaffected (uses a SwiftUI TextField), so no change there.

/cc @lawrencecchen


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


Summary by cubic

Fixes the AppKit sidebar double-click rename so it no longer commits instantly or flashes; the field stays editable and commits only when expected. Closes #9495.

  • Bug Fixes
    • Laid out before attaching the field editor and removed the redundant selectText(nil) after makeFirstResponder to prevent a synchronous end-edit and spurious commit.
    • Made the shared field editor transparent during rename and restored its prior styling to avoid leaks; the regression test now hosts the cell in a real window, asserts the editor attaches, and no prefilled title is committed; scoped the focus debug log to #if DEBUG.

Written for commit b8fd6cd. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Bug Fixes
    • Improved inline workspace renaming so the rename field is immediately editable and remains visible over selected rows.
    • Prevented unchanged names from being committed prematurely when renaming begins.
    • Preserved the rename field’s normal styling after editing ends.
  • Tests
    • Added regression coverage for field-editor attachment, title editing, and rename commit behavior.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Inline rename now lays out the field before focus, removes redundant selection, manages shared field-editor styling, and adds regression coverage for synchronous commit behavior.

Changes

Inline rename behavior

Layer / File(s) Summary
Inline rename focus and editor rendering
Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
The rename field is laid out before it becomes first responder. The shared field editor styling is cleared during editing and restored before commit.
Rename callback wiring and regression test
cmuxTests/SidebarAppKitRowCellTests.swift
Test factories forward the rename commit callback. A regression test verifies that beginning rename does not synchronously commit the unchanged title.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

  • manaflow-ai/cmux-dev-artifacts#9062 — Concerns the same sidebar inline-rename test file and test behavior.

Possibly related PRs

Suggested reviewers: austinywang, azooz2003-bit

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed The production diff only changes UI methods and private state in existing @MainActor NSTableCellView/NSTextField types; it adds no models, protocols, Sendable references, or background access.
Cmux Swift Blocking Runtime ✅ Passed The production diff adds no semaphores, waits, sleeps, delayed dispatch, polling, main-queue sync, or manual locks; it only changes AppKit layout/focus and field-editor styling.
Cmux Browser Automation Off-Main ✅ Passed The PR changes only SidebarWorkspaceRowCellView.swift and SidebarAppKitRowCellTests.swift; no browser socket command, worker routing, WebKit wait, or policy test changes are present.
Cmux Expensive Synchronous Load ✅ Passed The production diff only changes AppKit rename layout, first-responder handling, and field-editor styling; it adds no agent-history loader, file/JSON parse, directory scan, or synchronous load on a...
Cmux Cache Substitution Correctness ✅ Passed The full PR diff changes only AppKit rename focus and field-editor styling; it does not replace any authoritative persistence/history/undo/snapshot read with a cache.
Cmux No Hacky Sleeps ✅ Passed Both changed files are Swift, explicitly outside this rule's scope; the diff adds no sleeps or timers, and the existing test Task.sleep is unchanged.
Cmux Algorithmic Complexity ✅ Passed The production diff adds no scalable-collection loop, sort, filter, join, or batch rescan; the forced row layout uses existing linear row-local work, and test-only collection changes are exempt.
Cmux Swift Concurrency ✅ Passed The PR adds no DispatchQueue, Task, Combine, completion-handler, or fire-and-forget async pattern; changes are synchronous AppKit field-editor code and XCTest callback plumbing.
Cmux Swift @Concurrent ✅ Passed The PR changes only synchronous AppKit UI code and test plumbing. No changed lines add async, nonisolated, @concurrent, or actor-isolation annotations; the existing work is intentionally @MainActor...
Cmux Swift Package Boundaries ✅ Passed The production diff only adjusts an AppKit NSTextField/table-cell rename interaction in Sources/Sidebar; the added test is test code, matching the rule's allowed small UI/AppKit glue.
Cmux Swiftpm Lockfiles ✅ Passed The two-commit PR diff changes only the sidebar Swift source and its tests; it changes no Package.swift, Package.resolved, .gitignore, workflow, or Xcode project package references.
Cmux Swift Logging ✅ Passed The PR adds no forbidden logging. The existing cmuxDebugLog remains guarded by #if DEBUG, which the rule explicitly allows.
Cmux User-Facing Error Privacy ✅ Passed The production diff adds no user-facing error, alert, command output, or recovery copy; it changes rename focus/styling and adds only a DEBUG-only boolean/window log. Tests and comments are allowed.
Cmux Full Internationalization ✅ Passed The PR changes only AppKit logic, developer comments, a DEBUG log, and tests; it adds no user-facing text or localization/catalog entries.
Cmux Swiftui State Layout ✅ Passed The PR changes only an AppKit NSTableCellView, NSTextField delegate, and tests; it adds no SwiftUI state, GeometryReader, lazy-row store reference, or render-time mutation.
Cmux Architecture Rethink ✅ Passed The diff is a local AppKit lifecycle fix: it lays out before makeFirstResponder, removes selectText, and uses a documented field-editor callback; no timing, polling, locks, side channels, or duplic...
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The PR changes inline rename logic and adds only a test-fixture NSWindow; it adds no standalone user-visible window, identifier, or close-shortcut routing.
Cmux Source Artifacts ✅ Passed The diff changes only two tracked Swift source/test files. Both contain intentional hand-written code, with no artifact-like paths, generated files, binaries, logs, or scratch directories.
Cmux No Test Or Debug Seam In Production Source ✅ Passed The production diff only fixes rename focus/layout, restores field-editor styling, and scopes a real DEBUG log; test observation and commit callbacks remain in cmuxTests.
Cmux No Ambient Global State ✅ Passed The production diff adds only private instance state and a private instance method to existing @MainActor SidebarRowInlineRenameField; it adds no top-level API, global mutable state, static namespa...
Title check ✅ Passed The title clearly and concisely identifies the AppKit workspace double-click rename bug and its immediate-commit fix.
Description check ✅ Passed The description clearly covers the cause, implementation, regression test, and manual validation, but omits the template checklist and demo video.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmuxTests/SidebarAppKitRowCellTests.swift`:
- Around line 873-906: The beginInlineRename regression test should also verify
that editing actually starts, not only that no commit occurred. After calling
cell.beginInlineRename(), assert that window.firstResponder is cell.renameField,
using the existing cell.renameField symbol.

In `@Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift`:
- Around line 1393-1402: Update controlTextDidBeginEditing(_:) to capture the
shared NSTextView editor’s prior drawsBackground and backgroundColor values
before changing them, then restore those values in the early-return path of
controlTextDidEndEditing(_:). Keep the existing editing behavior while ensuring
later controls do not inherit the transparent editor styling.
- Around line 1014-1017: Update the inline rename focus handling near the
sidebar row rename flow so the `tookFocus` binding exists only under `#if
DEBUG`; in non-debug builds, discard the
`window?.makeFirstResponder(renameField)` result while preserving the existing
debug log behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 998397d7-3d17-40d8-a61b-d23234573ad8

📥 Commits

Reviewing files that changed from the base of the PR and between 97f4a5d and 02e1a6a.

📒 Files selected for processing (2)
  • Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
  • cmuxTests/SidebarAppKitRowCellTests.swift

Comment thread cmuxTests/SidebarAppKitRowCellTests.swift
Comment thread Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift Outdated
Comment thread Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
@cursor

cursor Bot commented Aug 4, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
cmuxTests/SidebarAppKitRowCellTests.swift (1)

873-910: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Make the regression test verify the commit callback.

The test only checks that committedTitles is empty before user input. If makeActions or configuredCell stops forwarding commitRename, the list remains empty and the test still passes even when editing commits. Add a positive Return/commit assertion that expects exactly one committed title. Keep the existing pre-commit assertion.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmuxTests/SidebarAppKitRowCellTests.swift` around lines 873 - 910, Update
beginInlineRenameLeavesFieldEditingWithoutCommittingPrefilledTitle to simulate
the user completing the rename through the field editor’s Return/commit action,
then assert committedTitles contains exactly one expected title. Preserve the
existing assertion that committedTitles is empty immediately after
cell.beginInlineRename, and use the existing configuredCell commitRename
callback to verify forwarding.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift`:
- Around line 1396-1400: Update controlTextDidEndEditing(_:) to extract the
ending NSFieldEditor from obj.userInfo and pass it to
restoreFieldEditorStyling(_:) before clearing saved styling, rather than
resolving window?.firstResponder. Also clear the saved field-editor styling in
the onCancel path of endInlineRename(commit:), since cancellation can return
without invoking the end-editing notification.

---

Outside diff comments:
In `@cmuxTests/SidebarAppKitRowCellTests.swift`:
- Around line 873-910: Update
beginInlineRenameLeavesFieldEditingWithoutCommittingPrefilledTitle to simulate
the user completing the rename through the field editor’s Return/commit action,
then assert committedTitles contains exactly one expected title. Preserve the
existing assertion that committedTitles is empty immediately after
cell.beginInlineRename, and use the existing configuredCell commitRename
callback to verify forwarding.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a8b4ebba-0dfa-4033-b1db-32a006a53cfc

📥 Commits

Reviewing files that changed from the base of the PR and between 02e1a6a and 9032625.

📒 Files selected for processing (2)
  • Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
  • cmuxTests/SidebarAppKitRowCellTests.swift

Comment on lines +1396 to 1400
// Restore the shared field editor's prior styling before committing,
// so the transparent background set in controlTextDidBeginEditing
// does not leak to the next control edited in this window.
restoreFieldEditorStyling()
guard !isHidden else { return }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
rg -n -C 12 'func endInlineRename|abortEditing|endEditing\(for:' \
  Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift || true

Repository: manaflow-ai/cmux

Length of output: 1405


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Map and inspect the relevant sections of the row cell view.
wc -l Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
sed -n '960,1045p' Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
sed -n '1280,1435p' Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift

# Locate the styling fields and delegate methods.
rg -n 'savedEditorDrawsBackground|savedEditorBackgroundColor|controlTextDidEndEditing|restoreFieldEditorStyling|controlTextDidBegin|textDidChange' Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift

Repository: manaflow-ai/cmux

Length of output: 11430


🌐 Web query:

Apple Docs NSControlTextEditingDelegate controlTextDidEndEditing notification NSFieldEditor userInfo

💡 Result:

The controlTextDidEndEditing(:) method is part of the NSControlTextEditingDelegate protocol in AppKit [1]. When a control, such as an NSTextField, finishes an editing session, it posts an NSControl.textDidEndEditingNotification [2]. When a delegate implements the controlTextDidEndEditing(:) method, it receives this Notification object as its argument [2][3]. The Notification object provides access to the field editor through its userInfo dictionary [2][3]. To retrieve the field editor, you use the key "NSFieldEditor" [2][3]. For example, in Swift, you can access it as follows: if let fieldEditor = notification.userInfo?["NSFieldEditor"] as? NSTextView { // Access the field editor here } It is important to note that the notification's object is the NSControl that posted the notification [2][4]. Additionally, if you programmatically call abortEditing to discard pending changes, the control will not invoke controlTextDidEndEditing(_:) [3].

Citations:


Restore styling from the end-editing notification.

restoreFieldEditorStyling() currently reads window?.firstResponder, which may not be the field editor that ended editing. Use the NSFieldEditor value from obj.userInfo at controlTextDidEndEditing(_:) and pass that to the restore helper before clearing the saved styles.

endInlineRename(commit: false) returns from onCancel without calling the end-editing path, so clear the saved styling there too. abortEditing() can be called instead of controlTextDidEndEditing(_:), but this cancel handler just calls endInlineRename.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift` around
lines 1396 - 1400, Update controlTextDidEndEditing(_:) to extract the ending
NSFieldEditor from obj.userInfo and pass it to restoreFieldEditorStyling(_:)
before clearing saved styling, rather than resolving window?.firstResponder.
Also clear the saved field-editor styling in the onCancel path of
endInlineRename(commit:), since cancellation can return without invoking the
end-editing notification.

Source: Path instructions

…ting instantly

Adds beginInlineRenameLeavesFieldEditingWithoutCommittingPrefilledTitle to
SidebarAppKitRowCellTests. Hosts the workspace row cell in a real NSWindow
(so the shared field editor attaches), calls beginInlineRename(), and
asserts commitRename is NOT invoked. On the buggy path the redundant
selectText(nil) after makeFirstResponder re-enters the field editor and
synchronously fires controlTextDidEndEditing, committing the pre-filled
title, so this test fails.
SidebarWorkspaceRowTableCellView.beginInlineRename() called makeFirstResponder
then selectText(nil); the extra selectText(nil) re-entered the field-editor
machinery and synchronously fired controlTextDidEndEditing, which committed
the untouched title before the user could type (field flashed and vanished).

- Remove the redundant selectText(nil) (an editable NSTextField already
  enters editing with all text selected when made first responder). Also
  lay out before attaching the field editor so its frame is stable.
- Make the shared field editor's background transparent in
  controlTextDidBeginEditing so the white selected-row text stays visible.

Closes manaflow-ai#9495.
…scope debug log

- Test: also assert the field editor attached (renameField.currentEditor()
  != nil), so the regression covers 'editing actually started', not only
  'no spurious commit'.
- controlTextDidBeginEditing now saves the shared field editor's prior
  drawsBackground/backgroundColor and restores them in
  controlTextDidEndEditing, so the transparent styling does not leak to
  later controls in the window.
- Scope the tookFocus binding and its debug log to #if DEBUG; in release,
  discard the makeFirstResponder result (avoids an unused-variable warning).
@XueyanZhang
XueyanZhang force-pushed the feat-workspace-doubleclick-rename branch from 9032625 to b8fd6cd Compare August 6, 2026 18:14
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@XueyanZhang

Copy link
Copy Markdown
Contributor Author

Rebased onto latest main (resolved the SidebarAppKitRowCellTests helper conflict with upstream's onOpenWorkspaceDescriptionURL addition). Ready for review — @lawrencecchen could you take a look?

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift`:
- Around line 1020-1021: Replace the cmuxDebugLog call in the inline-rename flow
of SidebarWorkspaceRowCellView with the canonical dlog logger, keeping it inside
the existing `#if` DEBUG block and preserving the current diagnostic message and
values.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9864f284-85ef-418e-bda2-c79f1c1396b3

📥 Commits

Reviewing files that changed from the base of the PR and between 95ef75b and b8fd6cd.

📒 Files selected for processing (2)
  • Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift
  • cmuxTests/SidebarAppKitRowCellTests.swift

Comment on lines +1020 to 1021
let tookFocus = window?.makeFirstResponder(renameField) ?? false
cmuxDebugLog("sidebar.row.beginInlineRename tookFocus=\(tookFocus ? 1 : 0) window=\(window == nil ? 0 : 1)")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use dlog for this Sidebar diagnostic.

Line 1021 adds cmuxDebugLog in Sources/Sidebar. Replace it with dlog inside the existing #if DEBUG block.

Based on learnings: Sidebar Swift files that can access Bonsplit must use its canonical dlog logger.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Sources/Sidebar/AppKitList/Cells/SidebarWorkspaceRowCellView.swift` around
lines 1020 - 1021, Replace the cmuxDebugLog call in the inline-rename flow of
SidebarWorkspaceRowCellView with the canonical dlog logger, keeping it inside
the existing `#if` DEBUG block and preserving the current diagnostic message and
values.

Source: Learnings

@teamleaderleo teamleaderleo added area: sidebar The workspace sidebar: list, groups, status, reordering S3: minor Wrong behavior with a workaround ready-to-land Reviewed and ready to land when CI is green labels Sep 30, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator

This is ready for a maintainer land once the CLA is recorded. Please comment: I have read the CLA Document v2.2 and I hereby sign the CLA :)

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@teamleaderleo

Copy link
Copy Markdown
Collaborator

Main now ships the inline rename session and field-editor lifecycle fix in #14986, which supersedes this implementation. Closing this PR :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: sidebar The workspace sidebar: list, groups, status, reordering ready-to-land Reviewed and ready to land when CI is green S3: minor Wrong behavior with a workaround

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Workspace double-click inline rename flashes and commits instantly on the AppKit sidebar

2 participants