Repository navigation
v8.7.0 -- 2026-10-02
8.7.0 -- 2026-10-02
This release makes Quepid easier to run on your own, adds more search engine options, and brings a richer workflow for creating AI Judges and tracking judgement progress.
🤖 Create, Test, and Automate AI Judges
AI Judges now have their own place in the navigation. Create a judge, configure its provider, and test and refine its prompt before saving, all in one wizard. Judges belong to an owner and can stay private or be shared with teams; you no longer need a team to use one with your own books.
- Automatic judging: opt individual AI Judges into running whenever new query/doc pairs are added to a book. A book-level rank depth lets you focus judging on the top results.
- Live progress and cancellation: follow judging as it happens and cancel an active run. Ratings sync to linked cases as judgements arrive, so completed work is available even if you stop a run early.
- TypeSafe Jev support: a new AI Judge provider uses the book's rating scale and scoring guidelines as evaluation criteria, with a configurable minimum confidence.
- More reliable results: prompt previews and full judging runs apply the same rating validation, and rate-limited provider requests are retried.
📚 See Your Book's Progress at a Glance
The redesigned Book Overview brings judgement coverage, live Judge Activity, and Linked Cases together. See what is fully judged, in progress, or still waiting; inspect an individual judge's progress and recent activity; and watch linked-case sync status without refreshing the page.
Judgement Stats now includes a rating distribution chart, making it easier to spot how ratings are spread across your scale. Large books also load faster.
Changing your rating scale? Bulk remapping lets you convert existing book judgements and linked-case ratings to a new scale, such as moving from a ten-point scale to 0–3.
🔎 More Search Engines and Query Options
- Vespa: connect through a built-in preset, use YQL or JSON queries, page through results, and find already-rated documents. When Vespa returns match features, Quepid can display them in its explanation views.
- Qdrant: a new setup-wizard option connects to Qdrant's collection query API, with support for looking up already-rated documents. A setup guide covers lexical and dense retrieval.
- Algolia: improved error reporting and explanation displays make using Algolia clearer.
- Solr JSON queries: use structured JSON queries alongside the existing query-string format. The Query Sandbox adapts to JSON or plain-text editing.
- Custom Search APIs: these APIs gain configurable pagination and automatic GET/POST selection.
The Find and Rate Missing Documents dialog has also been refreshed to make document lookup and rating easier across supported engines.
🗄️ Easier Solo and Self-Hosted Use
Quepid now supports SQLite and PostgreSQL alongside MySQL. Production Docker installs default to an embedded SQLite database when no DATABASE_URL is configured, removing the need to set up a separate database server. PostgreSQL is also supported for deployments that prefer it.
Solo users no longer have to use a create and use a "team" just to connect their own books to cases and use AI Judges.
🎨 A Refreshed Interface and Everyday Fixes
The Bootstrap 5 migration is complete, with refreshed dialogs, toolbars, navigation, and search-result details. More case actions now use the modern interface components as the gradual move away from AngularJS continues.
- Search boxes now match text regardless of capitalization.
- Reopening a case no longer queues duplicate book-sync jobs while a sync is already running.
- The case listing identifies nightly evaluation runs beside “Last run by.”
- Administrators can schedule announcements with publish and expiration dates.
Thanks @davidshq, @frutik, @chuckmeyer, @flaxsearch and @radu-gheorghe for contributing to this release!
What's Changed
- Prevent duplicate book syncs by @epugh in #1749
- Remove Bootstrap 3 from the UI (BS5 Migration) by @davidshq in #1703
- now you can remap your ratings by @epugh in #1751
- add the nightly scheduled icon to case listing by @epugh in #1750
- Angular Removal by @davidshq in #1752
- Update Node.js to v24.20.0 by @renovate[bot] in #1756
- Update nginx Docker tag to v1.31.4 by @renovate[bot] in #1755
- Update Other JavaScript dependency updates by @renovate[bot] in #1757
- handle case along with book... by @epugh in #1754
- Require end date for annoucements by @epugh in #1762
- Angular removal phase 1: share DOM helpers across stacks, drop angular-timeago and angular-countup by @davidshq in #1761
- Support sqlite - this is for all the solo Search Practioners who don't have a team! by @epugh in #1763
- Compare numeric columns with = instead of LIKE in search filters by @frutik in #1767
- Match email case-insensitively in SQL instead of relying on the colla… by @frutik in #1766
- Match for_user by id instead of SELECT DISTINCT over every column by @frutik in #1768
- Add Vespa Support to Quepid by @epugh in #1760
- Update Other Ruby gem updates to v8.2.0 by @renovate[bot] in #1758
- Angular removal phase 2: replace share-case modal with Stimulus on core by @davidshq in #1764
- Update Other JavaScript dependency updates (major) by @renovate[bot] in #1759
- Update find missing docs modal by @epugh in #1774
- Order explicitly where the database was deciding for us by @frutik in #1771
- Only regenerate model annotations when running against MySQL by @frutik in #1769
- Deduplicate by id instead of SELECT DISTINCT in three more queries by @frutik in #1770
- Dispatch SQL function names per adapter instead of MySQL-or-not by @frutik in #1773
- Optimize our queries. by @epugh in #1776
- Pick the oldest match when a search endpoint lookup is ambiguous by @frutik in #1772
- Add PostgreSQL as a supported database adapter by @frutik in #1777
- Persist PostgreSQL data in ./volumes/postgres/data by @frutik in #1778
- Make the sample data seeder re-runnable by @frutik in #1779
- Support vespa json by @epugh in #1775
- Ensure every sample-data case has at least one query by @epugh in #1788
- Fix slow Book Overview page for large books by @epugh in #1786
- Make search boxes case-insensitive by @epugh in #1784
- Better admin layout by @epugh in #1782
- Revamp Algolia support in Quepid by @epugh in #1785
- Add judgement rating distribution chart to Judgement Stats by @epugh in #1787
- Simplest possible docker command to start Quepid with embedded database by @epugh in #1790
- AngularJS cleanup phase 3: Stimulus migration, testing infra, misc fixes by @davidshq in #1794
- AngularJS cleanup phase 3 (ruby): Stimulus migration, backend hardening, and test infra by @davidshq in #1796
- AngularJS → Stimulus: sidebar tooltips, share/delete/clone case, export case modal by @davidshq in #1797
- Give AI judges an ownership model and make them a first-class nav entity by @epugh in #1793
- Solo mode ai judge ownership v2 by @epugh in #1801
- Persona-based Book Overview, AI judge auto-run, and Linked Cases live sync indicators by @epugh in #1792
- Turn Quepid into a OSX App. by @epugh in #1803
- AngularJS → Stimulus phase 5: popovers, flash, clipboard, match/explain by @davidshq in #1799
- Refactor the footers to share a single footer, and be consistent in the UI across main pages, core case page, and the admin pages. by @epugh in #1804
- polish up the UI a bit based on feedback by @epugh in #1805
- Add qdrant search engine by @frutik in #1789
- Order scorers by id so the new-book scale dropdown preselects reliably by @frutik in #1806
- Update Node.js to v24.21.0 by @renovate[bot] in #1811
- Update Other Ruby gem updates to v4.25.0 by @renovate[bot] in #1813
- Update nginx Docker tag to v1.31.6 by @renovate[bot] in #1808
- Update Ruby interpreter version to v4.0.7 by @renovate[bot] in #1810
- Update Rails packages (Ruby + JavaScript) by @renovate[bot] in #1809
- Update Other JavaScript dependency updates by @renovate[bot] in #1812
- Update Other Ruby gem updates by @renovate[bot] in #1817
- AI Judges: provider registry, one adapter per dialect, and TypeSafe Jev by @frutik in #1802
- Bump dev postgres container to PostgreSQL 18 by @frutik in #1819
- Update Other JavaScript dependency updates (major) by @renovate[bot] in #1815
- Update dependency sqlite3 to v2.9.6 by @renovate[bot] in #1818
- Polish Judge Activity: fix sparkline flicker, overview/stats parity by @epugh in #1821
- Update Other Ruby gem updates to v6.3.1 by @renovate[bot] in #1820
Full Changelog: v8.6.0...v8.7.0