mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-10 09:19:42 +02:00
Merge pull request #270 from Ark0N/feat/readmymind-phase3-part1
Read My Mind phase 3 part 1: the modal grows up and reaches phones
This commit is contained in:
@@ -494,6 +494,7 @@ const KeyboardAccessoryBar = {
|
||||
<rect x="8" y="2" width="8" height="4" rx="1" ry="1"/>
|
||||
</svg>
|
||||
</button>
|
||||
<button class="accessory-btn accessory-btn-rmm" data-action="readmymind" title="Read My Mind: predict your next prompt">🧠</button>
|
||||
<button class="accessory-btn" data-action="esc" title="Escape">Esc</button>
|
||||
<button class="accessory-btn accessory-btn-dismiss" data-action="dismiss" title="Dismiss keyboard">
|
||||
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3">
|
||||
@@ -570,6 +571,7 @@ const KeyboardAccessoryBar = {
|
||||
</button>
|
||||
<button class="accessory-btn" data-action="pick-path" title="Insert a file or folder path">📁 Path</button>
|
||||
<button class="accessory-btn" data-action="clear-input" title="Clear the current unsent input">⌫ All</button>
|
||||
<button class="accessory-btn accessory-btn-rmm" data-action="readmymind" title="Read My Mind: predict your next prompt">🧠</button>
|
||||
<button class="accessory-btn" data-action="tab" title="Tab">Tab</button>
|
||||
<button class="accessory-btn" data-action="shift-tab" title="Shift+Tab">⇧Tab</button>
|
||||
<button class="accessory-btn" data-action="effort-max" title="/effort max">Max</button>
|
||||
@@ -594,6 +596,9 @@ const KeyboardAccessoryBar = {
|
||||
this.element = document.createElement('div');
|
||||
this.element.className = 'keyboard-accessory-bar';
|
||||
this.element.innerHTML = this._simpleButtons;
|
||||
// The 🧠 key is opt-in (`readMyMindEnabled`, synced): it ships in both
|
||||
// templates but stays display:none until the bar carries the marker class.
|
||||
this.syncReadMyMind();
|
||||
|
||||
// Add click handlers — preventDefault stops event from reaching terminal
|
||||
this.element.addEventListener('click', (e) => {
|
||||
@@ -784,6 +789,11 @@ const KeyboardAccessoryBar = {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'readmymind':
|
||||
// Opens the shared Read My Mind modal (readmymind-ui.js); the modal
|
||||
// takes focus, so deliberately NOT in the terminal-refocus set.
|
||||
app.openReadMyMind?.();
|
||||
break;
|
||||
case 'paste':
|
||||
this.pasteFromClipboard();
|
||||
break;
|
||||
@@ -829,6 +839,17 @@ const KeyboardAccessoryBar = {
|
||||
this._confirmAction = null;
|
||||
},
|
||||
|
||||
/** Reveal/hide the 🧠 key from the synced `readMyMindEnabled` setting.
|
||||
* The marker class lives on the BAR because setMode() rebuilds the buttons'
|
||||
* innerHTML on every layout switch (per-key state would be wiped). Called at
|
||||
* init and re-synced by applyHeaderVisibilitySettings() on every settings
|
||||
* apply, so a live toggle needs no reload. */
|
||||
syncReadMyMind() {
|
||||
if (!this.element) return;
|
||||
const enabled = typeof app !== 'undefined' && typeof app.readMyMindEnabled === 'function' && app.readMyMindEnabled();
|
||||
this.element.classList.toggle('rmm-enabled', enabled === true);
|
||||
},
|
||||
|
||||
/** Send a slash command to the active session.
|
||||
* Sends text and Enter separately so Ink processes them as distinct events. */
|
||||
sendCommand(command) {
|
||||
|
||||
Reference in New Issue
Block a user