Commit Graph

35 Commits

  • Fix lockstep versioning and improve documentation
    - Sync all packages to version 0.7.7
    - Rewrite sync-versions.js to handle ALL inter-package dependencies automatically
    - Fix web-ui dependency on pi-ai (was 0.6.0, now 0.7.7)
    - Move agent fix changelog entry to coding-agent CHANGELOG
    - Remove redundant agent CHANGELOG.md
    - Improve README.md with clearer lockstep versioning docs
    - Add /changelog command to display full changelog in TUI (newest last)
    - Fix changelog description (not a scrollable viewer, just displays in chat)
    - Update CHANGELOG for 0.7.7 release
  • Fix Lit dependency duplication and update mini-lit to 0.2.0
    - Move lit from dependencies to peerDependencies in web-ui to prevent multiple Lit instances being loaded
    - Update mini-lit from 0.1.8/0.1.10 to 0.2.0 in root package.json and web-ui/package.json
    - Install @tailwindcss/vite in web-ui/example
    - Run biome formatting fixes across codebase
    
    This resolves HMR custom element re-registration errors caused by duplicate Lit registries.
  • Handle FinishReason.NO_IMAGE and fix optional chaining
    - Add NO_IMAGE to error finish reasons in Google provider
    - Fix non-null assertion after optional chaining in Anthropic provider
    - Migrate biome config to 2.3.5
    - Ignore Tailwind CSS file from biome checks
    - Bump all packages to version 0.6.0
  • Clean up TUI package and refactor component structure
    - Remove old TUI implementation and components (LoadingAnimation, MarkdownComponent, TextComponent, TextEditor, WhitespaceComponent)
    - Rename components-new to components with new API (Loader, Markdown, Text, Editor, Spacer)
    - Move Text and Input components to separate files in src/components/
    - Add render caching to Text component (similar to Markdown)
    - Add proper ANSI code handling in Text component using stripVTControlCharacters
    - Update coding-agent to use new TUI API (requires ProcessTerminal, uses custom Editor subclass for key handling)
    - Remove old test files, keep only chat-simple.ts and virtual-terminal.ts
    - Update README.md with new minimal API documentation
    - Switch from tsc to tsgo for type checking
    - Update package dependencies across monorepo
  • Add ollama dependency and dialog backdrop blur
    - Add ollama package to web-ui dependencies for ModelSelector
    - Add backdrop blur to SettingsDialog (bg-black/50 backdrop-blur-sm)
    - Update mini-lit to 0.1.9 for backdropClassName prop support
    - Fix TypeScript errors in ModelSelector (ollama import, parameter types)
    - Add backward compatibility methods to SessionsStore (saveSession, loadSession, getLatestSessionId)
  • Rename ChromeStorageBackend to WebExtensionStorageBackend for cross-browser support
    - Rename chrome-storage-backend.ts to web-extension-storage-backend.ts
    - Update to use globalThis.browser || globalThis.chrome for Firefox/Chrome compatibility
    - Export both names for backward compatibility
    - Fix tsc --preserveWatchOutput in web-ui dev script to prevent console clearing
    
    This fixes the "browser is not defined" error in Chrome extensions.
  • Make mini-lit a peer dependency in pi-web-ui
    - Move mini-lit from dependencies to peerDependencies
    - Keep in devDependencies for development
    - Prevents bundlers from including mini-lit when consuming pi-web-ui
    - Consumer (sitegeist) provides mini-lit, esbuild bundles it once
    - Fixes duplicate mini-lit bundling issue permanently
  • Refactor agent architecture and add session storage
    Major architectural improvements:
    - Renamed AgentSession → Agent (state/ → agent/)
    - Removed id field from AgentState
    - Fixed transport abstraction to pass messages directly instead of using callbacks
    - Eliminated circular dependencies in transport creation
    
    Transport changes:
    - Changed signature: run(messages, userMessage, config, signal)
    - Removed getMessages callback from ProviderTransport and AppTransport
    - Transports now filter attachments internally
    
    Session storage:
    - Added SessionRepository with IndexedDB backend
    - Auto-save sessions after first exchange
    - Auto-generate titles from first user message
    - Session list dialog with search and delete
    - Persistent storage permission dialog
    - Browser extension now auto-loads last session
    
    UI improvements:
    - ChatPanel creates single AgentInterface instance in setAgent()
    - Added drag & drop file upload to MessageEditor
    - Fixed artifacts panel auto-opening on session load
    - Added "Drop files here" i18n strings
    - Changed "Continue Without Saving" → "Continue Anyway"
    
    Web example:
    - Complete rewrite of main.ts with clean architecture
    - Added check script to package.json
    - Session management with URL state
    - Editable session titles
    
    Browser extension:
    - Added full session storage support
    - History and new session buttons
    - Auto-load most recent session on open
    - Session titles in header
  • Add Anthropic prompt caching, pluggable storage, and CORS proxy support
    Storage Architecture:
    - New pluggable storage system with backends (LocalStorage, ChromeStorage, IndexedDB)
    - SettingsRepository for app settings (proxy config, etc.)
    - ProviderKeysRepository for API key management
    - AppStorage with global accessors (getAppStorage, setAppStorage, initAppStorage)
    
    Transport Refactoring:
    - Renamed DirectTransport → ProviderTransport (calls LLM providers with optional CORS proxy)
    - Renamed ProxyTransport → AppTransport (uses app server with user auth)
    - Updated TransportMode: "direct" → "provider", "proxy" → "app"
    
    CORS Proxy Integration:
    - ProviderTransport checks proxy.enabled/proxy.url from storage
    - When enabled, modifies model baseUrl to route through proxy: {proxyUrl}/?url={originalBaseUrl}
    - ProviderKeyInput test function also honors proxy settings
    - Settings dialog with Proxy tab (Switch toggle, URL input, explanatory description)
    
    Anthropic Prompt Caching:
    - System prompt cached with cache_control markers (both OAuth and regular API keys)
    - Last user message cached to cache conversation history
    - Saves 90% on input tokens for cached content (10x cost reduction)
    
    Settings Dialog Improvements:
    - Configurable tab system with SettingsTab base class
    - ApiKeysTab and ProxyTab as custom elements
    - Switch toggle for proxy enable (instead of Checkbox)
    - Explanatory paragraphs for each tab
    - ApiKeyPromptDialog reuses ProviderKeyInput component
    
    Removed:
    - Deprecated ApiKeysDialog (replaced by ProviderKeyInput in SettingsDialog)
    - Old storage-adapter and key-store (replaced by new storage architecture)