gui: pass session cwd as plumb wdir for relative path resolution
Plumb messages now include the current session's cwd as wdir. Added sessionCwd() helper to ChatPane and ChatBlockDelegate. Updated plumber.plumb() to accept optional wdir parameter.
This commit is contained in:
parent
5add387cc8
commit
5bf29198ff
|
|
@ -253,7 +253,7 @@ Column {
|
|||
// B3: Plumb selection (no context menu)
|
||||
var sel = mainTextEdit.selectedText
|
||||
if (sel && sel.trim() !== "" && plumber.available()) {
|
||||
plumber.plumb(sel.trim())
|
||||
plumber.plumb(sel.trim(), sessionCwd())
|
||||
}
|
||||
mouse.accepted = true
|
||||
}
|
||||
|
|
@ -332,6 +332,13 @@ Column {
|
|||
return false
|
||||
}
|
||||
|
||||
// Get current session's working directory for plumb basedir
|
||||
function sessionCwd() {
|
||||
if (!ollie.activeSessionId) return ""
|
||||
var cfg = ollie.readSessionConfig(ollie.activeSessionId)
|
||||
return cfg ? (cfg.cwd || "") : ""
|
||||
}
|
||||
|
||||
// Text segment component
|
||||
Component {
|
||||
id: textComponent
|
||||
|
|
@ -392,7 +399,7 @@ Column {
|
|||
// B3: Plumb selection (no context menu)
|
||||
var sel = textEdit.selectedText
|
||||
if (sel && sel.trim() !== "" && plumber.available()) {
|
||||
plumber.plumb(sel.trim())
|
||||
plumber.plumb(sel.trim(), sessionCwd())
|
||||
}
|
||||
mouse.accepted = true
|
||||
}
|
||||
|
|
@ -501,7 +508,7 @@ Column {
|
|||
// B3: Plumb selection (no context menu)
|
||||
var sel = sourceEdit.selectedText
|
||||
if (sel && sel.trim() !== "" && plumber.available()) {
|
||||
plumber.plumb(sel.trim())
|
||||
plumber.plumb(sel.trim(), sessionCwd())
|
||||
}
|
||||
mouse.accepted = true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,13 @@ Item {
|
|||
scrollToBottom()
|
||||
}
|
||||
|
||||
// Get current session's working directory for plumb basedir
|
||||
function sessionCwd() {
|
||||
if (!ollie.activeSessionId) return ""
|
||||
var cfg = ollie.readSessionConfig(ollie.activeSessionId)
|
||||
return cfg ? (cfg.cwd || "") : ""
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
loadChat()
|
||||
scrollToBottom()
|
||||
|
|
@ -499,7 +506,7 @@ Item {
|
|||
// B3: Plumb selection (no context menu)
|
||||
var sel = promptInput.selectedText
|
||||
if (sel && sel.trim() !== "" && plumber.available()) {
|
||||
plumber.plumb(sel.trim())
|
||||
plumber.plumb(sel.trim(), sessionCwd())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ public:
|
|||
Q_INVOKABLE bool available() const;
|
||||
|
||||
// Legacy compatibility aliases
|
||||
Q_INVOKABLE void plumb(const QString &text) { send(text); }
|
||||
Q_INVOKABLE void plumbTo(const QString &text, const QString &dst) { sendTo(text, dst); }
|
||||
Q_INVOKABLE void plumb(const QString &text, const QString &wdir = QString()) { send(text, wdir); }
|
||||
Q_INVOKABLE void plumbTo(const QString &text, const QString &dst, const QString &wdir = QString()) { sendTo(text, dst, wdir); }
|
||||
|
||||
/*!
|
||||
* Start the edit-port reader thread. Safe to call once; further calls are
|
||||
|
|
|
|||
Loading…
Reference in New Issue