mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-09 08:59:40 +02:00
fix(input): image paste and dictation land in the session they started in
Both read activeSessionId at the END of an async gap, so switching tabs in between sent the input to the wrong session: - An image upload inserted its paths with sendInput(), which re-reads activeSessionId after the uploads finish. It now inserts into the session the batch was uploaded to, through the same durable queue. - Voice dictation read the target when the transcript arrived and again when the send button or the compose overlay's Send was pressed. The target is now captured in start() (via _focusedPane()), the local-echo overlay is only used when that target is the active session, and a target that closed meanwhile gets a toast instead of a 404. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -185,8 +185,12 @@ Object.assign(CodemanApp.prototype, {
|
||||
|
||||
const paths = results.filter(Boolean);
|
||||
if (paths.length > 0 && options.insert !== false) {
|
||||
// Insert all paths in one shot, space-separated, in selection order.
|
||||
await this.sendInput(paths.join(' '));
|
||||
// Insert all paths in one shot, space-separated, in selection order, into
|
||||
// the session the batch was uploaded TO. Not sendInput(): it re-reads
|
||||
// activeSessionId, and after the awaits above that is whatever tab the
|
||||
// user switched to mid-upload, so the paths landed in the wrong session.
|
||||
// Same delivery sendInput() uses (durable queue, useMux for the POST path).
|
||||
this._sendInputAsync(sessionId, paths.join(' '), { useMux: true });
|
||||
}
|
||||
|
||||
// Final status: successes, plus any failures / cap so nothing is silent.
|
||||
|
||||
Reference in New Issue
Block a user