Skip to content

2.11.0

Choose a tag to compare

@csebold csebold released this 01 Apr 06:51
· 2555 commits to main since this release
2.11.0

Quilltap v2.11.0 Release Notes

Less scaffolding, more living space. The estate has been renovated.

Highlights

Windows-compatible Docker images — We now automatically provide Windows (and indeed, amd64) Docker images.

Docker Simplified — The entire Docker story has been rewritten. Gone are the compose files, the Nginx configs, the MinIO buckets, and the authentication scaffolding nobody asked for. In their place: a single docker run command, platform-aware startup scripts that auto-detect your local services, and transparent host port forwarding so Ollama and friends just work at localhost. One command to start. No config file required.

Large Import Fix.qtap backup files over 10MB no longer choke on import. The proxy body limit and upload pipeline have both been corrected.


Major Features

Docker Infrastructure Overhaul

  • Removed dead Docker infrastructure: docker-compose.yml, docker-compose.prod.yml, docker-compose.test.yml, Dockerfile.allinone, and all supporting scripts (start-allinone.sh, init-letsencrypt.sh, nginx.conf)
  • Removed build:docker:rebuild, start:docker, stop:docker npm scripts
  • New HOST_REDIRECT_PORTS support in the Docker image for transparent host port forwarding
    • New docker/entrypoint.sh script sets up socat forwarders for a comma-separated port list
    • Docker users can now reach host services (Ollama, LM Studio, MCP servers) at localhost URLs without network mode tricks
    • socat installed in the production Docker image

Platform-Aware Startup Scripts

  • New scripts/start-quilttap.sh (macOS/Linux) and scripts/start-quilttap.ps1 (Windows)
  • Platform detection sets the correct default data directory per OS
  • Auto-detects Ollama on port 11434 and adds it to HOST_REDIRECT_PORTS
  • Supports --data-dir, --port, --redirect-ports, --tag, --env, --restart, --dry-run
  • Checks for existing containers before creating duplicates
  • --no-auto-detect flag to skip service detection

Authentication Removal

  • Removed all authentication infrastructure: JWT, OAuth, Google sign-in
  • Removed JWT_SECRET, AUTH_DISABLED, OAUTH_DISABLED, GOOGLE_CLIENT_* from .env.example and documentation
  • Removed authentication sections from DEPLOYMENT.md
  • Simplified README.md Quick Start — no configuration required for local use

Documentation

  • Rewrote all Docker documentation around docker run and the new startup scripts
  • README.md Quick Start now recommends startup scripts with docker run as fallback
  • Updated DEVELOPMENT.md, DEPLOYMENT.md, DATABASE_ABSTRACTION.md, BACKUP-RESTORE.md
  • Added reverse proxy examples (Nginx, Caddy) to DEPLOYMENT.md
  • Added Docker user notes to in-app help files (startup wizard, connection profiles, embedding profiles)
  • Cleaned up stale references in .env.example, package.json, knip.json, lib/paths.ts, and the DataDirectorySection component
  • Updated Docker build process to ensure Windows and macOS coverage

Bug Fixes

Critical

  • Large .qtap import failure: Files over 10MB now import correctly
    • Added proxyClientMaxBodySize: '100mb' to next.config.js to prevent proxy body truncation
    • Frontend import now sends the original file via FormData instead of re-serializing JSON
    • Backend import-execute endpoint now supports FormData uploads (matching import-preview)

Data Integrity

  • User ID migration table names corrected: promptsprompt_templates, messageschat_messages to match actual SQLite schema; removed memories from migration list (no userId column)
  • Story background file storage: Backgrounds now correctly stored in /story-backgrounds/ folder with proper projectId and folderPath metadata; auto-creates folder record on first generation per scope; fixed project list-files API response missing fields needed by FileBrowser UI

UI

  • Participants sidebar always visible: Removed isMultiChar gate so the sidebar renders even with zero participants; users can now add characters to empty chats; updated empty state message to "Add a character to get started"