diff --git a/package-lock.json b/package-lock.json index 8df9ae0a..98a047d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6403,11 +6403,11 @@ }, "packages/agent": { "name": "@mariozechner/pi-agent-core", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1" + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2" }, "devDependencies": { "@types/node": "^24.3.0", @@ -6437,7 +6437,7 @@ }, "packages/ai": { "name": "@mariozechner/pi-ai", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.71.2", @@ -6479,12 +6479,12 @@ }, "packages/coding-agent": { "name": "@mariozechner/pi-coding-agent", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.25.1", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", "diff": "^8.0.2", @@ -6524,13 +6524,13 @@ }, "packages/mom": { "name": "@mariozechner/pi-mom", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.25.1", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-coding-agent": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-coding-agent": "^0.25.2", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", @@ -6569,10 +6569,10 @@ }, "packages/pods": { "name": "@mariozechner/pi", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", "chalk": "^5.5.0" }, "bin": { @@ -6585,7 +6585,7 @@ }, "packages/proxy": { "name": "@mariozechner/pi-proxy", - "version": "0.25.1", + "version": "0.25.2", "dependencies": { "@hono/node-server": "^1.14.0", "hono": "^4.6.16" @@ -6601,7 +6601,7 @@ }, "packages/tui": { "name": "@mariozechner/pi-tui", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { "@types/mime-types": "^2.1.4", @@ -6645,12 +6645,12 @@ }, "packages/web-ui": { "name": "@mariozechner/pi-web-ui", - "version": "0.25.1", + "version": "0.25.2", "license": "MIT", "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0", @@ -6671,7 +6671,7 @@ }, "packages/web-ui/example": { "name": "pi-web-ui-example", - "version": "1.13.1", + "version": "1.13.2", "dependencies": { "@mariozechner/mini-lit": "^0.2.0", "@mariozechner/pi-ai": "file:../../ai", diff --git a/packages/agent/package.json b/packages/agent/package.json index 2685a21f..2e3406fd 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-agent-core", - "version": "0.25.1", + "version": "0.25.2", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -18,8 +18,8 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1" + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2" }, "keywords": [ "ai", diff --git a/packages/ai/package.json b/packages/ai/package.json index 0f18382a..e0b7c56b 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-ai", - "version": "0.25.1", + "version": "0.25.2", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", "main": "./dist/index.js", diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index de0b9138..47b461ea 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +## [0.25.2] - 2025-12-21 + +### Fixed + +- **Image shifting in tool output**: Fixed an issue where images in tool output would shift down (due to accumulating spacers) each time the tool output was expanded or collapsed via Ctrl+O. + ## [0.25.1] - 2025-12-21 ### Fixed diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 985ebca1..2c66255d 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-coding-agent", - "version": "0.25.1", + "version": "0.25.2", "description": "Coding agent CLI with read, bash, edit, write tools and session management", "type": "module", "piConfig": { @@ -39,9 +39,9 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.25.1", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", "diff": "^8.0.2", diff --git a/packages/coding-agent/src/modes/interactive/components/tool-execution.ts b/packages/coding-agent/src/modes/interactive/components/tool-execution.ts index 98dec495..4de9433c 100644 --- a/packages/coding-agent/src/modes/interactive/components/tool-execution.ts +++ b/packages/coding-agent/src/modes/interactive/components/tool-execution.ts @@ -44,6 +44,7 @@ export class ToolExecutionComponent extends Container { private contentBox?: Box; // Only used for custom tools private contentText: Text; // For built-in tools (with its own padding/bg) private imageComponents: Image[] = []; + private imageSpacers: Spacer[] = []; private toolName: string; private args: any; private expanded = false; @@ -173,6 +174,10 @@ export class ToolExecutionComponent extends Container { this.removeChild(img); } this.imageComponents = []; + for (const spacer of this.imageSpacers) { + this.removeChild(spacer); + } + this.imageSpacers = []; if (this.result) { const imageBlocks = this.result.content?.filter((c: any) => c.type === "image") || []; @@ -180,7 +185,9 @@ export class ToolExecutionComponent extends Container { for (const img of imageBlocks) { if (caps.images && this.showImages && img.data && img.mimeType) { - this.addChild(new Spacer(1)); + const spacer = new Spacer(1); + this.addChild(spacer); + this.imageSpacers.push(spacer); const imageComponent = new Image( img.data, img.mimeType, diff --git a/packages/mom/package.json b/packages/mom/package.json index e2646340..0289a78c 100644 --- a/packages/mom/package.json +++ b/packages/mom/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-mom", - "version": "0.25.1", + "version": "0.25.2", "description": "Slack bot that delegates messages to the pi coding agent", "type": "module", "bin": { @@ -21,9 +21,9 @@ }, "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.25.1", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-coding-agent": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-coding-agent": "^0.25.2", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", diff --git a/packages/pods/package.json b/packages/pods/package.json index b40fcc15..2d75102b 100644 --- a/packages/pods/package.json +++ b/packages/pods/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi", - "version": "0.25.1", + "version": "0.25.2", "description": "CLI tool for managing vLLM deployments on GPU pods", "type": "module", "bin": { @@ -34,7 +34,7 @@ "node": ">=20.0.0" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.25.1", + "@mariozechner/pi-agent-core": "^0.25.2", "chalk": "^5.5.0" }, "devDependencies": {} diff --git a/packages/proxy/package.json b/packages/proxy/package.json index cc815602..8708e99a 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-proxy", - "version": "0.25.1", + "version": "0.25.2", "type": "module", "description": "CORS and authentication proxy for pi-ai", "main": "dist/index.js", diff --git a/packages/tui/package.json b/packages/tui/package.json index 75420d8b..7895665d 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-tui", - "version": "0.25.1", + "version": "0.25.2", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js", diff --git a/packages/web-ui/example/package.json b/packages/web-ui/example/package.json index 2b71ee71..59677910 100644 --- a/packages/web-ui/example/package.json +++ b/packages/web-ui/example/package.json @@ -1,6 +1,6 @@ { "name": "pi-web-ui-example", - "version": "1.13.1", + "version": "1.13.2", "private": true, "type": "module", "scripts": { diff --git a/packages/web-ui/package.json b/packages/web-ui/package.json index 3336d65d..a566277f 100644 --- a/packages/web-ui/package.json +++ b/packages/web-ui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-web-ui", - "version": "0.25.1", + "version": "0.25.2", "description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai", "type": "module", "main": "dist/index.js", @@ -18,8 +18,8 @@ }, "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.25.1", - "@mariozechner/pi-tui": "^0.25.1", + "@mariozechner/pi-ai": "^0.25.2", + "@mariozechner/pi-tui": "^0.25.2", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0",