Releases: miurla/morphic
v1.3.0
What's Changed
- fix: switch Docker runtime to Node.js and handle no-model state by @miurla in #797
- fix: preserve line breaks in user messages by @miurla in #800
- fix: correct search mode selector indicator padding on right edge by @miurla in #801
- feat: replace related questions LLM call with inline spec fences by @miurla in #803
- refactor: replace createUIMessageStream + writer.merge with toUIMessageStreamResponse by @miurla in #805
- fix: tighten spacing between related question buttons by @miurla in #806
- fix: use in-memory messages during regeneration to avoid stale cache by @miurla in #807
- fix: prevent iOS Safari viewport shift when keyboard dismisses by @miurla in #808
- refactor: compact mobile chat panel and normalize size utilities by @miurla in #809
- fix: switch to ai-sdk-ollama and fix image upload + reasoning for Ollama by @miurla in #810
- fix: change inspector panel Minimize button to Close by @miurla in #811
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Highlights
Model Selector
The model selector is back! Morphic now fetches available models directly from each provider's API and lets you pick any model from the UI. No more editing config/models/default.json β just set your API key and choose your model.
Docker Made Easy
Docker Compose now includes SearXNG as the default search engine out of the box. No external search API key needed β just set one AI provider key and run docker compose up -d.
Breaking Changes
config/models/default.jsonhas been removed. Model selection for local/Docker deployments is now handled through the UI model selector, with models fetched dynamically from provider APIs. Cloud deployments (MORPHIC_CLOUD_DEPLOYMENT=true) continue to useconfig/models/cloud.json.speed/qualitymodel type selection has been removed. TheModelTypeSelectorcomponent andmodelTypecookie are no longer used.
What's Changed
Features
Bug Fixes
- fix: keep Streamdown v2 default sanitization when adding custom plugins by @miurla in #789
- Fix Docker sidebar and chat history persistence by @miurla in #791
- Fix chat history freeze after deleting chats from sidebar by @miurla in #792
- Authenticate upload requests before storage config checks by @miurla in #793
Improvements
- Upgrade to Next.js 16.2.1 by @miurla in #786
- Keep assistant logo visible after generation by @miurla in #787
- Require remote object storage for uploads in Docker by @miurla in #790
Documentation
Full Changelog: v1.1.0...v1.2.0
v1.1.0
What's Changed
- chore: remove beta badge and changelog system by @miurla in #771
- fix: use Node.js build stage for Docker multi-arch compatibility by @miurla in #772
- docs: simplify README and extract Docker guide by @miurla in #773
- Update model versions and hide model type selector for cloud by @miurla in #775
- Update cloud speed models to Gemini 3.1 series by @miurla in #779
- Enable includeThoughts for Gemini 3.x cloud models by @miurla in #780
- Update AI SDK packages to latest versions by @miurla in #781
- Fix guest rate limit not showing auth dialog by @miurla in #782
- feat: default sidebar closed and hide for guests by @miurla in #783
- refactor: simplify todoWrite availability and use qualitative conditions by @miurla in #784
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Morphic v1.0.0
A major release with significant architectural changes. This version is a complete rewrite of the core infrastructure.
Breaking Changes
- Database: Redis β PostgreSQL β Chat history storage has moved from Redis (Upstash) to PostgreSQL with Drizzle ORM. Previous chat history stored in Redis will not be migrated. No migration script is provided. Run
bun run migrateto create the new database tables. - Next.js 15 β 16 β Upgraded to Next.js 16 with Turbopack.
- AI SDK 4 β 6 β Upgraded to AI SDK 6 with ToolLoopAgent pattern.
- Environment variables β Several environment variables have been added, removed, or renamed. Refer to
.env.local.examplefor the current required configuration.
Summary
Core
- AI-powered search with GenerativeUI
- Next.js 16 with App Router and Turbopack
- AI SDK 6 integration with ToolLoopAgent
- PostgreSQL with Drizzle ORM and Row-Level Security (RLS)
- Supabase authentication with guest mode support
AI Providers
- OpenAI (default), Anthropic Claude, Google Gemini, Vercel AI Gateway, Ollama
- Profile-based model configuration (
config/models/*.json)
Search
- Multiple providers: Tavily, Brave, SearXNG, Exa, Firecrawl
- Search modes: Quick, Planning, and Adaptive
- URL-specific search and content extraction
Features
- File upload with Cloudflare R2
- Chat history with share functionality
- Message feedback system
- Inspector panel for tool execution details
- Todo tracking for complex tasks
- Changelog notification system
- LLM observability with Langfuse (optional)
Deployment
- Docker deployment with prebuilt images (anonymous mode only)
- Vercel deployment with one-click setup
- Docker Compose for self-hosted setup with PostgreSQL, Redis, and SearXNG
New Contributors
- @oussamadhouib made their first contribution in #556
- @mcmadafly made their first contribution in #631
- @dan-and made their first contribution in #708
Full Changelog: v0.4.6...v1.0.0
v1.0.0-beta.10
What's Changed
- feat: update model configuration and optimize tool selection by @miurla in #733
- feat: replace citation numbers with domain names by @miurla in #734
- fix: resolve chatId duplication issue in Next.js 16 by @miurla in #735
- refactor: clarify fetch tool PDF support and type usage by @miurla in #736
- fix: remove plus icon overlay from image grid by @miurla in #737
- fix: reload chat after message deletion in regeneration flow by @miurla in #738
- test: add comprehensive tests for prepareMessages regeneration flow by @miurla in #739
- feat(search): add source favicons to search results display by @miurla in #740
- feat: add parent collapsible for research sections with 5+ parts by @miurla in #741
- refactor: redesign citation popover layout by @miurla in #742
- feat: add explicit efficiency guidelines to research prompts by @miurla in #743
- feat: improve search mode prompts for flexible response length by @miurla in #745
- feat: integrate pruneMessages for optimized context window management by @miurla in #746
- fix(security): update Next.js to 16.0.7 for CVE-2025-66478 by @miurla in #749
- fix(security): update Next.js to 15.2.6 for CVE-2025-66478 by @miurla in #750
- security: update Next.js to 16.0.10 for additional CVE fixes by @miurla in #753
- security: update Next.js to 15.2.8 for CVE fixes by @miurla in #754
- fix: remove client-side auth check for Docker anonymous mode by @miurla in #757
- fix: improve auth error handling in ErrorModal by @miurla in #758
- feat: migrate to AI SDK v6 with ToolLoopAgent by @miurla in #760
- chore: update Next.js to 16.1.6 by @miurla in #761
- fix: handle null value for exclude_domains validation by @miurla in #762
- fix: keep reasoning in pruneMessages for OpenAI compatibility by @miurla in #763
- fix: strip reasoning parts for OpenAI models to fix multi-turn errors by @miurla in #765
- feat: add welcome message below logo on home screen by @miurla in #766
- Add guest mode and chat limits by @miurla in #767
- docs: add guest mode documentation by @miurla in #768
- docs: update README for v1.0.0 release by @miurla in #769
Full Changelog: v1.0.0-beta.9...v1.0.0-beta.10
v1.0.0-beta.9
What's Changed
- feat: integrate Ollama model discovery with tools filtering by @dan-and in #708
- chore: remove static Ollama placeholders by @miurla in #709
- fix: Fix header scrolling issue on iOS Safari by @miurla in #719
- feat: Restore Ollama provider support for v1.0.0 (#721) by @miurla in #722
- Fix beta badge visibility and mobile layout improvements by @miurla in #724
- Fix mobile chat message padding with accurate offset calculation by @miurla in #725
- feat: Upgrade to Next.js 16 with Turbopack and MCP support by @miurla in #726
- feat: Add Docker support with PostgreSQL, Redis, and optional authentication by @miurla in #727
- fix: Hide scroll-to-bottom button immediately on click by @miurla in #728
- feat: make BRAVE_SEARCH_API_KEY optional with dynamic provider fallback by @miurla in #729
- fix: Fix scroll listener registration to properly detect bottom position by @miurla in #730
- refactor: remove planning search mode and integrate into adaptive mode by @miurla in #731
- feat: add emoji usage guidelines to search mode prompts by @miurla in #732
New Contributors
Full Changelog: v1.0.0-beta.8...v1.0.0-beta.9
v1.0.0-beta.8
Beta Testing Now Available
Starting with this release, v1.0.0 is now available for beta testing at beta.morphic.sh.
We welcome your feedback as we work toward the stable release. Please report any issues or suggestions through GitHub Issues or use the feedback button in the app.
For more information about v1.0.0, see Issue #680.
What's Changed
- feat: implement model matrix and improve citation system by @miurla in #711
- feat: migrate researcher agent to streamText with smoothStream by @miurla in #712
- fix: restore cursor pointer for buttons in Tailwind v4 by @miurla in #713
- Keep single tool sections open and stabilize image previews by @miurla in #714
- feat: Add quality mode rate limiting with user-friendly error handling by @miurla in #715
- feat: Improve search error messages for better user experience by @miurla in #716
- feat: Add Vercel Analytics tracking for chat events by @miurla in #717
Full Changelog: v1.0.0-beta.7...v1.0.0-beta.8
v1.0.0-beta.7
v1.0.0-beta.6
What's Changed
- fix: prevent displaying '0' results during loading in search section by @devin-ai-integration[bot] in #595
- feat(components): add password visibility toggle to Input by @vishv96 in #663
- ISSUE-546: by @Dhaval-x96 in #671
- feat(cache): implement selective caching for individual chat loading by @miurla in #690
- chore: update AI SDK dependencies to latest versions by @miurla in #691
- feat: implement streaming support for AI tools with enhanced type safety by @miurla in #692
- fix: resolve input focus ring persistence after submission by @miurla in #693
- feat: enhance AI prompt system with improved planning and search capabilities by @miurla in #694
- Fix enter handling in user text editor by @miurla in #696
- Firecrawl based Search Provider by @yazaldefilimone in #695
- Fix assistant message deletion under RLS by @miurla in #697
- Remove legacy message-preparation helper by @miurla in #699
- Reorder search modes and set quick as default by @miurla in #700
- Fix citation mapping for message copy by @miurla in #701
- Merge main into v1.0.0 by @miurla in #702
New Contributors
- @vishv96 made their first contribution in #663
- @Dhaval-x96 made their first contribution in #671
- @yazaldefilimone made their first contribution in #695
Full Changelog: v1.0.0-beta.5...v1.0.0-beta.6
v0.4.6
What's Changed
- Update README: Add Sponsors and License sections, remove Verified models by @miurla in #560
- Fix sidebar state persistence and hydration flash by @miurla in #563
- feat: Use image from search results for OG tag by @ngoiyaeric in #567
- Add CLAUDE.md documentation and remove .cursor directory by @miurla in #574
- Add typecheck, format commands and CI workflow by @miurla in #575
- fix: prevent displaying '0' results during loading in search section by @devin-ai-integration[bot] in #595
- feat(components): add password visibility toggle to Input by @vishv96 in #663
- ISSUE-546: by @Dhaval-x96 in #671
- Firecrawl based Search Provider by @yazaldefilimone in #695
New Contributors
- @ngoiyaeric made their first contribution in #567
- @vishv96 made their first contribution in #663
- @Dhaval-x96 made their first contribution in #671
- @yazaldefilimone made their first contribution in #695
Full Changelog: v0.4.5...v0.4.6