Commit Graph

11 Commits

Author SHA1 Message Date
6868027a1c feat: add model-specific prompts and custom model creation
Adds two related features for enhanced model customization:

**Model-Specific System Prompts:**
- Assign prompts to models via Settings > Model Prompts
- Capability-based default prompts (vision, tools, thinking, code)
- Auto-select appropriate prompt when switching models in chat
- Per-model prompt mappings stored in IndexedDB

**Custom Ollama Model Creation:**
- Create custom models with embedded system prompts via Models page
- Edit system prompts of existing custom models
- Streaming progress during model creation
- Visual "Custom" badge for models with embedded prompts
- Backend handler for Ollama /api/create endpoint

New files:
- ModelEditorDialog.svelte: Create/edit dialog for custom models
- model-creation.svelte.ts: State management for model operations
- model-prompt-mappings.svelte.ts: Model-to-prompt mapping store
- model-info-service.ts: Fetches and caches model info from Ollama
- modelfile-parser.ts: Parses system prompts from Modelfiles
2026-01-03 21:12:49 +01:00
802db229a6 feat: add model filters and last updated display
Some checks failed
Create Release / release (push) Has been cancelled
- Add size filter (≤3B, 4-13B, 14-70B, >70B) based on model tags
- Add model family filter dropdown with dynamic family list
- Display last updated date on model cards (scraped from ollama.com)
- Add /api/v1/models/remote/families endpoint
- Convert relative time strings ("2 weeks ago") to timestamps during sync
2026-01-02 21:54:50 +01:00
862f47c46e feat(tools): enhanced custom tool creation with CodeMirror, Python support, and testing
Some checks failed
Create Release / release (push) Has been cancelled
- Add CodeMirror editor with syntax highlighting for JavaScript and Python
- Add 8 starter templates (4 JS, 4 Python) for common tool patterns
- Add inline documentation panel with language-specific guidance
- Add tool testing UI to run tools with sample inputs before saving
- Add Python tool execution via backend API with 30s timeout
- Add POST /api/v1/tools/execute endpoint for backend tool execution
- Update Dockerfile to include Python 3 for tool execution
- Bump version to 0.4.0
2026-01-02 20:15:40 +01:00
2f28b689f5 feat: add update notification system
Backend:
- Add /api/v1/version endpoint returning current and latest version
- Fetch latest release from GitHub API with 1-hour cache
- Semver comparison to detect available updates
- Configurable via GITHUB_REPO env var (default: vikingowl/vessel)

Frontend:
- Add VersionState store with 12-hour periodic checking
- Check on app load and periodically for new versions
- Persist dismissed versions in localStorage
- Add UpdateBanner component with teal styling
- Slide-in animation from top, dismissible

The notification appears below TopNav when a new version is available
and remembers dismissals per-version across sessions.
2026-01-02 19:29:02 +01:00
2e1a677431 feat: add backend model registry API and fix sidenav updates
Backend:
- Add local models API with filter, sort, and pagination
- Add grouped chats endpoint for date-based display
- Support search, family filtering, and multi-field sorting

Frontend:
- Add model registry store with backend-powered operations
- Add server conversations store for future backend queries
- Fix sidenav to use local state for immediate updates on
  conversation create/delete (offline-first architecture)
- Fix date display in conversation items (remove duplicate
  Date constructor call)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 02:01:18 +01:00
2241075563 feat: add model browser with pull functionality and file size display
- Add model registry backend that scrapes ollama.com library page
- Extract capabilities (vision, tools, thinking, embedding, cloud) from HTML
- Store models in SQLite with search, filter by type and capabilities
- Add tag sizes fetching from individual model pages
- Create Model Browser UI with search, filters, and pagination
- Implement streaming model pull with progress bar
- Auto-refresh model selector and select new model after pull
- Add cloud capability detection (uses different HTML pattern)
- Update Go version to 1.24 in Dockerfile

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 01:02:42 +01:00
1529f31d6c feat: upgrade to official Ollama Go client
- Add github.com/ollama/ollama/api dependency (v0.13.5)
- Create OllamaService wrapper with typed handlers for all endpoints
- Implement streaming support for chat, generate, and pull operations
- Add dedicated handlers: ListModels, ShowModel, Chat, Generate, Embed,
  PullModel, DeleteModel, CopyModel, Version, Heartbeat
- Keep fallback proxy for any unhandled endpoints
- Update routes to use new typed API endpoints
- Upgrade Go version to 1.24.1

Benefits:
- Type-safe request/response handling
- Built-in NDJSON streaming with 512KB buffer
- Proper tool call types (ToolCall, ToolCallFunction)
- Thinking mode support (ThinkValue)
- Future compatibility with Ollama updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 00:04:39 +01:00
c0ef31e5f4 feat: collapse tool results and add headless Chrome fetcher
Backend:
- Add unified URL fetcher with fallback chain: curl → wget → native Go → headless Chrome
- Implement JS-rendered page detection for sites like docs.rs
- Add chromedp dependency for headless browser support
- Log fetch method on server startup

Frontend:
- Store tool results in structured ToolCall.result field instead of message content
- Show tool results collapsed by default in ToolCallDisplay
- Add expandable results section with truncation for large outputs
- Add Message.hidden flag for internal messages (tool context)
- Separate visibleMessages (UI) from allMessages (API) to fix infinite loop
- Fix tool result messages not being sent to model

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 23:52:57 +01:00
b99fc3d0c1 feat: add IP-based geolocation fallback for location tool
- Add /api/v1/location endpoint using ip-api.com for IP geolocation
- Update get_location tool to try browser GPS first, then IP fallback
- Make tool description directive to trigger automatic usage
- Handle private IPs by letting ip-api.com auto-detect

The tool chain now works: get_location → web_search → fetch_url
Browser geolocation often fails on desktop Linux; IP fallback
provides city-level accuracy which is sufficient for weather queries.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 21:04:31 +01:00
26b4f342fc feat: add web search and location tools
- Add web_search built-in tool that searches via DuckDuckGo
- Add get_location tool to get user's geographic location
- Create backend search proxy endpoint (/api/v1/proxy/search)
- DuckDuckGo HTML scraping with title, URL, and snippet extraction
- Geolocation with OpenStreetMap reverse geocoding for city/country
- Fix StreamingIndicator visibility in dark mode
- Improve tool descriptions to encourage proper tool usage
- Better error messages with suggestions when location fails

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 20:04:09 +01:00
de835b7af7 feat: initial commit - Ollama WebUI with tools, sync, and backend
Complete Ollama Web UI implementation featuring:

Frontend (SvelteKit + Svelte 5 + Tailwind CSS + Skeleton UI):
- Chat interface with streaming responses and markdown rendering
- Message tree with branching support (edit creates branches)
- Vision model support with image upload/paste
- Code syntax highlighting with Shiki
- Built-in tools: get_current_time, calculate, fetch_url
- Function model middleware (functiongemma) for tool routing
- IndexedDB storage with Dexie.js
- Context window tracking with token estimation
- Knowledge base with embeddings (RAG support)
- Keyboard shortcuts and responsive design
- Export conversations as Markdown/JSON

Backend (Go + Gin + SQLite):
- RESTful API for conversations and messages
- SQLite persistence with branching message tree
- Sync endpoints for IndexedDB ↔ SQLite synchronization
- URL proxy endpoint for CORS-bypassed web fetching
- Health check endpoint
- Docker support with host network mode

Infrastructure:
- Docker Compose for development and production
- Vite proxy configuration for Ollama and backend APIs
- Hot reload development setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 08:11:33 +01:00