@bismawy/pi-vision-watcher 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/vision-model-selector.ts +19 -20
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bismawy/pi-vision-watcher",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Give text-only pi models vision — describe images with a vision model you pick via an interactive picker, then hand off the text description to non-vision models",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "bismawy",
|
|
@@ -42,7 +42,6 @@ export const MAX_FALLBACKS = 3;
|
|
|
42
42
|
const FALLBACK_KEY = Key.ctrl("q");
|
|
43
43
|
const FALLBACK_KEY_HINT = "ctrl+q";
|
|
44
44
|
const RESET_FALLBACKS_KEY = Key.ctrlShift("q");
|
|
45
|
-
const RESET_FALLBACKS_KEY_HINT = "ctrl+shift+q";
|
|
46
45
|
|
|
47
46
|
/** Provider ids that don't title-case cleanly. Everything else falls back to
|
|
48
47
|
* word-capitalisation (`custom-openrouter-ai` → "Custom Openrouter AI"). */
|
|
@@ -172,7 +171,6 @@ export class VisionModelSelectorComponent implements Component {
|
|
|
172
171
|
render(width: number): string[] {
|
|
173
172
|
const lines: string[] = [];
|
|
174
173
|
lines.push(...new DynamicBorder((s) => this.theme.fg("accent", s)).render(width));
|
|
175
|
-
lines.push("");
|
|
176
174
|
lines.push(
|
|
177
175
|
truncateToWidth(
|
|
178
176
|
this.theme.fg("accent", this.theme.bold("Vision Watcher")),
|
|
@@ -339,24 +337,25 @@ export class VisionModelSelectorComponent implements Component {
|
|
|
339
337
|
|
|
340
338
|
private getFooterText(): string {
|
|
341
339
|
const totalCount = this.allItems.length - 1; // exclude the None row
|
|
342
|
-
const
|
|
343
|
-
? `${this.filteredItems.length - 1} matches
|
|
344
|
-
:
|
|
345
|
-
|
|
346
|
-
//
|
|
347
|
-
//
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
"
|
|
354
|
-
"
|
|
355
|
-
"
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
340
|
+
const count = this.searchInput.getValue()
|
|
341
|
+
? `${this.filteredItems.length - 1} matches`
|
|
342
|
+
: `${totalCount} models`;
|
|
343
|
+
|
|
344
|
+
// One legend line: the count carries the accent colour so it is the first
|
|
345
|
+
// thing the eye lands on, while the keys stay dim so they do not compete
|
|
346
|
+
// with the picker itself. ctrl+a toggles the async clipboard handoff; it
|
|
347
|
+
// is deliberately left out so this line stays readable at 80 columns.
|
|
348
|
+
const confirm = keyText("tui.select.confirm");
|
|
349
|
+
const legend = [
|
|
350
|
+
`[${confirm.charAt(0).toUpperCase()}${confirm.slice(1)}] Done`,
|
|
351
|
+
"[Space] Vision",
|
|
352
|
+
"[Ctrl+q] Fallback",
|
|
353
|
+
"[Ctrl+Shift+q] Reset",
|
|
354
|
+
"[Ctrl+t] Think",
|
|
355
|
+
"[Esc] Cancel",
|
|
356
|
+
].join(" ");
|
|
357
|
+
|
|
358
|
+
return `${this.theme.fg("dim", " ")}${this.theme.fg("accent", count)}${this.theme.fg("dim", ` · ${legend}`)}`;
|
|
360
359
|
}
|
|
361
360
|
|
|
362
361
|
private clearFallbacks(): void {
|