Sidebar toggle: laggy and left pane content offset after open/close/open #29
Open
opened 2026-09-15 12:30:57 +00:00 by kayg
·
9 comments
No Branch/Tag specified
dev
wave19/desktop-test
wave19/per-space-state
wave19/first-space-integration
wave19/first-space-draft-transfer
wave19/block-editor-craft
codex/wip/root-conflict-snapshot-20260914
wave12/first-space-draft-transfer
wave14/editor-overnight-combined
wave17/editor-diagnostics-3bbb
wave16/code-block-polish
wave16/image-controls
wave16/event-title-crash-control
wave16/image-preview-dispatch-repair
wave16/event-title-lifecycle-qa
wave16/editor-list-refinements
wave17/editor-layout-correction
wave16/event-edit-date
wave16/note-title-presentation
wave16/editor-final-combined
wave18/document-chrome-repair
wave17/cross-event-drop
wave16/editor-structural-combined
wave16/editor-hover-margins
wave16/editor-caret-relocation-perf
wave16/inspector-polish
wave16/image-preview-integration
wave16/english-transcription
wave16/document-background-edge
wave16/sidebar-live-layout
wave15/image-preview-ownership-repair
wave15/editor-handle-six-dot
wave15/titlebar-public-repair
wave15/sidebar-initial-restoration
wave15/editor-formatting-tooltips
wave15/editor-drag-mounted-repair
wave15/image-preview-foundation-isolated
wave15/editor-block-drag-feedback
wave15/sidebar-attachment-layout
wave14/editor-inline-plain-fastpath
wave14/editor-rendered-paste-replacement
wave14/clipboard-awaited-shutdown
wave14/editor-selectall-toolbar-perf
fix/clipboard-body-undo-group
diagnostic/clipboard-insertion-491
wave14/sidebar-unselected-drag-v2
diagnostic/sidebar-unselected-drag-trace
diagnostic/clipboard-phase-0225
wave14/sidebar-prime-access
wave14/nested-projection-handle-test-fix
wave14/sidebar-unselected-event-drag
fix/clipboard-task-ownership-6318
fix/editor-resource-url-invalidation
codex/wip/editor-handle-render-diagnostic-20260914
fix/central9c9-clipboard-crash
codex/wip/editor-handle-diagnostic-20260914
wave14/sidebar-event-runtime-repair
wave14/nested-projection-runtime-fix
wave14/sidebar-event-test-fixtures
wave14/sidebar-attachment-overlap
integration/rendered-image-clipboard
wave14/sidebar-event-preview-integration
wave14/editor-nested-list-integrate
wave14/editor-nested-list-projection
task/rendered-image-clipboard
wave14/sidebar-paste-preview-integration
wave14/sidebar-event-day-dnd
wave14/editor-preview-next
wave14/editor-list-handle-integrated
task/native-basic-paste
wave14/editor-list-keyboard-audit
task/native-clipboard-contract
codex/wip/editor-handle-geometry-20260914
wave14/editor-block-drag
wave14/editor-drag-integrated
wave14/editor-empty-marker-map-publication
wave14/editor-empty-marker-runtime-diag
wave14/editor-empty-marker-preview
wave14/editor-empty-marker-host-repro
wave14/editor-empty-marker-probe
codex/wip/editor-hr-leaf-fix-20260914
wave14/event-attachment-drop
wave14/editor-empty-marker-paint
wave14/editor-drop-list-preview
wave14/editor-finder-drop
wave14/editor-rule-caret
wave14/editor-list-enter-next
wave14/editor-image-qa
wave14/editor-mode-commands
wave13/editor-code-performance-preview
wave14/sidebar-overlap-repair
wave13/cross-day-compile-repair
wave13/spotlight-retry
wave13/editor-chrome-runtime-repair
wave13/editor-inline-fast-path
codex/wip/detached-87aa-20260914
wave12/editor-viewport-polish
wave12/craft-code-block-polish
wave12/editor-asset-return-preview
wave12/voice-polish-preview
wave12/editor-native-return-runtime-repair
wave12/editor-asset-focus
wave12/cross-day-reviewed-integration
wave12/optional-voice-provider-finish
wave12/event-move-descriptor-compile-fix
wave12/editor-image-geometry-preview
wave12/editor-native-return-undo-repair
wave12/image-native-geometry-fixture
wave12/editor-pattern-preview
wave12/editor-bullet-continuation
wave12/editor-top-chrome
wave12/voice-composer-restart
wave12/speech-variable-buffer-repair
wave12/editor-image-preview
wave12/event-move-descriptor-scale
wave12/editor-image-geometry
wave12/afternoon-ui-preview
wave12/sidebar-hosted-bounds-repair
wave12/sidebar-overlap-live
wave12/speech-e2e-verification
wave12/mentions-polish-finish
wave12/editor-structural-range-repair
wave12/sidebar-fade-desktop-preview
wave12/sidebar-design-ledger
wave12/voice-assets-physical-fixtures
wave12/native-event-marker-polish
wave12/sidebar-fade-undo-preview
wave12/event-move-fence-corrections
wave12/sidebar-fade-boundary-repair
wave12/parent-space-entry-integration
wave12/editor-undo-group-repair
wave12/native-event-row-performance
wave12/parent-swipe-integration
wave12/metadata-noteid-test-fix
wave12/space-composer-generation-fix
wave12/voice-lifecycle-clock-fixture
wave12/sidebar-child-binding
wave12/voice-provider-pool-preview
wave12/composer-recording-preview
wave12/event-cross-day-store-corrections
wave12/voice-async-test-locks
wave12/speech-buffer-lease-fix
wave12/composer-no-top-readouts
wave12/sidebar-child-target
wave12/space-required-composer
wave12/editor-correctness-preview
wave12/voice-provider-compile-corrected
wave12/event-move-integration
wave12/voice-assets-compile-fix
wave12/parakeet-compile-fix
wave12/note-metadata-flexibility
wave12/sidebar-event-drag-drop
wave12/editor-paste-source-guard
wave12/note-asset-import-safety-causal-tests
wave12/note-asset-import-safety
wave12/editor-readonly-command-guards
wave12/voice-provider-integration
wave12/editor-format-flexibility
wave12/hosted-sidebar-ui-sdk-fix
wave12/event-cross-day-store
wave12/voice-app-wiring
wave12/voice-parakeet-assets
wave12/voice-hosted-await-fix
wave12/event-edit-date-guard
wave12/event-cross-day-app
wave12/network-client-entitlement
wave12/sidebar-row-overlap
wave12/voice-settings-surface
wave12/parakeet-capture-adapter
wave12/task-marker-normalization
wave12/voice-polish-integration
wave12/voice-capture-hardening
wave12/voice-provider-settings-plan
wave12/copied-space-editor-io
wave12/hosted-background-sendability
wave12/voice-stop-nlp
wave12/voice-fixture-roots
wave12/voice-claim-collision
wave12/sidebar-add-swipe-plan
wave12/copied-space-app-wiring-plan
wave12/voice-fence-stat-compilefix
wave12/composer-dismiss-crash-hotfix
wave12/voice-retainer-defer-fix
wave12/overnight-recovery-space-preview
wave12/background-checkpoint-compilefix
wave12/copied-space-enumeration-fix
wave12/copied-space-local-state
wave12/voice-fence-fixture-fix
wave12/voice-manifest-fd-fix
wave12/voice-recovery-publication-proof
wave12/voice-retainer-bytecount-fix
wave12/overnight-navigation-background-compilefix
wave12/navigation-work-diagnostic
wave12/overnight-navigation-background-preview
wave12/background-import-bounds
wave12/overnight-voice-lifecycle-preview
wave12/voice-frozen-claim
wave12/voice-input-seam
wave12/voice-recovery-compile-fix
wave12/voice-terminal-cleanup-plan
wave12/voice-recovery-activation-plan-current
wave12/overnight-runtime-probe-preview
wave12/overnight-sandbox-startup-preview
wave12/startup-geometry-diagnostic
wave12/voice-source-sandbox-fix
wave12/image-root-sandbox-fix
wave12/perf-scroll-zero-args
wave12/overnight-document-geometry-preview
wave12/native-document-geometry-diagnostic
wave12/overnight-draft-root-preview
wave12/voice-recovery-c-session-fence
wave12/draft-root-direct-open
wave12/hosted-single-module-linkage
wave12/overnight-voice-recovery-preview
wave12/voice-recovery-checkpoint-a-finalization
wave12/copied-space-local-state-plan
wave12/overnight-refresh-hosted-preview
wave12/incremental-refresh-bounded-load
wave12/raw-source-reconciliation-test-fix
wave12/overnight-rendering-startup-preview
wave12/draft-root-diagnostic
wave12/day-event-bulk-load
wave12/speech-asset-install-test-preview
wave12/hr-material-contrast
wave12/height-clamp-followup
wave12/voice-recovery-checkpoint-a-corrections
wave12/overnight-cstore-caret-preview
wave12/voice-recovery-checkpoint-a
wave12/editor-adjacent-caret-boundary-v3
wave12/voice-recovery-index-query-fix
wave12/editor-adjacent-caret-boundary-v2
wave12/voice-recovery-index-query
wave12/startup-collector-empty-args
wave12/editor-adjacent-caret-boundary
wave12/overnight-hr-storage-preview
wave12/hr-native-diagnostic-followup
wave12/hr-native-diagnostic
wave12/overnight-storage-settings-preview
wave12/snapshot-native-move-followup
wave12/speech-local-fallback
wave12/settings-stream-test-compilefix
wave12/snapshot-path-identity-followup
wave12/corefrontmatter-join-fastpath
wave12/speech-fallback-plan
wave12/overnight-caret-control-registry
wave12/editor-registry-compilefix
wave12/voicea-test-compilefix
wave12/overnight-caret-control-ready
wave12/voicea-enum-compilefix
wave12/voice-recovery-phaseb
wave12/overnight-caret-control
wave12/overnight-polish-storage-preview
wave12/voicea-foundation-compilefix
wave12/snapshot-path-identity
wave12/overnight-native-polish-preview
wave12/hr-rule-geometry
wave12/speech-conversion-fixture
wave12/editor-deferred-caret
wave12/overnight-hosted-lifetime-preview
wave12/marker-glyph-clipping
wave12/voice-recovery-activation
wave12/overnight-package-fixture-preview
wave12/overnight-lifetime-voice-preview
wave12/app-tests-cleanup
wave12/snapshot-physical-fixtures
wave12/event-date-title-punctuation
wave12/overnight-lifetime-voice-plan
wave12/overnight-draw-before
wave12/overnight-picker-event-preview
wave12/settings-watcher
wave12/event-date-title-fix
wave12/note-background-picker-fix
wave12/editor-lifetime
wave12/overnight-draw-preview
wave12/snapshot-attribute-compile-fix
wave12/editor-accepted-draw-trace
wave12/overnight-runtime-preview
wave12/composer-test-concurrency-fix
wave12/editor-caret-performance
wave12/overnight-snapshot-correction
wave12/settings-model-callbacks
wave12/overnight-full-preview
wave12/overnight-store-preview
wave12/rendered-bullet-fix
wave12/settings-document-fixture-fix
wave12/composer-task-pill-ui
wave12/overnight-roadmap-preview
wave12/task-tag-readouts
wave12/event-snapshot-dependency
wave12/h1-strict-preview
wave12/settings-store-await-fix
wave12/settings-store-test-fix
wave12/overnight-pill-preview
wave12/composer-pill-accent-fix
wave12/composer-pill-final
wave11/sidebar-cold-index-prime
wave12/overnight-preview
wave11/voice-draft-recovery
wave11/voice-transcription-finish
wave11/note-save-rename
wave11/task-event-preview
wave11/settings-enabled-plugin-section
wave11/pill-fade-preview
wave11/sidebar-top-fade-regression
wave11/event-sidebar-preview
wave11/composer-pill-restore
wave11/settings-plugins-portability
wave11/composer-hash-semantics
wave11/event-composer-edit
wave11/sidebar-spacing-followup
wave11/editor-performance-evidence
wave11/voice-preview
wave11/voice-stop-repair
wave11/polish-verification
wave11/plugins-settings-ui
wave11/bullet-list-regression
wave11/sidebar-insert-stability
wave11/polish-preview
wave11/document-style-repair
wave11/composer-native-readouts
wave11/mentions-disclosure-motion
wave11/sidebar-swipe-compact
wave11/legacy-helper-path-fix
wave11/persistence-integration
wave11/capsule-instant-presentation
wave11/native-link-activation
wave11/desktop-integration
wave11/link-integration
wave11/synthetic-note-names
wave11/composer-overflow-actions
wave11/legacy-root-links
wave11/note-title-punctuation
wave11/note-title-metadata
wave11/spotlight-navigation
wave11/spotlight-trace-baseline
wave11/note-name-collisions
wave11/identity-query-indexes
wave11/note-heading-title
wave11/capsule-scroll-chrome
wave11/sidebar-context-menu
wave11/spotlight-metadata
wave11/rename-link-repair
wave11/analytics-native
wave11/sidebar-scroll-restoration
wave11/sidebar-bottom-spacing
wave11/capsule-optical-alignment
wave11/markdown-link-resolution
wave11/command-results-layout
wave11/capsule-outside-dismissal
wave11/events-folder
wave11/capsule-query-retention
wave11/capsule-snap-preview
wave11/composer-controls-preview
wave11/sidebar-fade-preview
wave11/selection-lookup
wave11/note-creation-routing
wave11/sidebar-header-spacing
wave11/block-editor
wave11/space-onboarding
wave11/space-terminology
wave4/voice
wave2/search
wave4/glur-probe
wave7/cli-integration
wave12/inspector-style
wave4/document-presentation
wave2/cli
wave2/sidebar
No results found.
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/calternal-macos#29
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Report (user, 2026-09-15, desktop build
5b72a45)Acceptance
Round-2 findings (user, 2026-09-15): (1) the clip is reproducible by narrowing the WINDOW with the sidebar open — the sidebar content keeps a fixed width and is centred in the narrower pane, clipping both edges; fix = content width follows the pane, window min width = sidebar min + content min, per-Space width memory for both sidebars (settings.json). (2) Toggle lag on both sidebars: profile on Release first (10 toggles under sample), then fix what the trace shows.
Finding (Main, VM sample during 10 sidebar toggles, Debug
a2788dc, /tmp/vm/toggle-sample-a2788dc.txt on the VM)Worker SidebarShell (branch wave19/sidebar-narrow): implemented native NavigationSplitView sidebar toggle path, removed per-frame NSSplitView display-link divider animation, added native tracking separator, pane width persistence in portable settings (sidebar 180...500, inspector 220...500), width-aware sidebar table/header layout, and focused persistence/projection tests. Commits:
d0c4b7e(build-mbp evidence exclusion), 1754588 (feature). Verification: git diff --check passed; app build deferred to shared queue (EditorClickImage → TabsShell → BlockDrop → SidebarShell). Hosted App tests remain unreliable per project notes; no VM evidence captured by this worker.Follow-up: package build passed on agents@mbp with warnings only; focused PortableSettingsStoreTests/testLayoutWidthsPersistAsIndependentPortableLeaves passed (1 executed, 0 failures). Corrected AppKit compile issue (NSTableView has no minSize/maxSize), amended feature commit to
466a1b1, then app build passed: BUILT_APP=/Users/agents/Developer/Worktrees/sidebar-narrow/App/build/Build/Products/Debug/Calternal.app. PortableSettingsRuntimeCoordinator filter was not in the Swift package target (0 tests matched; not counted as pass). VM checker attempted after taking sidebar-narrow lease, but vmfast became unreachable (SSH exit 255 / No route to host), so no CUA PASS lines/screenshots; lease release also could not connect.Worker: ShellFinish
Worktree/branch: /home/kayg/Developer/calternal-apple/.worktrees/sidebar-narrow (wave*/sidebar-narrow)
State: VM gate queued second behind EditorFinish. Added the required real-window resize assertion to Scripts/vm/sidebar_toggle_check.py in commit
554d5ac: drag the open-sidebar right edge near 1917 px to 1250 px and back; compare header/day/row leading-x signatures with explicit no-leading-edge-clip PASS output. The existing three shortcut and three palette cycles remain covered.Validation so far:
python3 -m py_compile Scripts/vm/sidebar_toggle_check.pypassed. Next action: take the VM lease after EditorFinish releases it, deploy the already-built app, run this check, collect screenshots/MP4, then capturesample Calternal 6through 10 300-ms toggles.Worker: ShellFinish
Worktree/branch: /home/kayg/Developer/calternal-apple/.worktrees/sidebar-narrow (wave*/sidebar-narrow)
State: implementation corrected; final VM evidence blocked by an unrelated build error.
VM investigation:
python3 Scripts/vm/sidebar_toggle_check.py.AppModel.sidebarWidthobserver recursion. VM crash report/Users/lume/Library/Logs/DiagnosticReports/Calternal-2026-09-15-101442.ipsshows 14,928 recursiveAppModel.sidebarWidth.setterframes on the main thread. Commitbddabb5fixes both sidebar and inspector normalization so an already-normal value is not self-assigned.bddabb5, the real 1917 px → 1250 px resize reproduced the reported clipped-leading-edge defect. Screenshot:/tmp/sidebar-toggle-check/resize-narrow.png(captured locally from the VM). The existing width persistence handler was treating live window resize notifications as user divider changes, then applying the transient sidebar width. Commit739ded1excludeslayoutWindow.inLiveResizefrom split-width persistence. It also makes the VM resize check restore the window before returning and uses actual 2x AppKit-to-desktop coordinates.Build evidence:
bddabb5:Scripts/build-mbp.sh sidebar-narrow apppassed;BUILT_APP=/Users/agents/Developer/Worktrees/sidebar-narrow/App/build/Build/Products/Debug/Calternal.app.739ded1: required rebuild failed before linking on an unrelated Swift 6 compiler error inSources/CalternalStore/VaultIndex.swift:2046:sending 'statement' risks causing data races [#RegionIsolation::SendingRisksDataRace]. This source is outside #29's changed files. Therefore no honest final VM PASS, toggle sample, screenshots, or MP4 can be claimed for739ded1.VM lease has been released (
pkill -x Calternal; rm -f ~/Apps/.lease) and the next lane was notified. Next action after the unrelated build failure is resolved: rebuild739ded1, deploy, runScripts/vm/sidebar_toggle_check.py, then collect the required 10-togglesample Calternal 6evidence.Worker: ShellFinish
Worktree: /home/kayg/Developer/calternal-apple/.worktrees/sidebar-narrow
Update: committed the host-wide Swift 6.4 compatibility fix as
912b442(VaultIndex: Swift 6.4 region isolation). Started the required final app rebuild withScripts/mbp-slots.shreportingbuilds=0 rsync=0; the invoking build script timed out after 120 seconds while remote xcodebuild processes remained active. Subsequent slot checks reportbuilds=5 rsync=0; I did not terminate shared build-host processes. The installed sidebar artifact timestamp remains older than this final build.VM is currently held by EditorFinish. Final #29 VM validation remains pending a completed 739ded1+912b442 artifact and a queue handoff: resize check, shortcut/palette toggles, 10-toggle sample, screenshots, and MP4 are not yet claimed.
Worker: ShellFinish
Worktree: /home/kayg/Developer/calternal-apple/.worktrees/sidebar-narrow
State: final sidebar VM gate passed.
Build:
Scripts/build-mbp.sh sidebar-narrow apppassed for commit12ff9f1.BUILT_APP=/Users/agents/Developer/Worktrees/sidebar-narrow/App/build/Build/Products/Debug/Calternal.app.VM evidence (real deployed app):
python3 Scripts/vm/sidebar_toggle_check.pypassed all required geometry/toggle checks. The script performed the physical desktop right-edge drag from approximately 1917 px to 1250 px and back, using the actual clamped edge for restoration. Header and first row leading-x stayed exactly constant at{header: 30, row-1: 70}for wide, narrow, and restored states. It then passed all three shortcut and all three command-palette toggle cycles with that same signature and no leading-edge clip.Artifacts:
/tmp/sidebar-toggle-check/resize-baseline.png,resize-narrow.png,resize-restored.png, shortcut/palette screenshots, and/tmp/sidebar-toggle-check/resize-evidence.mp4.Performance evidence: executed 10 Cmd-Option-S toggles at 300 ms while
sample Calternal 6ran. Main thread was predominantly in AppKit event waiting (4704/4733 samples); display-link/layout frames in the sample are AppKit’s_NSDisplayLinkForwarderandNSWindow layoutIfNeeded, with no Calternal display-link or per-frame layout function in their call chains. VM lease released withpkill -x Calternal; rm -f ~/Apps/.lease.Overnight (Main) review fixes on the merged build:
persistCurrentSplitWidthsnever assignedmodel.sidebarWidth(width persistence was inert) — fixed; window minimum now follows the current sidebar width including collapsed (previously ratcheted up to sidebar+320 and never came back down); split-resize notifications no longer walk the whole view tree per frame;/tmp/vm/sidebar-geometry.logwriter and orphanedrecordAncestorFramesremoved.