fix(chat): steer button refresh, mixed-drag notice, reference cleanup - #37
Merged
Conversation
- Re-render the send queue when isStreaming flips in either direction so the Steer action tracks the live turn: rows rendered during the idle gap after process() kept losing the button once the next queued turn started streaming, and plan-approval exits left stale buttons behind - Mixed vault drags (notes plus images/other files) are claimed wholesale, so show a notice counting the ignored non-note items instead of dropping them silently; collectDragged now reports both references and the ignored count - Clear tracked composer references at conversation boundaries (new/loaded) so the registry no longer accumulates phantom entries - Document the dormant user_message_start/assistant_message_start contract: steering splices locally and never echoes through it; a future producer must register expected echoes first Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
Vault file-explorer drags carry their payload in app.dragManager, not dataTransfer.files, so ImageContextManager (which only reads OS-level file drops) never saw them: dragging a vault image into the composer gave no overlay feedback and the default drop action pasted the raw obsidian:// URI into the input. - VaultDropController now classifies dragged TFiles into notes/folders, images, and unsupported; images are claimed (overlay + preventDefault) and routed through a new onDropImages option - tab.ts wires onDropImages to ImageContextManager.attachImageBuffer, which reads the vault bytes and mirrors the paste pipeline (preview chip, size limit, image bubble on send) - Mixed drags combine mentions and attachments; only truly unsupported types count toward the ignored notice, and the drop overlay copy now mentions images in all locales Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
Per product direction, vault image drags should not attach with a preview chip; they behave like any other droppable file: the image is inserted as an @path mention token (chipified in the composer and sent bubbles) instead of being routed to the image attachment pipeline. - collectDragged accepts image-extension TFiles as 'file' references - Remove the onDropImages option and ImageContextManager.attachImageBuffer (attachment preview stays exclusive to paste / OS-level image drops) Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
isStreamingflips in either direction. Rows rendered during the idle gap afterprocess()lost the Steer action once the next queued turn started streaming, and plan-approval exits (revise path) left stale buttons behind.app.dragManager, notdataTransfer.files, so image drags previously got no overlay feedback and the default drop action pasted the rawobsidian://URI into the composer. Images are now accepted as regularfilereferences: dropped as@pathmention tokens (chipified, deduped), no attachment preview. Attachment previews stay exclusive to paste / OS-level image drops.composerReferencesis cleared at conversation boundaries (new/loaded) so the registry no longer accumulates phantom entries.user_message_start/assistant_message_startboundary chunks currently have no producer; a future producer must register pending echoes first to avoid duplicate bubbles.Verification
npm run typechecknpm run lintnpm run test(3411 tests)npm run buildnpm run release:checknpm run audit:prod(0 vulnerabilities)@pathchip, no URI paste, dedupes on re-dropSafety
CHANGELOG.md