Commit Graph

74 Commits

Author SHA1 Message Date
edd7c94507 docs: comprehensive documentation update
Updates README with:
- System prompts feature (model-specific, capability-based defaults)
- Custom model creation with embedded prompts
- Comprehensive Custom Tools Guide with examples
- Updated API reference with all endpoints
- Updated roadmap with completed features

Adds detailed documentation for custom tools:
- JavaScript, Python, and HTTP tool types
- Parameter definitions and templates
- Testing workflow and security notes
- Complete weather tool example
- Programmatic tool creation guide
2026-01-03 21:19:32 +01:00
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
1063bec248 chore: bump version to 0.4.9
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.9
2026-01-03 18:26:40 +01:00
cf4981f3b2 feat: add auto-compact, settings page, and message virtualization
- Add auto-compact feature with configurable threshold (50-90%)
- Convert settings modal to full /settings page with organized sections
- Add Memory Management settings (auto-compact toggle, threshold, preserve count)
- Add inline SummarizationIndicator shown where compaction occurred
- Add VirtualMessageList with fallback for long conversation performance
- Trigger auto-compact after assistant responses when threshold reached
2026-01-03 18:26:11 +01:00
7cc0df2c78 ci: sync GitHub release notes from Gitea 2026-01-03 15:48:50 +01:00
e19b6330e9 chore: bump version to 0.4.8
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.8
2026-01-03 15:32:04 +01:00
c194a4e0e9 fix: include custom tools in Ollama API requests
Custom tools were displayed as enabled in the UI but never sent to
Ollama because getEnabledToolDefinitions() only queried the builtin
tool registry. Now iterates customTools and includes enabled ones.

Fixes #4
2026-01-03 15:29:25 +01:00
04c3018360 chore: bump version to 0.4.7
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.7
2026-01-02 22:42:35 +01:00
2699f1cd5c fix: handle null updates array and show capabilities for local models
- Fix TypeError when check updates returns null updates array
- Display verified capabilities from Ollama runtime in Local Models tab
- Fetch all model capabilities on page mount
- Add data-dev to gitignore
2026-01-02 22:41:37 +01:00
9f313e6599 feat: verify model capabilities from Ollama runtime
Some checks failed
Create Release / release (push) Has been cancelled
- Add capability verification for installed models using /api/show
- SyncModels now updates real capabilities when fetchDetails=true
- Model browser shows verified/unverified badges for capabilities
- Add info notice that capabilities are sourced from ollama.com
- Fix incorrect capability data (e.g., deepseek-r1 "tools" badge)

Capabilities from ollama.com website may be inaccurate. Once a model
is installed, Vessel fetches actual capabilities from Ollama runtime
and displays a "verified" badge in the model details panel.
v0.4.6
2026-01-02 22:35:03 +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
v0.4.5
2026-01-02 21:54:50 +01:00
14b566ce2a feat: add DEV_PORT env var for running dev alongside production 2026-01-02 21:17:32 +01:00
7ef29aba37 fix: coerce numeric tool args to handle string values from Ollama
Ollama models sometimes output numbers as strings in tool call arguments.
Go backend strictly rejects string→int coercion, causing errors like:
"cannot unmarshal string into Go struct field URLFetchRequest.maxLength"

- fetch_url: coerce maxLength, timeout
- web_search: coerce maxResults, timeout
- calculate: coerce precision
2026-01-02 21:08:52 +01:00
3c8d811cdc chore: bump version to 0.4.3
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.3
2026-01-02 21:05:03 +01:00
5cab71dd78 fix: sync context progress bar with custom context length setting
- Add customMaxTokens override to ContextManager
- maxTokens is now derived from custom override or model default
- ChatWindow syncs settings.num_ctx to context manager
- Progress bar now shows custom context length when enabled
2026-01-02 21:04:47 +01:00
41bee19f6b chore: bump version to 0.4.2
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.2
2026-01-02 20:54:55 +01:00
f4febf8973 fix: initialize custom parameters from model defaults
- Fetch actual model defaults from Ollama's /api/show endpoint
- Parse YAML-like parameters field (e.g., "temperature 0.7")
- Cache model defaults to avoid repeated API calls
- Initialize sliders with model's actual values when enabling custom params
- Show asterisk indicator when parameter differs from model default
- Reset button now restores to model defaults, not hardcoded values
2026-01-02 20:52:47 +01:00
a552f4a223 chore: bump version to 0.4.1
Some checks failed
Create Release / release (push) Has been cancelled
v0.4.1
2026-01-02 20:36:03 +01:00
4a9e45b40b fix: persist toolCalls to database for reload persistence
Tool usage was not showing after page reload because the toolCalls
field was not being included when saving assistant messages to the
database. Now toolCalls are properly persisted and restored.
2026-01-02 20:34:53 +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
v0.4.0
2026-01-02 20:15:40 +01:00
5572cd3a0d ci: auto-create GitHub release on tag push 2026-01-02 19:46:29 +01:00
6426850714 chore: add CLAUDE.md to gitignore 2026-01-02 19:42:47 +01:00
81b55f07f4 chore: bump version to 0.3.0 v0.3.0 2026-01-02 19:35:00 +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
448db59aac feat(tools): enhance web_search and calculate tools
web_search improvements:
- Add site filter for domain-specific searches (e.g., "reddit.com")
- Add freshness filter for recent results (day/week/month/year)
- Add region parameter for localized results (e.g., "de-de")
- Add configurable timeout (default 20s, max 60s)

calculate improvements:
- Add inverse trig functions: asin, acos, atan
- Add hyperbolic functions: sinh, cosh, tanh, asinh, acosh, atanh
- Add log2, sign, trunc functions
- Add constants: TAU (2*PI), PHI (golden ratio), LN2, LN10
2026-01-02 19:18:35 +01:00
c2214aef96 feat(tools): graceful truncation for fetch_url with LLM retry hints
- Remove curl --max-filesize to avoid hard failures on large pages
- Add Truncated/OriginalSize fields to FetchResult for all fetch methods
- Return truncation info in proxy response (truncated, originalSize, returnedSize)
- Add timeout parameter to fetch_url tool (default 30s, max 120s)
- Increase default maxLength from 5KB to 50KB, allow up to 2MB
- Include _hint in response guiding LLM to retry with larger maxLength

Instead of failing when content exceeds limits, the tool now returns
truncated content with guidance for the LLM to request more if needed.
2026-01-02 19:14:35 +01:00
686c59c6bc feat: improve auto-scroll to match cloud provider UX
Auto-scroll now stops when the top of the assistant's response
reaches the top of the viewport, allowing users to read from
the beginning while more content streams below.
2026-01-02 09:54:20 +01:00
19dffe8906 docs: add project positioning and expanded roadmap
- Add "Why Vessel" section explaining the intentional difference from open-webui
- Expand roadmap with tiered priorities (near-term, opt-in, experimental)
- Add explicit non-goals and philosophy statement
- Update navigation links
2026-01-01 11:29:23 +01:00
104aeff216 fix: preserve query string in production API proxy
The SvelteKit hooks proxy was only forwarding pathname without
the query string (event.url.search), causing filters and pagination
to be silently dropped in production builds.
2026-01-01 10:00:18 +01:00
54083b217b docs: add contributing guide and issue tracker link 2026-01-01 09:43:35 +01:00
Chris
059cbec129 Merge pull request #2 from VikingOwl91/VikingOwl91-patch-1
Update issue templates
2026-01-01 09:34:51 +01:00
Chris
f3ccd1c136 Update issue templates 2026-01-01 09:34:41 +01:00
c6ee1480ce fix: set COMPOSE_CMD default in config section
Fixes "COMPOSE_CMD: unbound variable" error when running
--uninstall or --update flags. Previously the variable was only
set during check_prerequisites(), which runs after flag handling.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:32:21 +01:00
8a43a294e8 docs: add Ollama configuration instructions
Ollama must listen on 0.0.0.0 for Docker containers to connect.
Added instructions for both systemd and manual configuration.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:30:22 +01:00
bd43ad8795 feat: require local Ollama, remove Docker Ollama option
Simplify setup by requiring local Ollama installation:
- docker-compose.yml now connects to host Ollama via host.docker.internal
- Remove ollama service from compose (no longer included)
- install.sh now requires Ollama to be installed
- Update README with clear prerequisites
- Add Docker Ollama support to roadmap for future

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:27:23 +01:00
4e02a27924 fix: remove depends_on and fix prompt display in install script
- Remove depends_on from docker-compose.yml (services handle reconnection)
- This allows the override to disable ollama without errors
- Fix prompt display when running via curl | bash (print to stderr)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:23:27 +01:00
2bd17a3388 fix: clear depends_on in system Ollama override
When disabling the ollama service, we also need to clear
depends_on references to avoid "undefined service" errors.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:21:57 +01:00
b149cf867c chore: ignore docker-compose.override.yml
Local config file created by install script for system Ollama mode

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:20:42 +01:00
89a82923f8 fix: add server hooks for API proxying in production
SvelteKit production build needs server-side request handling
since Vite's dev proxy isn't available. The hooks.server.ts file
proxies:
- /api/v1/* -> backend service
- /api/* -> Ollama service
- /health -> backend health check

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:17:41 +01:00
12954c3300 fix: read prompts from /dev/tty for curl pipe support
When running via `curl | bash`, stdin is not a terminal.
Read from /dev/tty to allow interactive prompts.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:16:01 +01:00
a7532d7b49 feat: add install script and fix Docker environment config
- Add install.sh for one-line installation (Linux/macOS)
  - Detects local Ollama and lets user choose system vs Docker
  - Generates docker-compose.override.yml for system Ollama mode
  - Supports --update and --uninstall flags
- Fix backend not reading OLLAMA_URL from environment variable
  - Add getEnvOrDefault() helper for PORT, DB_PATH, OLLAMA_URL
  - Update Dockerfile to use env vars instead of hardcoded flags
- Update README with new Quick Start instructions

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:14:39 +01:00
ab804ba8fa docs: replace Ollama icon with Vessel logo in README
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:03:41 +01:00
7b2c417a95 docs: add GPL-3 license and update README
- Add GPL-3.0 license with copyright notice (2026 VikingOwl)
- Update license badge from MIT to GPL-3.0
- Add copyright to license section
- Remove completed roadmap items (system prompts, search, shortcuts, export)
- Add Hugging Face integration to roadmap

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 08:02:20 +01:00
204daccb42 docs: add comprehensive README with screenshots
Add project documentation including:
- Feature overview (chat, tools, model management)
- Screenshots showcasing UI (dark/light mode, code generation, web search)
- Quick start with Docker Compose
- Installation instructions (Docker and manual)
- Configuration and environment variables
- Architecture overview and tech stack
- API reference and development guide

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 07:42:16 +01:00
6ecb64f802 feat: styled search results in tool call dropdown
- Parse search results into structured data with SearchResultItem type
- Render expanded results as clickable cards with:
  - Numbered rank badges
  - Linked titles (open in new tab)
  - Truncated URLs
  - Snippets when available
- Fallback to raw text for non-search results
- Proper light/dark mode styling

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 07:32:26 +01:00
774ed4c57a fix: web search failing with BusyBox wget in Docker
- Detect BusyBox wget (limited options) vs GNU wget
- Use compatible flags for BusyBox: -q -O -T -U only
- Add curl to Docker image for better reliability
- curl is now preferred and will be used over BusyBox wget

BusyBox wget doesn't support --max-redirect, --header, or
long-form options which caused web search to fail.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 07:29:49 +01:00
3faf1e9f34 fix: consistent theming across tool and message components
- MessageContent: Make prose-invert conditional (dark:prose-invert)
  and use !important on inline code colors to override Typography
- ToolCallDisplay: Replace theme variables with explicit Tailwind
  dark/light classes for reliable styling
- ToolResultDisplay: Same treatment - explicit slate colors for
  both light and dark modes

All components now properly respect light/dark mode toggle.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 07:28:15 +01:00
77bc72078a fix: code block theming and JSON tool call display
- CodeBlock: Use consistent dark styling (github-dark theme colors)
  regardless of light/dark app theme to match Shiki output
- MessageContent: Detect JSON tool call objects in message content
  and render them as formatted code blocks instead of prose

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 07:18:31 +01:00
05a4617ab4 fix: searchbox dark theme styling
- Use border-theme-subtle for softer border in dark mode
- Use bg-theme-tertiary/50 for better dark mode background
- Update text colors for proper contrast
- Change focus color from emerald to violet (branding)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 06:53:52 +01:00
35884150ee feat: rename project from ollama-webui to Vessel
- Update package.json name to "vessel"
- Update storage keys (vessel-settings, vessel IndexedDB)
- Update Go module to vessel-backend with new imports
- Update database path to vessel.db
- Add new Vessel "V" icon (favicon + app icons)
- Update all user-facing branding (titles, sidebar, settings)
- Update docker-compose files with vessel naming and network
- Change accent color from emerald to violet

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 06:53:07 +01:00