merge(pi/main): integrate upstream changes through v0.31.1

Merged 53 commits from pi/main including:
- Export HTML rewrite with tree sidebar and /share command
- Hooks API enhancements (custom status, editor, session management)
- Edit diff preview before tool execution
- TUI fixes (Unicode format chars, OSC 8 hyperlinks, emoji optimization)
- Gemini CLI rate limit retry with server-provided delay
- Various bug fixes and documentation updates

Resolved conflicts by preserving Bun migration (spawn→Bun.spawn,
fs→Bun.file) while accepting upstream's new features and APIs.
This commit is contained in:
can1357
2026-01-02 13:52:12 +01:00
92 changed files with 6332 additions and 2520 deletions
@@ -7,21 +7,17 @@
import type { AssistantMessage } from "@mariozechner/pi-ai";
import { ProcessTerminal, TUI } from "@mariozechner/pi-tui";
import { readFileSync } from "fs";
import { dirname, join } from "path";
import { fileURLToPath } from "url";
import { join } from "path";
import { AssistantMessageComponent } from "../src/modes/interactive/components/assistant-message.js";
import { initTheme } from "../src/modes/interactive/theme/theme.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Initialize dark theme with full color support
process.env.COLORTERM = "truecolor";
initTheme("dark");
// Load the real fixture that caused the bug
const fixtureMessage: AssistantMessage = JSON.parse(
readFileSync(join(__dirname, "fixtures/assistant-message-with-thinking-code.json"), "utf-8"),
readFileSync(join(import.meta.dir, "fixtures/assistant-message-with-thinking-code.json"), "utf-8"),
);
// Extract thinking and text content