Ship image selection, context actions and double-click preview #11
Open
opened 2026-09-13 13:34:42 +00:00 by kayg
·
51 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#11
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
Quick Look39915dab is isolated, reviewed and focused-tested, but not integrated/shipped or runtime-verified.
Acceptance
Select exactly the image; preserve neighboring prose. Native context actions and double-click Quick Look; verify retarget/Escape/close/teardown. Test copy/delete/undo, missing/remote files and local containment.
Keep open until the user-facing outcome is verified in a delivered build. Source review or a successful build alone is not completion.
Worker/status:
/root/image_preview_native_repairaudit of isolated worktree/Users/kayg/Developer/calternal-app/.worktrees/image-preview-ownership-repair, branchwave15/image-preview-ownership-repair.Current state: implemented, source-reviewed, and focused-tested in isolation; not integrated, Release-built, VM-runtime-verified, delivered, or user-accepted. Exact candidate:
39915dabc31ffbc2298be53890181e66650090bd.Evidence:
39915dab.agents@mbpSwift 6.3 package compile/stage: PASS.EditorImageGeometryTests/testMountedEditorHitsExactInlineImageFramesAcrossFragments,EditorImageGeometryTests/testQuickLookControllerClearsPreparedStateOnTeardown,EditorImageGeometryTests/testQuickLookControllerTransfersAndReleasesPanelOwnership, andEditorImageGeometryTests/testMountedQuickLookRetargetsOnlyToExpectedEditorAndTracksLatestItem.frameForTextAttachment(at:)from fragment-local coordinates using both the fragment origin andtextContainerOrigin. Coverage includes list-prefixed and later inline images, four interior quadrants, and adjacent horizontal rejection.c603712ae5a7d07468f703435dca9570957dd216956cd3f062d120ad428f406d. Runtime manifest SHA-256:59c28c6ae9dd214bd6c8d4c4d20d279fc6db8c89d8b15c7cfb550b0434a7395f. Focused evidence is under/Users/Shared/CalternalBuilds/39915dab-image-tests/; runtime tar SHA-256:51410e9d2179c6b242001b79c8bbe1582898a069b96903bf5282a7dd6aac0abe.Unverified acceptance remains explicit: no Release-app or VM UI run has proven an actual double-click opens Quick Look, same/different-window retargeting, Escape, panel close, or editor teardown. The focused run did not execute the existing missing/remote/symlink containment selector, and it did not prove image context-menu Copy/Delete/Undo. The URL resolver retains the known mutable-filesystem check/open race; no race-free open claim is made.
Integration dependency: issue #3 is actively changing the same
BlockEditorViewclick,selectedRanges, Copy/Cut/Delete, drag, and context-action contract. Candidate39915dabalso changesBlockEditorView.swiftand image selection/clipboard behavior. Integrate by replaying the image feature onto the frozen #3 editor semantics, then review the merged behavior so image double-click selects exactly one attachment without retaining or corrupting a discontiguous block selection. Do not blindly cherry-pick the isolated editor file.Next action: root coordinates #3 stabilization and the #11 replay/integration, then runs merged source review, Release build, VM double-click/retarget/Escape/close/teardown checks, Copy/Delete/Undo and missing/remote/containment cases, and prompt user QA. Keep #11 open until delivered runtime behavior is verified and accepted.
Integration candidate started (2026-09-13)
Worker:
/root/image_preview_native_repairWorktree:
/Users/kayg/Developer/calternal-app/.worktrees/image-preview-integrationBranch:
wave16/image-preview-integrationBase:
37c5d40de40a2d0b279aad8d13d6f68837533c2dCandidate:
9f7e92af99ff341c64c6a6774e109b9228d418bfIntegrated the reviewed cumulative image-preview delta
2f352af8..39915dabc31ffbc2298be53890181e66650090bdinto the current editor base. The candidate changes only the same four files:BlockEditorView.swift,EditorImagePresentation.swift, newEditorImageQuickLookController.swift, andEditorImageGeometryTests.swift. No title callback or app-host file was changed.Reconciliation with the current editor
The current base already contains focus-aware whole-block selection, native discontiguous
selectedRanges, Command/Shift handling, mouse-up suppression, context-menu ownership, and the revised hover/handle path. Those behaviors were retained.The only integration-specific source adjustment is at
mouseDown(with:): Quick Look consumes an unmodified double-click only afterimagePreview(atViewPoint:)proves that the point is inside one exact native attachment frame and resolves a previewable local URL. Command/Shift/Control/Option clicks continue through the existing block-selection behavior. A successful preview replaces any previous multi-block selection with that exact attachment range; no selected or hovered unrelated block supplies preview identity.The reviewed TextKit 2 targeting remains intact: it inspects only the pointer's realized layout fragment, resolves attachment runs within the full fragment range, and converts
frameForTextAttachment(at:)from fragment-local coordinates using both the fragment origin andtextContainerOrigin. The reviewed Quick Look same-owner retargeting and synchronous panel ownership teardown also remain intact.EditorImagePresentation.swiftandEditorImageQuickLookController.swiftare byte-identical to39915dab; the production-independent test/presentation/controller delta has the same stable patch ID as the reviewed source.git diff --checkpasses and the worktree is clean.Verification state
The donor
39915dabhad reviewer PASS, remote Swift 6.3 compile/stage PASS, and all four focused selectors PASS. Those results establish the reviewed feature delta, but they do not establish this rebased exact candidate.Exact-tip source review for
9f7e92afis requested. No local build or GUI run was performed. After source PASS, the build owner must compile and run the focused image geometry/Quick Look selectors on the exact SHA, followed by actual VM double-click, retarget, Escape, close and teardown checks. This issue remains open through delivered runtime verification.Issue #12 remains sequenced after this image-target/source contract freezes.
Integration candidate correction
9f7e92afwas amended before exact-tip review. The current candidate is8af579cbae37dcbd797ce44d472188341d715d8fon the same base, worktree and branch.The exact-image double-click path now also clears
blockSelectionAnchorSourceLocationand sets the existingsuppressNextBlockSelectionMouseUpflag before selecting the attachment. This reconciles Quick Look with the current focus-aware block-selection lifecycle: consumingmouseDowncannot leave an unmatched nativemouseUp, and a later Shift-click cannot extend from an unrelated pre-preview block anchor.The worktree is clean and
git diff --checkpasses. Exact-tip review was redirected to8af579cb; no build or GUI run has occurred.Reviewer:
/root/editor_polish_inventoryExact integrated candidate reviewed:
8af579cbae37dcbd797ce44d472188341d715d8fin.worktrees/image-preview-integration, relative to base37c5d40de40a2d0b279aad8d13d6f68837533c2d.Source verdict: PASS — no P1-P3 findings.
Checks:
handleBlockSelectionMouseDownonly for an unmodified second click that hits an exact realized attachment frame and resolves a contained local image. Modifier gestures and failed/missing/remote targets continue through the existing selection path.selectedRangeswith the exact one-character attachment range viasetSelectedRange, suppresses its unmatched native mouse-up, and returns. Later Shift selection cannot extend from a stale block anchor.textContainerOrigin; list-prefixed and later-fragment quadrants plus adjacent horizontal misses remain covered.BlockEditorView, exact expected-editor identity, active same-owner retargeting, cross-owner transfer, and idempotent synchronous release of self-owned dataSource/delegate pointers on end/close/teardown.c02320f9shortcut return handling and37c5d40dsafe-area work remain in ancestry and are outside the four-file image delta. No title callback files changed.No local build or GUI run was performed for this review. Before integration/delivery, the build owner must compile and run the focused image/Quick Look selectors on exact
8af579cb, then VM-test an actual first-interaction double-click, exact selection after a prior discontiguous selection, modifier gestures, same/cross-window retarget, Escape/panel close/window teardown, Copy/Delete/Undo, and missing/remote/symlink cases. Keep #11 open through delivered user acceptance.Root integration update
Reviewed image candidate
8af579cbis integrated as8d6e28cb; reviewed transcription candidate464ed7e8is integrated as9e3a64b6in wave14/editor-overnight-combined. Root inspected the integration seams and the worktree is clean. Exact-tip build/runtime checks remain pending; neither issue is accepted or closed.The existing immutable 37c5 preview build proceeds first for focus selection, margins, and document background. These newer changes queue behind it so review work does not delay user QA. Title #5 remains rejected and in repair; inspector #10 is in independent review. Performance capture #13/#14 released its VM/compiler hold.
Build worker
/root/build_pipeline_recoverhas frozen.worktrees/editor-overnight-combinedat exact56e61d2e4d8da6915fc693a99b2d09d8b5160863, tree3a21c99da5c7c0ab3ae8ec2d949439b5a0c5e5a3, including reviewed native image/Quick Look integration8d6e28cb. The soleagents@mbplane will compile SwiftPM Release tests and run the four focused mounted image-hit and Quick Look ownership/retarget/teardown selectors before immutable Release packaging.This is build-start provenance only. First-interaction double-click, modifier selection, cross-window retargeting, panel/window teardown, edit/Undo, adversarial path cases, and user acceptance remain pending; keep #11 open.
Exact
56e61d2e4d8da6915fc693a99b2d09d8b5160863compiled successfully for SwiftPM Release tests onagents@mbp. The four focused integrated image/Quick Look selectors all passed: mounted exact inline-image hit frames (1.487s), prepared-state teardown (0.867s), panel ownership transfer/release (0.814s), and mounted expected-editor retarget/latest-item tracking (2.091s). Exact logsfocused-2.logthroughfocused-5.logand their SHA-256 values are recorded under/Users/agents/Developer/BuildOnly/package-tests-d40/Evidence/package-tests/20260913T143932Z-central-56e61d2e-image-voice-inspector-15a9e8a8/.Release is held by an independent focus-selection test failure, so no 56e Release/runtime/user acceptance is claimed yet. Real double-click, modifier/cross-window/panel teardown, edit/Undo, adversarial path, and user gates remain pending; keep #11 open.
Exact integrated image/Quick Look candidate
0e835eed87233ab1156fbef86c0286e18a45fa90compiled and passed all four focused SwiftPM selectors onagents@mbp: mounted exact inline-image frame hit testing, prepared-state teardown, ownership transfer/release, and expected-editor retarget/latest-item tracking. Exact logs and hashes are in/Users/Shared/CalternalBuilds/0e835eed8723-3507d319/tests/focused-tests-result.json.Verified arm64 Release is staged at
/Users/Shared/CalternalBuilds/0e835eed8723-3507d319/Calternal-0e835eed8723-Release-arm64.zipand/Users/lume/CalternalQA/0e835eed8723-3507d319/Calternal-0e835eed8723-Release-arm64.zip. Zip SHA-256a18cecf74cb32fd205201b21783b2a7df56aec77a081e04d3c791f6377b4e0ee; executable SHA-256e2ce47b34c64f73d5b7d57384e9b17bc13379658138803ab56ec670246965226; strict codesign after fresh unzip and bundle diff passed.State is built/staged only. Real double-click, modifier/cross-window retargeting, panel/window teardown, edit/Undo, adversarial paths, and user acceptance remain pending; keep #11 open.
0e835 VM visual check on an authorized disposable inline-PNG note: image rendering and exact image selection PASS; double-click Quick Look acceptance FAIL.
The seeded image visibly rendered (
19-inline-initial.png). A first native foreground click produced a blue image-only selection while neighboring prose stayed unselected (21-image-selected.png). A following native foreground double-click did not open a Quick Look window/panel: the post-frame instead showed the block formatting toolbar over the selected image (24-after-doubleclick-state.png); window inventory is23-after-doubleclick-windows.json. Therefore Escape/close/retarget and adversarial image cases were not run, and the issue must remain open.Fixture was restored after the run; exact restore evidence is included with the QA artifact.
Worker/status:
/root/image_preview_native_repair/ql_vm_dispatch_diagnosis(read-only diagnosis), central source/Users/kayg/Developer/calternal-app; no source edits, build, or commit. Issue #11 remains open and runtime-unaccepted.Evidence:
.agents/native-break/0e835-vm-qa/RESULT.md:16-18and screenshots21-image-selected.png/24-after-doubleclick-state.png: the first native click selected only the image; the following foreground native double-click left the image selected, showed the block formatting toolbar, and produced no Quick Look window (23-after-doubleclick-windows.json). The CUA 0.21.0double_clickdocumentation says the pixel route emits two down/up pairs about 80 ms apart; it does not record theNSEvent.clickCountdelivered to AppKit.Exact issue-11 source (
git show 9e3a64b6, also present in tested0e835eed):Sources/CalternalEditor/BlockEditorView.swift:940-960returns early only whenclickCount == 2, command/shift/control/option are absent,imagePreview(atViewPoint:)succeeds, andpreviewURLis nonnil.:1021-1078recomputes a one-fragment attachment frame plus destination/contained-image URL on every event; it has no diagnostic that identifies which guard failed.:3358-3378letsselectionDidChangenormalize and callshowFormattingToolbarfor a nonempty selection.:5068-5154uses a nonactivating floating panel, and:5173-5194dismisses it on outside mouse-down and returns that event, so toolbar/focus code alone does not prove that it swallowed the second click.EditorImageQuickLookController.swift:40-59,70-81can reject responder ownership after the preview branch, butmouseDownstill returns beforesuperin that case.Central
devHEADd1795607e57418c2776459b8e99394e8b71d983ais a source-state caveat:Sources/CalternalEditor/BlockEditorView.swift:520-537has only the older gutter/block path and no Quick Look branch. The VM result came from the exact issue-11 source tree (0e835eed/9e3a64b6ancestry), so diagnosis and any patch must target that integrated source, not infer behavior from the current central file alone.Bounded diagnosis: the visual outcome establishes that the Quick Look guard did not consume at least one click, since the native path produced or retained the formatting toolbar. It does not distinguish the strict
clickCountgate, a post-selection fragment hit miss, a nil resolver URL, or later Quick Look ownership. The most likely dispatch mismatch is the strictevent.clickCount == 2against a driver that promises two pairs but supplies no AppKit click-count evidence. First-click selection should not reflow the editor in the cited selection/toolbar code, but there is no post-first-click assertion of the attachment target and URL. Do not claim a single root cause until instrumented.Smallest next source/test: add a mounted Aqua regression with a spy around this branch. First synthesize a clickCount-1 down/up at an exact TextKit attachment-frame interior point; assert the exact one-character image selection, neighboring prose unselected, then immediately assert
imagePreview(atViewPoint:)still returns the same display range and nonnil URL. Synthesize a second same-point clickCount-2 down/up with no modifiers; assert preview dispatch/prepared URL/Quick Look panel and no formatting toolbar. Also run two clickCount-1 pairs to model the CUA pixel route, plus modifier controls and clickCount-3. If count 2 is observed, the smallest hardening isclickCount >= 2and dismissing the formatting toolbar before triggering Quick Look. If the CUA route delivers count 1, use bounded editor-owned second-click identity state (or correct the CGEvent click state) rather than relying on>= 2; preserve modifier exclusions. Validate on the VM before closing.Next action: parent implementation/reviewer to add the dispatch regression and rerun the exact VM fixture.
Correction to the bounded diagnosis above: the toolbar is not proof that
mouseDownfell through the Quick Look guard. A successful branch also callssetSelectedRange(image.displayRange)atBlockEditorView.swift:953; if that emitsselectionDidChange, the:3373-3374path can show the toolbar before/around Quick Look. The toolbar may also have been retained from the first selection depending on monitor timing. The runtime evidence establishes only that no Quick Look surface was visible after the action. Instrument branch entry/guard failures, target/URL, and controller ownership before assigning the failure to clickCount, geometry, resolver, or responder focus.Implementation continues in isolated worktree
wave16/image-preview-dispatch-repairfrom current combined editor lineage5f8dd69e(descends the VM-failing0e835eed).The bounded repair will instrument the native mounted gesture boundary and add a conservative fallback for automation/accessibility event sources that deliver a double-click as two complete
clickCount == 1pairs. The first unmodified exact image click remains owned by NSTextView and records only document identity, source revision, exact attachment display range, resolved URL, position, and time. A second unmodified click withinNSEvent.doubleClickIntervalmust independently resolve to that same occurrence and URL within a small spatial tolerance before preview dispatch. NativeclickCount >= 2remains the direct path. Any modifier, miss, different occurrence, revision, or stale interval clears the candidate.A mounted regression will send complete native down/up sequences through
NSApplication, avoiding a bareNSTextView.mouseDowntracking hang, and observe explicit stages: candidate armed, exact target/URL rejected, Quick Look ownership rejected, or presented. It will cover the two-single-click fallback, native double-click, miss/modifier rejection, exact image selection, and panel ownership/cleanup. No document scan, source rewrite, or unrelated block-selection behavior is added.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.
Dispatch candidate: exact
b0770f0ee7eabb35ccb95b96c39d06be735d96a4, based on current combined issue-11 lineage5f8dd69e029e63d5c87e68d4b5e663b63684ef52(which descends the VM-failing0e835eed).Production behavior: native
clickCount >= 2remains the immediate exact-image path. For input sources that emit a double-click as two completeclickCount == 1gestures, the first click records only document identity, source revision, exact display occurrence, resolved URL, point, and timestamp. The second click must independently resolve to the same current attachment/URL withinNSEvent.doubleClickIntervaland 4 points. Modifiers, misses, different images, projection revision, stale time, or detach clear the candidate. Successful dispatch dismisses the formatting toolbar, selects only the attachment, and reports whether Quick Look was presented, panel-unavailable, or ownership-rejected.The mounted two-fragment regression sends complete down/up events through
NSApplication; it queues the up before a fall-throughNSTextView.mouseDownand explicitly drains it when a preview branch returns early, avoiding the known headless tracking hang. It verifies first-click exact selection/no source edit, two-single-click dispatch, native count-2 dispatch on the later inline image, panel current-controller identity/visibility, and whitespace/modifier rejection.Evidence: clean worktree and
git diff --checkPASS. No local build or GUI. Exact-tip review, hosted compile/runtime, and VM double-click Quick Look verification remain required. The prior VM failure is not claimed fixed yet.Reviewer:
/root/ui_fixes_review_mediumWorktree:
.worktrees/image-preview-dispatch-repairExact candidate:
b0770f0ee7eabb35ccb95b96c39d06be735d96a4Parent:
5f8dd69eStatus/verdict: SOURCE PASS — no P1–P3 findings.
The fallback cannot turn one click into a preview. A first unmodified
clickCount == 1only arms a candidate and then continues through the existing block-selection/nativeNSTextView.mouseDownpath. A second count-1 event dispatches only when document identity, source revision, exact attachment display range, resolved file URL, elapsed system double-click interval, and four-point spatial tolerance all still match. Non-image, modified, other click-count, projection-change, and detachment paths clear the candidate. NativeclickCount >= 2re-hit-tests the current attachment directly, so stale selection is not used to choose a preview.Dispatch selects the exact atomic attachment, clears the block-selection anchor, suppresses the corresponding block-selection mouse-up, and dismisses the formatting toolbar before handing the validated file URL to the per-editor Quick Look controller. The controller still accepts shared-panel ownership only when Quick Look's responder-chain controller is this exact editor; failed ownership clears prepared state. Existing teardown/window-close ownership cleanup remains intact. Modified image clicks continue into the existing block selection/editing routes and do not preview.
The mounted regression uses complete
NSAppdown/up dispatch, proves the first count-1 click selects without preview or source mutation, the matching second count-1 reaches a visible shared panel owned by the editor, native count-2 works on a later layout fragment, and adjacent/modified clicks do not preview. Exact hit geometry, selection, source preservation, and panel teardown are retained. The production result observation is internal and only records decisions.Scope is three files and
git diff --checkpasses. Source review only: no compiler or GUI result is claimed. The target build and mounted selector must still prove AppKit/Quick Look behavior on the build host.Task identity:
/root/block_drag_finishActive integration repair:
/Users/kayg/Developer/calternal-app/.worktrees/editor-overnight-combinedwave14/editor-overnight-combinedc5c2e1904209ba9d575b4000d8b56ae9cf3716d9(reviewed #12 image controls)b0770f0ee7eabb35ccb95b96c39d06be735d96a4(reviewed #11 complete double-click dispatch)Sources/CalternalEditor/BlockEditorView.swift, at the shared image mouse-down route.Resolution contract: preserve #11's pending-click identity/revision/range/URL/time/distance validation and dispatcher observations for both AppKit clickCount>=2 and paired clickCount==1 delivery; retain #12's exact
imageInteractiontarget used by first-click native controls; dismiss the #12 toolbar before Quick Look dispatch; preserve both detach/projection lifecycle cleanup paths. The other two #11 files applied without conflict and will not be modified.No build/GUI. I will stage and continue only after source/type/callsite and conflict-marker checks, then request exact integration review against
c5c2e190.Task identity:
/root/block_drag_finishResolved integration candidate:
.worktrees/editor-overnight-combined/wave14/editor-overnight-combinedc5c2e1904209ba9d575b4000d8b56ae9cf3716d935e20ac2740033016ec44eae19c979e50aab69bcb0770f0ee7eabb35ccb95b96c39d06be735d96a4The shared mouse-down conflict retains #11's complete gesture dispatcher and #12's richer image interaction/control target. Single unmodified clicks arm validated paired-click recognition and activate native image controls. AppKit clickCount>=2 or a valid paired click dispatches Quick Look. Dispatch dismisses the image toolbar before selection and again after selection notifications can reopen it, then prepares/presents Quick Look and records the native result. Modified clicks reject preview dispatch. Detach and projection changes clear pending recognition and image toolbar ownership.
Only the conflicted
BlockEditorView.swiftwas manually resolved; the Quick Look controller and #11 regression applied unchanged. Worktree is clean,git diff --checkpasses, and no conflict markers remain. No build/GUI. Exact merged interaction review by/root/ui_fixes_review_mediumis pending.Reviewer:
/root/ui_fixes_review_mediumIntegration worktree:
.worktrees/editor-overnight-combinedExact candidate:
35e20ac2740033016ec44eae19c979e50aab69bcParent:
c5c2e1904209ba9d575b4000d8b56ae9cf3716d9Status/verdict: INTEGRATION SOURCE PASS — no P1–P3 findings.
The reviewed #11 dispatcher survives the #12 merge. An unmodified first count-1 image click arms the exact identity/revision/range/URL/time/point candidate, then #12 activates the same occurrence's native controls. A matching second count-1 click and native count>=2 both re-hit/validate the current image before Quick Look; modified clicks clear pending state, skip image controls, and continue through existing block-selection/editing routes. Projection changes and detachment clear the pending click.
The conflict resolution correctly dismisses both formatting surfaces before selection, then dismisses the image toolbar again after
setSelectedRange, because #12's synchronous selection-change handler can reopen it. Quick Look preparation, responder-chain ownership validation, panel result reporting, and teardown remain unchanged. The Quick Look controller and mounted geometry/gesture test blobs exactly match reviewed #11b0770f0e.Three-file scope and
git diff --checkpass. Source/integration review only; target compilation and the mounted merged interaction remain required.Root build handoff: exact integrated
35e20ac274has passed independent interaction review (ui_fixes_review_medium) after block_drag_finish resolved #11/#12 overlap. Root independently checked the merged dispatch wrappers and diff; central is clean. The sole agents@mbp package export/upload/build pipeline is dispatched using the existing reviewed controller/helper. Local evidence destination .agents/wave16/central-35e20ac2-root. Build/runtime outcome pending; desktop still26eb1552. In parallel,f90751c4event/title hosted runtime is transferring to the VM; slow relay transfer is being replaced with a direct staged handoff. No tests are claimed from a build or partial archive.Task
/root/editor_polish_inventory— next-combined-preview acceptance handoff (planning only; no GUI/build).Already established: exact inline-image TextKit hit geometry and Quick Look ownership/retarget/teardown selectors passed on
0e835eed; the merged #11/#12 dispatcher at35e20ac2passed source review. A prior VM double-click showed no Quick Look, and the dispatcher repair has not run natively.Remaining VM checks, owned by
/rooton the next exact combined build: in the disposable note, first create a disjoint text selection, then single-click each image quadrant and require only that attachment selected with neighboring prose unchanged. Double-click using the actual native route and require system Quick Look; retarget image A→B in the same editor, then another window/editor, and verify Escape, panel close, document switch, and window close release ownership. Modifier-click and adjacent whitespace must never preview. Exercise context Copy and Delete+Undo, missing image, remote URL, and symlink/out-of-root rejection with zero unrelated mutation. Keep #11 open.Exact 3bbb package compile and VM staging
Worker/role:
/root/title_completion, transfer-only infrastructure handoffWorkspace/branch:
/Users/kayg/Developer/calternal-app,dev(read-only; no source mutation)Exact central revision:
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68State: package test compilation and staging passed; runtime assertions pending QA
The sole
agents@mbpcontroller completedswift build -c release --build-tests --enable-xctest --disable-swift-testing -Xswiftc -enable-testingwith return code 0 in 13.916 seconds. Staging returned 0. The result recordscompileOnly=true,swiftTestInvoked=false,xctestInvoked=false, andtestsExecuted=false, so this is compile/staging evidence only.Builder evidence: build log SHA-256
54c3fe1d5cf2a36e5b3b2ead2fe915657a6c446754b5c6ac0983e48d2a81b8f1; runtime manifest167cd835ece65a3e13fec0ed235f930c0e052406ab7a05235fbc4dee8324c976; package test binary307239fd7f2fb84c172e86c4c60f529d037f9578664e3ea153f295e9c9d3a426; resultebe531e1521f3a6113fc8f6d6afec4f474587d69ebbd2dcc6d64c08e70e31ba5; source archivecca8fffc2c461a0b26703efcbea07561816ca85e10c0f770071c2d87012ee343; source manifest6f49233d1fc8510db16078a172568a4c2cb858d2041918110ba59eb4a1ce1ddf.The staged closure was archived on the builder and transferred by authenticated rsync delta into a unique VM
.partial. After its full SHA matched, it was atomically published read-only at/Users/lume/CalternalQA/3bbb28a6-package-runtime/vm-xctest-runtime-3bbb28a6-4d217fcf.tar. Builder and VM SHA-256 are both5fd5149b201d1064aa0fe9b0c3be1c96dfd83c930c380a0d712b5d2963f02e6d; mode is 0444 and the same-name partial is absent. The successful retry matched 85,579,024 of 85,634,560 bytes and sent 92,696 bytes.QA
/root/image_preview_qahas the exact path and hashes and owns unpack verification and the focused runtime selectors after the current f907 title/event lane. This task invoked no compiler, test runner, app, or GUI. Linked issues remain open pending their actual selector and user-facing acceptance evidence.3bbb VM package runtime exact hashes verified. The exact mounted Quick Look gesture gate
CalternalEditorTests.EditorImageGeometryTests/testMountedEditorHitsExactInlineImageFramesAcrossFragmentsexecuted 1 test and failed 8 assertions. Expected candidate/dispatch observations for image ranges{47,1}and{130,1}; observed no observation and selection{138,0}. This is an actual executed failure, not the earlier incorrect zero-test suite filter. Evidence:.agents/native-break/3bbb-combined-package-qa/07-ql-gesture-console.txtandexact-logs/quicklook-gesture/xctest.log.Reviewer:
/root/editor_polish_inventoryExact candidate:
abf3bf2d7b4f6a16567dba955eeef0e39cf25639Worktree:
.worktrees/image-preview-dispatch-repairBase:
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68Verdict: SOURCE PASS — no P1–P3 findings.
The new diagnostic callback is internal, typed, and nil by default. It records only window number, event/view points, click count, and an exact attachment display range; it exposes no Markdown text, asset path, or resolved URL. Optional callback invocation keeps the diagnostic hit lookup off the production path when unset. The existing modifier exclusion, native count>=2 path, bounded paired-count-1 identity/revision/range/URL/time/distance validation, target re-hit, selection, and Quick Look ownership paths are unchanged. The mounted test merely enables the seam and prints its typed events while retaining the prior strict dispatch, exact-selection, source-preservation, adjacent-hit, and modifier assertions.
git diff --check 3bbb28a6..abf3bf2dand source syntax inspection pass. No build, test execution, or GUI is claimed. The diagnostic still needs the owned runtime rerun to establish what the VM/native event route actually delivers; keep #11 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.
Root next exact centrald5ce608f includes reviewed#12 providercc6a (bb186), #11 geometrydiagnosticsabf3 (5041), #9 guardeddiagnosticsNETd99d..a07c (932e; rejectedgeometrycf7 excluded), #5 structuredcontrol+samepathcontrol through8920 (f463/043e/d5ce). Each candidate source-reviewed; diagnostics preserve strict assertions and avoid user source/URL output. Sole packagecompile pipeline dispatched; subsequent hostedtitlecontrol build remains queued. These newchanges are NOT in desktop3bbb. Runtime rendering and gestures are unproven; earlierfailures explicitly open. Root owns integration/build; authors await exactdiagnosticlogs for decisions.
Worker/role:
/root/block_drag_finish, isolated integration.Worktree:
/Users/kayg/Developer/calternal-app/.worktrees/editor-diagnostics-3bbbBranch:
wave17/editor-diagnostics-3bbbBase: exact
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68Status: active, source-only.
Plan: cherry-pick reviewed diagnostic commits
5041add2(#11 Quick Look gesture coordinates) and932e17e1(#9 guarded code-painter geometry) in that order. The candidate explicitly excludesbb186and all #12 image-provider changes. I will verify clean lineage, net changed paths/patch content, production behavior equivalence outside opt-in diagnostics, andgit diff --check; then/root/editor_polish_inventorywill review the exact frozen tip. No compiler, test runner, VM, GUI, desktop install, or central checkout mutation is authorized in this task. Root owns the subsequent exact package build and VM diagnostic runs.Worker/role:
/root/block_drag_finish, isolated diagnostics integration.Worktree:
/Users/kayg/Developer/calternal-app/.worktrees/editor-diagnostics-3bbbBranch:
wave17/editor-diagnostics-3bbbFrozen candidate:
2c3d934ecd3eb8f4fa0b1a7848a7b7894ae7b38cBase:
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68Status: candidate submitted for exact merged review; source-only.
Applied commits:
532b69a6= reviewed #11 diagnostic5041add2; stable patch ID matches152d454f....2c3d934e= reviewed #9 guarded diagnostic932e17e1; stable patch ID matches436d8983....Net diff is exactly 67 insertions in three files:
BlockEditorView.swift,EditorImageGeometryTests.swift, andCodeBlockPresentationTests.swift.EditorImagePresentation.swift,EditorImageQuickLookController.swift,EditorImageControls.swift,bb186,NSLayoutManagerDelegate, andassumeIsolatedare absent. The branch is clean, merge base is exact3bbb, andgit diff --checkpasses. #11 instrumentation is nil-default and typed; #9 geometry collection is guarded at the draw call byCALTERNAL_CODE_DIAGNOSTIC=1; strict test assertions remain. No build, test runtime, GUI, install, or performance result is claimed./root/editor_polish_inventorynow owns exact merged interaction review before root integration/build.Reviewer:
/root/editor_polish_inventoryExact isolated candidate:
2c3d934ecd3eb8f4fa0b1a7848a7b7894ae7b38cBase:
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68Worktree:
.worktrees/editor-diagnostics-3bbbVerdict: SOURCE/INTEGRATION PASS — no P1–P3 findings.
The two integrated stable patch IDs exactly match reviewed donors
5041add2(#11) and932e17e1(#9). The #11 callback remains internal and nil by default; argument evaluation and its extra attachment hit lookup occur only when a test installs the callback. Its payload contains window/event/view geometry, click count, and attachment display range only—no source text, asset path, or URL. Existing exact-selection, modifier, count>=2, paired-click identity/revision/range/URL/time/distance, and panel assertions are unchanged.The #9 product diagnostic is gated by one lazily cached
CALTERNAL_CODE_DIAGNOSTIC == 1Boolean. When disabled, the draw path performs only that Boolean branch; container, fragment, gutter, and clip collection/string formatting/logging remain inside the enabled branch. Logged fields are numeric geometry only. Test additions are prints and do not remove, relax, or condition existing assertions.Net scope is exactly
BlockEditorView.swiftplus the two diagnostic test files; worktree andgit diff --checkare clean. Rejectedbb186files/content are absent from the delta, and the resulting image presentation contains noNSTextAttachmentViewProvider/rejected custom provider. No build, tests, GUI, or runtime diagnosis is claimed.Worker/role:
/root/block_drag_finish, isolated diagnostics integration handoff.Worktree:
/Users/kayg/Developer/calternal-app/.worktrees/editor-diagnostics-3bbbBranch:
wave17/editor-diagnostics-3bbbExact candidate:
2c3d934ecd3eb8f4fa0b1a7848a7b7894ae7b38cBase:
3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68Status: SOURCE REVIEW PASS, ready for root integration/build.
/root/editor_polish_inventoryreviewed the exact combined delta and found no P1-P3 issues. Stable patch IDs match reviewed5041add2(#11) and932e17e1(#9); the nil-default #11 callback exposes no source text or URLs; #9 numeric geometry work remains wholly behind the opt-in enabled guard; strict assertions are unchanged. Net files are onlyBlockEditorView.swiftand the two diagnostic tests.bb186and all #12 provider paths/content are absent. Branch is clean andgit diff --checkpasses. No compiler, runtime test, GUI, install, or performance claim was made by this integration task. Root owns cherry-pick, exact package compile, and VM diagnostic execution withCALTERNAL_CODE_DIAGNOSTIC=1for #9.Root integration status: desktop preview remains exact
3bbb28a6. Reviewer approved isolated diagnostics2c3d934ecdfor issues #9/#11; optimized package compile now running on agents@mbp, with rejected image provider absent. #5 exact8920c961hosted build-for-testing passed and runtime staged to VM; tests not yet executed. #12 sixth SDK provider probe failed optimized compilation at assumeIsolated capture despite narrow Sendable bridge; no product fix accepted. Source author and reviewer are investigating next bounded alternative. VM QA owns native Space routing and styled #4/#6 checks. All runtime and performance gates remain explicit; no issue closed based on source review alone.Root independently verified exact
2c3d934ecdoptimized package compilation: status passed, compiler return 0, 32.857 seconds, testsExecuted=false. Build log hash verified b39b27d1f0fcad8c2d68459e1a5cc263bbdb3939efe7b76b89ceae2d8e0e6870. Runtime manifest e3473f8962207ffa40d2c3c15b61562271cd26858dfd018df6d7bcd7ed67137d. /root/title_completion owns immutable VM staging; focused #9/#11 diagnostic runtime follows #5 title controls owned by /root/title_controls_runtime_qa. No renderer or gesture pass claimed until actual runtime results.Worker
/root/title_completion— transfer-only handoff for the combined #9/#11 diagnostics candidate is complete; no test or app process was launched.2c3d934ecd3eb8f4fa0b1a7848a7b7894ae7b38c/Users/agents/Developer/BuildOnly/package-tests-d40/Evidence/package-tests/20260913T175355Z-central-2c3d934e-combined-2c4f7229compileOnly: true,swiftTestInvoked: false,xctestInvoked: false, andtestsExecuted: false.result.jsonSHA-256:23f043d0801b3c5a703bf15cdb0d07b1fd8566082fe00ebaa1944a166847a2e8b39b27d1f0fcad8c2d68459e1a5cc263bbdb3939efe7b76b89ceae2d8e0e6870d133172c779af8d7601128d69a7e7b580f7e57448817e9c8120be162db9ca1b37cca4f89cf263ef11799b19e834f391041b310220d20cb56726899643510ca8ce3473f8962207ffa40d2c3c15b61562271cd26858dfd018df6d7bcd7ed67137d70982baff04206c2ae054e8a8d09ce70af50a509594e3d09dd96746433ca00c2I archived the immutable runtime on
agents@mbpat/Users/agents/Developer/BuildOnly/package-tests-d40/Evidence/package-tests/20260913T175355Z-central-2c3d934e-combined-2c4f7229/vm-xctest-runtime-2c3d934e-2c4f7229.tar. It is 85,671,936 bytes, mode0444, SHA-256911a13164ae96d8ab0e7a60ca20799637c868af5fe7848fc553bf1b5f117069a.The archive was transferred to a new VM
.partial, fully hashed, atomically renamed, and made immutable at/Users/lume/CalternalQA/2c3d934e-diagnostics-runtime/vm-xctest-runtime-2c3d934e-2c4f7229.tar. The VM hash is exactly911a13164ae96d8ab0e7a60ca20799637c868af5fe7848fc553bf1b5f117069a, mode0444, size 85,671,936 bytes; no partial remains.Runtime behavior remains unverified.
/root/image_preview_qaowns the VM and has received the exact path and hashes. This is compile/staging evidence only and does not change issue acceptance state.QA /
/root/title_controls_runtime_qastarts the next bounded VM-only diagnostics runtime on exact2c3d934efor #9 and #11 after publishing #5 results.Scope: verify the staged archive/hash closure, run
CalternalEditorTests.CodeBlockPresentationTestswithCALTERNAL_CODE_DIAGNOSTIC=1, and run exact mounted-image selectorCalternalEditorTests.EditorImageGeometryTests/testMountedEditorHitsExactInlineImageFramesAcrossFragments. Preserve complete diagnostic/geometry traces and test counts under/tmp/qa-runs; no source edits, builds, desktop installation, or user acceptance. Next action: publish VM outcome and trace location for source owners.QA /
/root/title_controls_runtime_qa— VM diagnostics runtime for exact2c3d934eis complete; both requested executed gates failed without watchdog timeouts.Provenance matched before execution: archive
/Users/lume/CalternalQA/2c3d934e-diagnostics-runtime/vm-xctest-runtime-2c3d934e-2c4f7229.tarSHA-256911a13164ae96d8ab0e7a60ca20799637c868af5fe7848fc553bf1b5f117069a; manifeste3473f8962207ffa40d2c3c15b61562271cd26858dfd018df6d7bcd7ed67137d;CalternalPackageTestsbinary70982baff04206c2ae054e8a8d09ce70af50a509594e3d09dd96746433ca00c2. VM run root:/private/tmp/qa-2c3d-diagnostics-20260913-232653. Local evidence root:/tmp/qa-runs/20260913-232653-title-controls-8920/.Test matrix and command outcomes:
CALTERNAL_CODE_DIAGNOSTIC=1 ... xctest -XCTest CalternalEditorTests.CodeBlockPresentationTests CalternalPackageTests.xctesttestMountedCodePainterWrapsAndPaintsSurfacefails one missing visible-gutter-ink assertion plus six width assertions. Trace records container/padding, 3 fragment frames/surfaces, logical gutter ranges/baselines, then resized frames/surfaces.... xctest -XCTest CalternalEditorTests.EditorImageGeometryTests/testMountedEditorHitsExactInlineImageFramesAcrossFragments CalternalPackageTests.xctest{47,1}is not armed, selection remains{138,0}, expected dispatch is nil; second expected{130,1}dispatch also absent. Gesture trace: double-click at view point(95.79541015625,140.0)yieldstargetRange:nil; later single click at(217.79541015625,140.0)has hover target{47,1}.Full command/provenance/summary:
24-2c3d-vm-console.txt. Complete selector logs and status records:25-2c3d-full-logs.txt. The original full VM logs remain under the VM run root above. No source data appears in the diagnostics retained here; traces are geometry/range/value records. No product edits, desktop launch, UI screenshot review, performance test, or user acceptance occurred.Required validation: code owner must repair the mounted gutter/width model and rerun the whole
CodeBlockPresentationTestsclass withCALTERNAL_CODE_DIAGNOSTIC=1to 5 executed / 0 failure. Image owner must repair the target-range/coordinate route and rerun the exact mounted selector to 1 executed / 0 failure, then run the required native Quick Look retarget/Escape/close checks. The current VM run is direct package XCTest runtime evidence only.Recommendation: FAIL / #9 and #11 runtime acceptance blocked. Next owners:
/root/code_block_polishfor code geometry trace,/root/image_preview_native_repairfor mounted-image trace. Retain fixture and direct VM package runner; no production-cause claim is made beyond the observed assertions.Reviewer:
/root/editor_polish_inventoryExact candidate:
82ae644323c8061fc717bd85ac182bbb20934ad1Parent:
abf3bf2d7b4f6a16567dba955eeef0e39cf25639Worktree:
.worktrees/image-preview-dispatch-repairVerdict: SOURCE REJECT — one P2 finding.
Sources/CalternalEditor/BlockEditorView.swift:1273,1289: disabled diagnostics still collect every attachment frame.diagnosticFramesis created unconditionally andappend(attachmentFrame)runs for every attachment examined by every productionimagePreview(atViewPoint:)call, even whenonImagePreviewGestureDiagnostic == nil. A nonempty append allocates/grows array storage and retains geometry solely for a diagnostic that will never be emitted. This violates the explicit nil-default/zero-extra-expensive-work contract on a mouse gesture path; the existing diagnostics avoided this because optional closure arguments are not evaluated when nil. Fix: snapshot the optional callback before enumeration, create an explicitly typed[NSRect]?only when that snapshot is nonnil, append through optional chaining, and emit.layoutProbeonly through the same snapshot. Keep fragment/range computation needed by the real hit test unchanged.No other finding: the new payload is numeric view/fragment/attachment geometry only, with no Markdown, path, or URL; existing tests/assertions are unchanged;
git diff --checkpasses. No build/GUI was run. The author had not posted the candidate handoff on #11 when reviewed, so I requested that required issue update/readback separately.Issue #11 diagnostic candidate update
Candidate:
a5075e5a4dWorktree: /Users/kayg/Developer/calternal-app/.worktrees/image-preview-dispatch-repair
Branch: wave16/image-preview-dispatch-repair
This includes the reviewed
82ae6443event-time Quick Look geometry diagnostics plus a small P2 repair: attachment-frame arrays are allocated and populated only when the optional diagnostic callback is installed. The seam remains default-nil and records no source text or URLs. Existing exact gesture assertions are unchanged.This is source-only evidence. No local build, GUI run, or runtime acceptance is claimed. Root/build QA should rerun issue #11 and inspect the received event point, converted view point, realized fragment range/origin, and attachment frames.
The earlier gh posting attempt failed because the local gh client was unauthenticated; no duplicate issue comment is intended from that attempt.
Reviewer:
/root/editor_polish_inventoryExact cumulative candidate:
a5075e5a4d9ca6b78c3ff81974cb3e27a329ddc7Parent reviewed diagnostic seam:
abf3bf2d7b4f6a16567dba955eeef0e39cf25639Worktree:
.worktrees/image-preview-dispatch-repairVerdict: SOURCE PASS — no P1–P3 findings.
The prior P2 is resolved. With the callback nil,
diagnosticEnabledis false, the explicitly typed optional frame array is nil, optionalappendperforms no allocation or collection, and the layout-probe callback block is skipped. The real fragment/hit-test work is unchanged and still required by normal image targeting. When enabled, the payload remains numeric event/view/fragment/attachment geometry only, with no Markdown text, path, or URL. No test or gesture assertion changed. The sole tracked product delta is the diagnostic seam; the untracked author issue-comment file is not source.git diff --checkpasses. No build/GUI is claimed.Worker
/root/block_drag_finishintermediate integration status: reviewed #11 follow-ups82ae6443anda5075e5aare now adapted onto the 3bbb diagnostics branch atd46b02e9(parent remains the passed2c3d934e). Conflict resolution preserves 3bbb's currentImageInteractionTargetconstruction—including attachment, frame, viewport state, and existing preview-URL resolution—while adding the event-timelayoutProbe. Frame collection is an optional typed array created only when the callback is installed; nil-default production targeting does not allocate or append diagnostic frames. Net2c3d934e..d46b02e9is 13 insertions inBlockEditorView.swift; branch clean and diff-check passes./root/editor_polish_inventoryis scrutinizing this target-type adaptation now. Final combined review/build handoff waits for the bounded #9 coordinate-assertion follow-up so root runs one build. No build/runtime/GUI claim.Final combined diagnostics candidate ready for interaction review
/root/block_drag_finish/Users/kayg/Developer/calternal-app/.worktrees/editor-diagnostics-3bbbwave17/editor-diagnostics-3bbb3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68e7a45d7ce1c7302a1513f91745a0e865ff1a5d2cImageInteractionTarget.ccea08dc..ab06083d.cc576c5729724873fedb279b1314668e933b045a; the integrated and author-final test blobs are bothd8c55b84e1ef851bc471adbcf806048dc2befadb.BlockEditorView.swift,CodeBlockPresentationTests.swift, andEditorImageGeometryTests.swiftonly.NSLayoutManagerDelegate/assumeIsolatedchanges, and #12 product repair.git diff --checkpasses; no build or GUI run.5a18.Reviewer
/root/editor_polish_inventoryexact source verdict for combined candidatee7a45d7ce1c7302a1513f91745a0e865ff1a5d2cvs3bbb28a6fcf7bac1dae310bd07ea8e7a0ace6b68: PASS, no P1-P3 findings.The cumulative #11 conflict adaptation correctly instruments the current richer
ImageInteractionTarget: attachment identity, native frame, viewport state, source token used by the image toolbar, and conditional preview URL resolution remain unchanged.layoutProberecords the exactframeForTextAttachmentrectangles inspected. With a nil callback, the optional frame array is never allocated and optional append is a no-op. Payloads contain only event/geometry/range data—no Markdown source, asset string, or URL. Existing gesture assertions are unchanged. Source review only; no build or GUI run was performed.Central integration candidate — final review pending
/root/block_drag_finish/Users/kayg/Developer/calternal-app/.worktrees/editor-overnight-combined/wave14/editor-overnight-combined5a18daf3e447120b2ace3caefce67bb3fd99322eda644b0467a96a9d74e199592b6a56f7e7f9c3182c3d934e..e7a45d7c: #11 event-time layout probe/allocation guard, #9 native painter diagnostics, and the final reviewer-passed endpoint test oracle.5041add2and932e17e1were not reapplied; #12 provider repair at5a18remains ancestral.BlockEditorView.swiftandCodeBlockPresentationTests.swift(127 additions, 9 deletions).d8c55b84e1ef851bc471adbcf806048dc2befadb; stable patch ID remainscc576c5729724873fedb279b1314668e933b045a.git diff --checkpasses. No build or GUI run.Reviewer
/root/editor_polish_inventoryexact central integration PASS, no P1-P3 findings:da644b0467a96a9d74e199592b6a56f7e7f9c318vs base5a18daf3e447120b2ace3caefce67bb3fd99322e.The net is limited to
BlockEditorView.swiftandCodeBlockPresentationTests.swift;git diff --checkis clean. Existing #12 provider/view implementation andEditorImageGeometryTests.swiftare blob-identical to the base. The #11 instrumentation remains adapted to the richerImageInteractionTarget, preserves toolbar/attachment/frame/viewport/URL behavior, and allocates no frame array when disabled. The #9 final mounted code test blob remains byte-identical to reviewedab06083d. No duplicate base diagnostic declarations were introduced. Source-only review; no build or GUI run.Final central diagnostics handoff — source PASS
/root/block_drag_finish/Users/kayg/Developer/calternal-app/.worktrees/editor-overnight-combined/wave14/editor-overnight-combined5a18daf3e447120b2ace3caefce67bb3fd99322eda644b0467a96a9d74e199592b6a56f7e7f9c318/root/editor_polish_inventorySources/CalternalEditor/BlockEditorView.swiftandTests/CalternalEditorTests/CodeBlockPresentationTests.swift; worktree clean andgit diff --checkpasses.EditorImagePresentation,EditorImageControlsTests, andEditorImageGeometryTestsblobs are unchanged from5a18. The richer image target/toolbar behavior and provider repair remain intact.ab06083dand retains strict fragment endpoint, relative surface/background color, resize, gutter, seam, empty-fence, and EOF assertions.Bedtime checkpoint requested by user: finish already active tasks, record results, then stop. No new repair round tonight. No launch or application interaction on kayg@mbp after locking. Build-only work remains agents@mbp; runtime/computer use remains Lume VM.
Frozen combined revision:
da644b0467. Exact source/integration review PASS; optimized package compile PASS (31.782 seconds), log hash independently verified. Final Release build/package in progress; desktop stays 3bbb until morning, no desktop launch/install overnight.#12 exact 5a18 controls: 10 tests executed, 0 failures, rc0. Parent capture delta0 vs provider delta1.8229637444019318 demonstrates native provider Fit/Fill pixels change. #12 product/test blobs unchanged in da644. Native composition/user acceptance remain open.
#9/#11 final diagnostics/test corrections source-reviewed and compiled in da644; final runtime rerun remains a morning follow-up. No code-block or Quick Look fix claim.
#5 exact 19b isolated hosted rename control exited139 after sandbox related-item warning. No matching new IPS. Config audit identifies missing production-equivalent fixture authorization and relocated XCTest runtime as competing hypotheses. Production rename task ownership unchanged; no speculative repair.
#2 remains user-accepted fixed. Other individual issue acceptance gaps remain in master tracker. All implementation/review/QA agents finished; only final Release packaging is active. Root will append artifact receipt and stop.
/root/title_completionfinal bedtime build handoff for exact central revisionda644b0467a96a9d74e199592b6a56f7e7f9c318(tree6b389118016bab48a226205956de13b15df21592). The reviewed #11 event-time attachment-frame diagnostic is included in a verified Release morning artifact, but its exact VM gesture/ownership diagnostic has not run.Release compilation on
agents@mbppassed in 62.508 seconds. Raw build evidence:/Users/agents/Developer/BuildOnly/calternal-preview-evidence/artifacts/20260913T183809Z-da644b0467a9-00031a65; executable SHA-2561edd96e29065fc70483b122e24552bc2bc5ef87d10c9efd916a55f9d2a81f4a2.Immutable morning package:
/Users/Shared/CalternalBuilds/da644b0467a9-00031a65/Calternal-da644b0467a9-Release-arm64.zip, SHA-256c781f08c7c20ce8f97eab389252f28df50f15b583730291ed3d256ebeacbbb2b. Fresh unpack strict codesign and byte-for-byte bundle comparison passed; archive receipt SHA-25608b029ef97af3c0898fe4270de73ac2b0b08c92acbf90b5f7ccdb1fc5e45a6f8.No VM test, desktop install, app launch, or GUI action was performed for this artifact. #11 remains open pending the exact
da644b04Quick Look/image targeting runtime evidence and user/performance acceptance.User requested latest build launch this morning. Root installed and launched exact
da644b0467at /Users/kayg/Applications/Calternal.app. Verified archive and executable hashes, strict codesign, normal Quit of old preview, rollback retained, vault text inventory unchanged during replacement. Fresh native AX confirms visible window and previous note with Style inspector restored. Install receipt .agents/desktop-install/da644b04/install-receipt.json. Image controls10/10 prior5a18 with unchanged relevant files; exact-final #9/#11 runtime, user UI/performance and title hosted environment remain open. Preview delivery only; no stable acceptance claim.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.
wave15/image-preview-ownership-repair—39915dabc31ffbc2298be53890181e66650090bdwave16/image-preview-dispatch-repair—a5075e5a4d9ca6b78c3ff81974cb3e27a329ddc7wave16/image-preview-integration—8af579cbae37dcbd797ce44d472188341d715d8fwave17/editor-diagnostics-3bbb—e7a45d7ce1c7302a1513f91745a0e865ff1a5d2cMaster #20 contains the resume instructions. No force push; dev remains
1d8f4adf.Baseline finding while verifying the block-editor branch (2026-09-14): on dev
1d8f4adf,Scripts/build-mbp.sh main test CalternalEditorTests.MarkdownBlockDocumentTestscrashes the xctest host withFatal error: Index out of rangeinsidetestRenderedImageCopyUsesExactSecondTokenAndPortablePayload; every other method in the class passes on dev. Not introduced by wave19 work; recorded here because it is the rendered-image clipboard path. Reproduce on agents@mbp with that filter.DropFinish / wave19/block-drop: confirmed a second pre-existing crash on 2026-09-15 while running the required MarkdownBlockDocumentTests gate.
testRenderedInlineImageCopyPreservesSemanticAltAndInlineAffinityfails identically on~/Developer/Worktrees/desktop-test: it copies U+FFFC instead of authored Markdown, has no portable payload, then fatals at XCTest unwrap (xctest signal 5). The first known baseline istestRenderedImageCopyUsesExactSecondTokenAndPortablePayload(same verification). Both are excluded only from the lane’s class-gate evidence; onto-block make-note/swap/nest, handle geometry, and caret/task tests remain exercised.Overnight (Main):
EventAttachmentDropTests— 8 sidebar-gesture drop cases (testFirstDropOntoIDLessEvent…, testDurableEventMoved…, testForeign*, testImage*, testLinkedNotePreserves…, testSameVaultNested…) fail identically on the pre-lane basea2788dcunder the hosted runner (12 failures on base, same set + none new on desktop-test). Pre-existing; not caused by tonight's lanes. Likely gesture-target revision/session identity mismatch in the hosted harness.Overnight (Main): found and fixed on desktop-test — selecting any ID-less attachment row from the sidebar (keyboard walk) raised the modal "The selected row is stale; refresh the space and try again":
makeAttachmentTabTargetpassedattachment.labelas the event title thatcopyAttachmentverifies. Regression testtestOpeningIDLessAttachmentRowInTabMintsIdentityInsteadOfReportingStaleRow(red pre-fix, green post-fix).