Remove the top chrome strip from styled documents #6
Open
opened 2026-09-13 13:34:40 +00:00 by kayg
·
31 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#6
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?
Request and current status
Earlier toolbar modifier did not establish a fix. Background-only top-safe-area candidatea1a8b163 reviewed, not visually verified.
Acceptance
Use public native APIs; preserve toolbar, traffic lights, tabs, drag regions and text layout. Verify an actual styled note/background image in active/inactive and resized windows. Empty-viewer screenshots cannot close this issue.
Keep open until the user-facing outcome is verified in a delivered build. Source review or a successful build alone is not completion.
Candidate delivery update:
a1a8b163(Extend note background through top safe area) onwave16/document-background-edge.App/Sources/Viewer/ViewerView.swift.NoteBackgroundViewreceives.ignoresSafeArea(.container, edges: .top); the note card frame, editor/text layout, padding, tabs, controls, and toolbar geometry are unchanged.git diff --checkpassed.Root integrated the reviewed focus/multiselection stack66c43fa4, margin reductiona876821f, explicit-return repaircb9b7b85 and styled-background candidatea1a8b163. Integration tip37c5d40d now contains all four with clean cherry-picks. Text's compounded inset is reduced while preserving a stable handle gutter. Source review is complete; compile/mounted/runtime verification of this combined tip is pending. Build waits for the exclusive compiler-idle performance capture to finish. No desktop replacement or UI acceptance claim yet.
Build pipeline update —
/root/build_pipeline_recover(sole builder)Marker:
BUILD-HOLD-37C5-ISSUE6-20260913/Users/kayg/Developer/calternal-app/.worktrees/editor-overnight-combined/wave14/editor-overnight-combined6ca85fd2performance capture is active. No compiler or test process was started for this revision.37c5d40de40a2d0b279aad8d13d6f68837533c2d; treea4ab6f472e41dc4ad43e6f4af3aade68fcee5713; 259 verified inputs. Background safe-area commit is exact tip37c5d40de40a2d0b279aad8d13d6f68837533c2d, parentc02320f963b6c6e76cdd19996e63114c4fb990e0.927b248d34f322259770c52b9c2690878a532b82ce49d843117e3fd8d13f3480; source manifest SHA-256:18252bbb20e8639297a378b0f4175fc26090b66d6f34741a42ecf77ccfd5ac46.Limitations: no compile, Release, styled-note screenshot, active/inactive/resized-window check, VM QA, or user acceptance exists for this exact integration. The issue remains open.
Build started —
/root/build_pipeline_recover(sole builder)Marker:
BUILD-START-37C5-ISSUE6-20260913/Users/kayg/Developer/calternal-app/.worktrees/editor-overnight-combined/wave14/editor-overnight-combined.agents@mbp; no local build and no central mutation.37c5d40de40a2d0b279aad8d13d6f68837533c2d; tree:a4ab6f472e41dc4ad43e6f4af3aade68fcee5713; 259 verified inputs.927b248d34f322259770c52b9c2690878a532b82ce49d843117e3fd8d13f3480; manifest SHA-256:18252bbb20e8639297a378b0f4175fc26090b66d6f34741a42ecf77ccfd5ac46.testFocusClickAndModifierClicksUseNativeFullBlockSelections,testBlockHandleAppearsOnlyForHoverAndStaysReachableDuringInteraction, andtestBlockDragPreviewTargetGeometryAndFeedbackCleanup.QA plan for the pending exact 37c VM candidate is recorded at
/tmp/qa-runs/20260913-37c-prep/37c-plan.md(shared summary will be copied with candidate evidence). This is a plan only; no outcome is claimed before the artifact is hash-verified and a fresh native post-action frame proves the target state.Issue-specific acceptance for #6 will be exercised with a synthetic/disposable launch only. Each route uses fresh window-local screenshot coordinates with foreground delivery and a post-action screenshot plus viewer/editor state. Virtualized offscreen AX rows and driver return values are insufficient evidence.
Preview build provenance for the current integrated UI candidate, produced by build worker
/root/build_pipeline_recover:37c5d40de40a2d0b279aad8d13d6f68837533c2d; treea4ab6f472e41dc4ad43e6f4af3aade68fcee5713; 259 verified inputs from.worktrees/editor-overnight-combined.927b248d34f322259770c52b9c2690878a532b82ce49d843117e3fd8d13f3480; manifest SHA-25618252bbb20e8639297a378b0f4175fc26090b66d6f34741a42ecf77ccfd5ac46.agents@mbp. Zip SHA-25672a344ce72ec1d848703af89f71c11ac3255077df24e0cf155168bbdcd6b6dfa; executable SHA-25653d72abd06aca991ea8dfde7be807dd0959185da601fc83461c8b8e6daa2ae51; strict codesign after fresh unzip and byte-for-byte bundle diff PASS./Users/Shared/CalternalBuilds/37c5d40de40a-150324a1/Calternal-37c5d40de40a-Release-arm64.zip; VM artifact/Users/lume/CalternalQA/37c5d40de40a-150324a1/Calternal-37c5d40de40a-Release-arm64.zip./Users/Shared/CalternalBuilds/37c5d40de40a-150324a1/archive-verify.json.This build worker ran no chrome-specific UI test and no GUI. Actual styled-note active/inactive/resized chrome still needs VM visual verification and user review. State is built/staged only; keep the issue open.
37c5 preliminary VM result: launch control passed, but the available empty viewer and ordinary event viewer are not styled-document evidence. Active/inactive/resized styled-background top-edge acceptance was not exercised; no top-chrome pass is claimed. Evidence:
.agents/native-break/37c5-vm-qa/06-initial.png,09-after-sidebar.png.Root delivery verified: desktop ~/Applications/Calternal.app now runs exact37c5d40de40a2d0b279aad8d13d6f68837533c2d, executable SHA25653d72abd06aca991ea8dfde7be807dd0959185da601fc83461c8b8e6daa2ae51. Native Quit then atomic replacement, prior bundle retained, no user source/settings writes; expected Calternal Space/window restored. Receipt
.agents/desktop-install/37c5d40d/install-receipt.json.User QA now available: hover-only six-dot handle with tighter margins; first unfocused block click selection, focused edit, Cmd/Shiftselection; styled-note top background candidate; cold sidebar overlap candidate. VM basic launch and eventselection passed; actual editor gestures/stylednote and exact collapsed-preview overlap remain unverified, and focus headless test is NOTPASSED. No performance/stable/useracceptance claim.
Next56e61 build contains reviewed imageQuickLook/transcription/inspector and testharnessfix. Eventdate/title/code/list refinements continue separately; this delivery does not close issues.
37c5 VM result: the disposable editor was successfully mounted, but its no-image/plain document is not valid styled-background evidence. No styled note/background image active/inactive/resized capture was performed; do not treat the basic launch or empty-viewer frame as top-chrome verification. Keep #6 open.
37c5 VM styled-note verification FAILS #6 acceptance. A disposable note used an existing valid
calternal.background.assetfrontmatter format and a local bundled PNG; the mounted editor visibly loaded the background and dotted style (.agents/native-break/37c5-style/08-styled-active.png). Active, inactive (15-styled-inactive-terminal.png), and resized (13-styled-resized.png) frames all retain a flat opaque top-center strip above the styled content, rather than continuing the styled document/background into that band. Traffic lights, toolbar actions, tabs, and inspector remain present; this is a runtime visual result, not an empty-viewer inference. Fixture restored byte-for-byte after normal quit (18-fixture-restore.txt).Root independently inspected
.agents/native-break/37c5-style/08-styled-active.png: styled image/color fills the document area but a flat opaque band remains across the top center. This confirms the previous ignoresSafeArea background change did not fix the reported chrome. Issue stays open.Assigned document_chrome_repair (Sol high) to trace actual window/root-host/split-view/toolbar clipping with public APIs in isolated worktree from27bdc009. No further blind modifier-only acceptance; candidate needs same active/inactive/resize native fixture. Event/title build remains ahead of this lane.
Repair investigation started —
/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair, based on27bdc009.37c5d40dVM failure. The styled document/background loads correctly below the titlebar, while an opaque center band remains in active, inactive, and resized windows..ignoresSafeAreachange is runtime-failed. No repair, build, performance result, or user acceptance is claimed yet.Next action: create the isolated worktree at the assigned base and trace the live window/content/split-view hierarchy against the captured failing frames.
Root cause and implementation plan —
/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair, base27bdc009.NSSplitViewItemkeeps its default non-full-height layout, so its physical view frame begins below the unified titlebar. The flat band in all three VM frames is the window backdrop visible above that clipped detail item. A descendant safe-area modifier cannot escape the split item's frame.NSSplitViewItem.allowsFullHeightLayout; Calternal already configures a full-size content window and hides the public toolbar backing. The missing step is the detail split item's full-height participation, not another toolbar/titlebar mutation.NSViewRepresentableat the root detail seam. It resolves only enclosing publicNSSplitViewController/NSSplitViewItemobjects and sets the containing detail item(s)allowsFullHeightLayout = true. SwiftUI remains the owner of document/session state. The existing content safe area keeps the editor card below native toolbar controls, while the existing document background may extend through that safe area.Next action: implement this root-layout bridge, run source/diff checks, then queue the bounded diff for reviewer inspection before handing it to the sole builder.
Source candidate ready for review —
/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair.2fa87bb0(Extend document split beneath titlebar), parent/base27bdc009.NSSplitViewController, identifies the sibling detail item in the known two-column shell, and setsallowsFullHeightLayout = truewhen mounted or updated. The existing styled-document background remains the only content painter and the native safe area continues to inset editor controls.App/Sources/Shell/MainWindowRoot.swift, 32 inserted lines. No editor/session algorithms, inspector controls, toolbar items, traffic lights, drag regions, titlebar subviews, private API, or persisted data changed.git diff --checkpassed; worktree is clean. API availability was checked against the active macOS SDK. No local app build, GUI run, performance result, or user acceptance is claimed; the sole builder owns compilation and Release staging.Next action: reviewer inspects
27bdc009..2fa87bb0; any finding is resolved before build handoff.Reviewer: ui_fixes_review_medium
Worktree/branch:
.worktrees/document-chrome-repair/wave18/document-chrome-repairReviewed exact revision:
2fa87bb0227e7cd898e5a31cc7e7b42d7c1f1ebcagainst27bdc009State: SOURCE REJECTED. No build or GUI run.
P1 —
App/Sources/Shell/MainWindowRoot.swift:527-537: the bridge identifies the sibling center/detailNSSplitViewItemand setsallowsFullHeightLayout = true. AppKit documents that this property applies only to split items whose behavior is.sidebaror.inspector; it defaults true for those roles. The center detail item produced by this two-columnNavigationSplitViewis the default/content-list role, so assigning this property is expected to be a no-op. It cannot make the detail item's physical frame enter the titlebar, and the already-confirmed opaque band should remain.Official API contract: https://developer.apple.com/documentation/appkit/nssplitviewitem/allowsfullheightlayout
Scoped repair direction: place the selected document's existing background painter at a SwiftUI/AppKit root ancestor that already spans the window's full-size content view, behind
NavigationSplitView. The native sidebar and inspector surfaces can continue covering their own regions, while the detail-local card/editor remains safe-area-aware below toolbar controls. Reuse the session's existing background state/cache; do not mutate SwiftUI-generated split constraints or private titlebar views. A root background may coexist with the current detail-local background so only the previously exposed titlebar band changes.The responder-chain/controller lookup is bounded, public, and idempotent, and this patch does not directly alter toolbar items, tabs, traffic lights, drag regions, editor layout, or persistence. Those properties do not salvage the candidate because the selected API has no effect on a detail item.
Next action: replace this no-op with the bounded root-background seam, obtain source review, then build and run the exact styled active/inactive/resized fixture. Source review cannot establish the visual result; keep issue #6 open through native verification, delivery, and user acceptance.
2fa87bb0rejected; replacement plan awaiting review —/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair.2fa87bb0. Do not build or integrate it. Reviewer P1 is correct: Apple's currentNSSplitViewItem.allowsFullHeightLayoutcontract says it applies only to.sidebarand.inspector; the root center item is the default/detail behavior, so the assignment is a no-op. Official contract: https://developer.apple.com/documentation/appkit/nssplitviewitem/allowsfullheightlayoutanchorPreferenceplusbackgroundPreferenceValueresolves a descendant's geometry in an ancestor without mutating generated constraints. References: https://developer.apple.com/documentation/swiftui/adding-a-background-to-your-view, https://developer.apple.com/documentation/swiftui/view/anchorpreference(key:value:transform:), https://developer.apple.com/documentation/swiftui/view/backgroundpreferencevalue(:alignment::)Proposed implementation, pending plan review:
loadBackgroundImage()call by session ID plusbackgroundAssetIdentifier, clear the root state before each new load, and keep the existing session cache/security/downsampling path. This avoids two concurrent callers canceling one another.ViewerHostbounds with a SwiftUI anchor preference before the native inspector modifier. Read that anchor onNavigationSplitViewwithbackgroundPreferenceValue.NavigationSplitView, positioned to the resolved center-column bounds and extended upward by the rootGeometryProxy.safeAreaInsets.top. Remove the detail-local duplicate painter/task. The single image therefore uses one continuous aspect-fill canvas from the titlebar edge through the document viewport.Risks and required checks:
No source edit for this replacement has begun. Next action: designated reviewer approves or corrects this plan before implementation.
Reviewer: ui_fixes_review_medium
Worktree/branch:
.worktrees/document-chrome-repair/wave18/document-chrome-repairPlan reviewed: public root-background replacement after rejected
2fa87bb0State: PRE-CODE PLAN REJECTED pending two bounded lifecycle corrections. No source edit, build, or GUI run reviewed.
P2 — root image state must be keyed, not a naked
NSImage?. A SwiftUI.task(id:)begins after a body update can render, so switching sessions/assets can display the previous image for one frame before the task clears it. Store the loaded result with its exact(sessionID, backgroundAssetIdentifier)key and render it only when that key equals the current synchronous key. Capture the key for the async load and require it still matches before assigning completion. Clearing state inside the task remains useful but is not the rendering fence.P2 — background cache cancellation must move with ownership.
App/Sources/Viewer/ViewerView.swift:826-829currently callssession.clearBackgroundImageCache()from the detail page'sonDisappear. If the detail subtree is reconstructed during split/inspector/navigation lifecycle while the root still owns the same key, that child can cancel the sole root load; because the root task ID has not changed, no new load is guaranteed to start. Remove that child-owned clear when removing the child painter/task. Let the root keyed lifecycle end old-key ownership and clear/cancel the old session deliberately, without clearing a newly started same-session load.The remaining plan is appropriately narrow and public:
ViewerHostanchor before the inspector modifier should describe the center content width rather than the inspector.NavigationSplitViewand extending only the noninteractive background by the root safe-area top leaves card/editor foreground geometry unchanged.WindowBackdropand below the split/overlay, preserving toolbar, tabs, traffic lights, drag regions, and hit testing.Source cannot establish that the generated detail surface is transparent enough after the detail-local painter is removed. The root background is expected to appear in the exposed titlebar band, but it may be occluded below it by a generated split surface, causing a discontinuity. Treat a mounted root/split render or the exact styled active/inactive/resized VM fixture as a mandatory fail gate; do not infer visual success from anchor geometry. Plain/no-image, inspector toggle, sidebar collapse/restore, activation, resize, and rapid note/asset switching must remain in runtime acceptance.
Official basis remains Apple's restriction of
allowsFullHeightLayoutto sidebar/inspector items: https://developer.apple.com/documentation/appkit/nssplitviewitem/allowsfullheightlayoutNext action: amend the plan with keyed rendering and root-owned cache teardown, then implement and source-review the bounded replacement. Keep issue #6 open through native verification and user acceptance.
Replacement plan v2 — lifecycle corrections applied; pre-code approval requested —
/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair; rejected2fa87bb0remains excluded from build/integration.Exact keyed state and ownership plan:
(sessionID, backgroundAssetIdentifier)only when both an opened session and asset exist. Store a loaded result as{ key, image }; paint only whenloaded.key == currentKey. A prior note/asset image is therefore rejected during the body update before the new.task(id:)starts.await session.loadBackgroundImage(), assign only when the task is not cancelled, the current synchronous key still equals the captured key, and the root's owner is still that same session object. No stale completion can publish.loadBackgroundImage()generation increment cancels the prior asset load before starting the new one.session.clearBackgroundImageCache()fromNoteEditorSurface.onDisappeartogether with the detail-local painter/task. Its presentation/session flush and registry ownership behavior stays unchanged. A transient detail rebuild can no longer cancel the unchanged root task ID.Geometry/rendering plan remains:
ViewerHostbounds withanchorPreferencebefore.inspector; resolve them inbackgroundPreferenceValuebehindNavigationSplitView.GeometryProxy.safeAreaInsets.top; foreground card/editor geometry remains safe-area-aware.Next action: reviewer gives pre-code PASS or remaining bounded corrections. Implementation starts only after PASS.
Reviewer: ui_fixes_review_medium
Worktree/branch:
.worktrees/document-chrome-repair/wave18/document-chrome-repairPlan reviewed: “Replacement plan v2 — lifecycle corrections applied”
State: PRE-CODE PLAN PASS. No implementation, build, or GUI result reviewed.
The revised state machine resolves both prior P2 findings:
(sessionID, backgroundAssetIdentifier)and is synchronously painted only when that tag equals the current key, preventing a previous image from appearing during the render before a replacement.task(id:)begins.NoteEditorSession.loadBackgroundImage()'s generation and task cancellation, avoiding a second clear that could cancel the replacement.onDisappearcache clear moves cancellation to the root owner, so inspector/detail reconstruction cannot cancel an unchanged root task.The geometry plan is the smallest public seam found after AppKit's detail-item restriction: publish
ViewerHostbounds before.inspector, resolve the anchor in a rootbackgroundPreferenceValue, and extend only the hit-test-disabled painter by the root top safe-area inset. Foreground card/editor layout remains unchanged, and the painter stays above the existing window backdrop but behind split content and overlays.Validation limits remain material. Source structure cannot prove that SwiftUI's generated detail surface is transparent enough for one continuous root canvas. The exact styled active/inactive/resized fixture, plain/no-image state, rapid session and asset switching, inspector/sidebar transitions, activation, tabs, toolbar, traffic lights, and drag regions are mandatory runtime fail gates. A source pass or build alone cannot close issue #6.
Official basis for rejecting the previous path remains: https://developer.apple.com/documentation/appkit/nssplitviewitem/allowsfullheightlayout
Next action: implement the bounded v2 plan, freeze an exact candidate, and request source review before the sole builder runs it.
Root-background implementation ready for exact diff review —
/root/document_chrome_repair/Users/kayg/Developer/calternal-app/.worktrees/document-chrome-repair/wave18/document-chrome-repair.a969f8efc719a046e98be86470b06c1a85836b0c; review the net range27bdc009..a969f8ef. This follow-up removes every rejectedallowsFullHeightLayoutdetail-item change from2fa87bb0.Implemented public root seam:
ViewerHostpublishes its bounds before the native inspector modifier.NavigationSplitViewresolves that anchor in a root background and paints one noninteractive image canvas across the center width, extended by the root top safe-area inset.NoteBackgroundViewpainter/task is removed so only the root owns image loading.{(sessionID, assetIdentifier), image}and synchronously paints only an exact current-key match. Completion also requires the captured key, uncancelled task, and exact root-owned session object.onDisappear, so a transient detail/inspector reconstruction cannot cancel an unchanged root-owned load.Source evidence:
rtk git diff --check: PASS.Required next gates remain: exact net diff review, then Release build and mounted VM styled active/inactive/resized checks. Plain/no-image, rapid session/asset switch, inspector and sidebar transitions, activation, tabs, toolbar, traffic lights, and drag behavior remain runtime requirements. Generated split-surface transparency is still a hard visual fail gate.
Reviewer:
ui_fixes_review_mediumWorktree/branch:
.worktrees/document-chrome-repair/wave18/document-chrome-repairExact candidate:
a969f8efc719a046e98be86470b06c1a85836b0cNet range:
27bdc009..a969f8efVerdict: SOURCE PASS — no P1–P3 findings.
The implementation follows the approved v2 lifecycle:
(sessionID, backgroundAssetIdentifier)equality, so a prior image cannot paint during the body update before the new task begins.ViewerHostanchor is attached before.inspector, and only the background painter extends by the root top safe-area inset. The painter is behind the split content, disables hit testing, and does not alter foreground card/editor geometry.NSSplitViewItem.allowsFullHeightLayoutpath and the childNoteBackgroundVieware absent from the net source. The two-file scope is clean andgit diff --checkpasses.Validation limit: no build or GUI was reviewed. Source cannot establish whether the generated
NavigationSplitViewdetail surface remains transparent enough to reveal this root painter continuously. The exact styled active/inactive/resized native fixture remains a hard fail gate, along with plain/no-image, rapid session/asset switching, inspector/sidebar transitions, activation, toolbar/tab/traffic-light/drag checks. Issue #6 should remain open through runtime and user acceptance.Reviewed candidate handed to integration —
/root/document_chrome_repaira969f8efc719a046e98be86470b06c1a85836b0c, net range27bdc009..a969f8ef, is frozen in.worktrees/document-chrome-repair.ui_fixes_review_mediumreturned SOURCE PASS with no P1–P3 findings and recorded the verdict above.git diff --checkPASS. No local build, GUI, performance, delivery, or user-acceptance claim is made.Execution blocker: multiple implementation/reviewer agents stopped with Codex usage-limit errors. No further source or runtime acceptance is claimed. Desktop26eb1552 is installed and native launch/prior note verified. Central3e881860 contains next editor changes but is compile-blocked on nonisolated code painter helpers; isolated096a2725 repair is awaiting mandatory reviewer. Source-approved candidates pending combined integration: cross-event1fb74e92 (three-commit chain), imagecontrolsabb397be, chrome net27bd..a969f8ef. Event test cleanupd745 is integrated but shared XCTest async-teardown abort remains under investigation; title owner needs exact pre-feature-control PID52796 crash stack before choosing test-only fix. Layout centered760pt cap remains settled, exact alignment still pending. Preserve all active worktrees and uncommitted work; resume from these issues, do not restart or claim completion.
Work resumed at user request. Individual agent tasks must record their task name, worktree/branch, exact candidate revision, current status, next check and blockers in each relevant issue, with readback. Active dispatch: /root/block_drag_finish integrates source-approved #6
a969f8efnet, #12abb397be, #151fb74e92chain in an isolated checkout; /root/code_block_polish repairs #9 remaining actor-isolated scalar access, /root/ui_fixes_review_medium reviews; /root/title_completion and /root/event_date_completion investigate/correct awaited test fixture teardown in #5/#1. Central remains3e881860; desktop26eb1552 remains installed. No new build or acceptance yet. Prior usage blocker is historical: resumed agents are responding.Task identity:
/root/block_drag_finishIsolated integration candidate:
/Users/kayg/Developer/calternal-app/.worktrees/editor-final-combinedwave16/editor-final-combined3e8818608b7981a0670d229f322985f3474dbe5868885f1c4b8dceb4a59b35cc07b8516ffd0d4362Integrated the complete reviewed change chain for this issue without editing central. Shared
BlockEditorViewconflicts were resolved by preserving both the image-toolbar anchor update and the existing coalesced block-handle hover reconciliation during scroll/layout. Stable patch parity is exact for all commits except the first image-controls commit, whose deliberate two-call conflict resolution accounts for the patch-ID difference.Source checks completed: clean worktree, no conflict markers,
git diff --checkclean. No local build or GUI run. Exact merged interaction review is now requested. Current central/base still has the separately owned known Swift 6 code-painter isolation compiler blocker; this candidate does not claim to repair or compile past it.Merged interaction source review — exact isolated tip
68885f1c4b8dceb4a59b35cc07b8516ffd0d4362against base3e8818608b7981a0670d229f322985f3474dbe58: PASS (no P1–P3 findings).The reviewed #6 public SwiftUI background/titlebar chain retains identical stable patches. The NavigationSplitView extends beneath the titlebar through public safe-area behavior, and the selected document background is painted from
MainWindowRootbehind the viewer bounds with hit testing disabled. Session/asset identity fences the async load; cancellation, selection changes, and disappearance release the prior cache owner. Viewer content, editor layout, title projection, selection/caret, list/code painters, and inspector interaction frames are not shifted by the background layer.This source verdict does not claim the styled top strip is visually correct; VM/user rendering remains the acceptance gate.
Root took over the existing sole compiler controller after /root/build_pipeline_recover hit usage limits. Exact704b347e26c7c48f3652a4cf7cd235f7815b7364 SwiftPM Release compile PASSED and VM test runtime staged. Tests executed:0 so far. Build log SHA6d41a977d4e100e63c9f20ecfb6c500b5545d25cf17d83bb48ae25b13d6d67a9; runtime manifest8ad650319b90b9e89070f07fabace4d39b9bc276127c2f47615d5c73f70b2fb7. /root/image_preview_qa assigned exact runtime tests. Separately source-reviewed combined chrome/image-controls/cross-event candidate68885 merged cleanly with painter repair as9a69a955; that newer revision is not built. Each thread owns updates in its relevant issues. Desktop remains26eb1552.
Root integrated exact source-reviewed test lifecycle fixes: title3817c269c524898647b8265ac8755a2c22d4b359 as82ff556e and eventabcd17f50f7cb7c0d4f5ac72bb215a0bd36b8c1f as3171535b. Root independently matched event binary diff SHA0c241a51. Exact3171535be7f04e038f80799074104de68c4f5015 archive and265-input manifest are now building through the existing agents@mbp sole controller. Includes source-reviewed #6/#12/#15 combined changes. /root/image_preview_qa handles preceding704b focused runtime; root handles compiler while build subagent is usage-blocked. No new desktop delivery; no new test result yet.
Task
/root/editor_polish_inventory— next-combined-preview acceptance handoff (planning only; no GUI/build).Already established: public root-background candidate
a969f8efand its combined integration passed source review. No styled native rendering has established that generated split surfaces reveal it.Remaining VM checks, owned by
/rooton the next exact combined build: open the fixture's local-image styled note and require uninterrupted background through the center top/titlebar strip while active, inactive, resized wide/narrow, inspector shown/hidden, sidebar collapsed/expanded, and another tab/document selected then returned. Verify toolbar, traffic lights, tabs, window drag, editor hit testing, and scroll remain usable. Switch rapidly styled→plain→different styled asset and require no stale flash; a plain/no-image note must show no leaked prior image. Record an actual styled note, since an empty viewer is not proof. Any opaque center band or foreground shift fails. Keep #6 open.Root installed and launched exact3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68 as the only ~/Applications/Calternal.app. ExecutableSHA56e57a8fc553ce7ce82f6b72dbf04f2e2d442aefb53402b943adca14c208f408; zipSHAa8b1175bc354b455426351b0b7bfc9efb826071ddf0b4b69779cac0add9adb95; strict signature/arm64/Release/revision verified. Prior26eb quit via native menu; rollback retained. Space content inventory matched before/after replacement. Native current app restored the previously open note and Style inspector without editing its content. Receipt .agents/desktop-install/3bbb28a6/install-receipt.json.
User QA preview only. Pass: basic native launch/selection; package lists2/hover1/cross-event3; separate f907event7/7. Fail/open: actual mounted code gutter7assertions, imageFit/Fill4, imageQuickLookgesture8, hostedtitle4allocatoraborts. StyledVMdeeplink did not reach note; nativeUIfallback assigned. Each failure has independent author+reviewer, not closed. No stable or performance acceptance; latest imageprovider repair and diagnostics are NOT in this desktoppreview.
User test focus: centered width and mentions alignment, hover-only six dots, block selection/dragging, cross-event Copy/Move/Cancel/Remember dialog. These UI outcomes remain user acceptance gates.
Remote preservation checkpoint — 2026-09-14
The following original-worktree candidates are now pushed and exact hashes verified on both Forgejo and GitHub. These are preserved candidates/diagnostics, not a claim of new acceptance; some may already be integrated by cherry-pick or superseded. Use the issue’s existing evidence before choosing changes to resume.
wave12/editor-top-chrome—203b1b2475c5bf758b605969196191c0a88dcd57wave16/document-background-edge—a1a8b1631176ead55b72b5d8ea2a928c2c5db5f5wave18/document-chrome-repair—a969f8efc719a046e98be86470b06c1a85836b0cMaster #20 contains the resume instructions. No force push; dev remains
1d8f4adf.