Changelog
This page lists the history of changes to Prodigy. Whenever a new update is available, you’ll receive an email notification sent to the address specified at checkout. You can then download the new version via your personal download link. If your free upgrades expired, you can now add 12 months of updates to your license via our online shop. Please allow up to 24 hours for your download link to be reactivated.
v1.14.14
This update allows Prodigy to use spacy-llm <1.0.0 with its
recent addition of
new tasks including
Entity Linking and
Translation as well as
support for arbitrarily long docs.
| new | Allow spacy-llm<1.0.0. | 
v1.14.13
This update fixes the recipe config override from the task level so that the
view_id attribute can be updated. It is now possible to design data streams
with different view_ids without requiring a server restart.
| fix | It is now possible to overwrite view_id(and other config atrributes) from the task level. | 
| new | Added a “Support” column to metric.iaa.spanresult table to represent that number of examples on which the metric was calculated. | 
v1.14.12
This patch release restores the functionality of the audio_rate setting. We
have also upgraded our wavesurfer.js dependency to 7.4.4 which is related to
the deprecation of the show_audio_timeline setting and a slight change in how
the sound waves are rendered in the UI. We’re also excited to announce a new
plugin for image segmentation that leverages Meta’s
Segment Anything model.
| new | Updated wavesurfer.jsdependency to 7.4.4. | 
| new | Added a new window.prodigy.resetQueuemethod available in the frontend, meant to be used together with custom events. | 
| fix | Fixed audio_ratesetting for audio recipes. | 
| fyi | Deprecated the show_audio_timelinesetting due towavesurfer.jsupgrade. | 
| docs | Updated the custom recipes section to contain examples that leverage radicliinstead ofplac. | 
v1.14.11
This patch release adds support for Python 3.12 and fixes a regression related
to the prodigy.serve function introduced during the transition to radicli.
Additionally, it restores the functionality of using stdin as a source.
| new | Added support for Python 3.12. | 
| new | Added the Controller.reset_stream method to allow custom recipes to reset the stream | 
| fix | Fixed CLI argument proccessing in prodigy.serveto make it compatible withradicli. | 
| fix | Restored the use of stdin as source. | 
v1.14.10
This patch release fixes inferring exclusive labels from spaCy textcat models.
| fix | Fixed checking for exclusive labels in spaCy textcat models. | 
v1.14.9
This patch release updates Prodigy to use spacy-llm <0.7.0.
| new | Allow spacy-llm<0.7.0. | 
v1.14.8
This patch release fixes a bug when sourcing custom JavaScript from a string.
| fix | Fixed a bug related to injecting inline JavaScript. | 
v1.14.7
This release adds an extra validation step to some textcat recipes to make sure no empty annotations are written into the database. This behavior can be turned off with a flag if users prefer the original behavior.
| new | Added validation for empty annotations for exclusive textcat models in  textcat.manualand textcat.correct. | 
| new | Added --accept_emptyflag to textcat.manualand textcat.correctto turn off the new validation. | 
| fix | Fixed a bug in  texcat.correctthat mistook exclusive textcat models for non-exclusive ones. | 
| fix | Fixed a runtime error when combining the PatternMatcherwith an nlp model intextcatrecipes. | 
| fix | Corrected the spelling of spaCy in the output of the statscommand. | 
v1.14.6
This release updates Prodigy to be compatible with spaCy >=3.1.1,<3.8.0 and Pydantic >=1.10.8,<3.0.
| new | Updated spacyandpydanticdependencies. | 
v1.14.5
This release adds an improved character highlighting feature for
 ner_manual and  spans_manual that allows for switching between
character and token highlighting from the UI, while annotating.
We have also facilitated developing with custom css and javascript by adding support for mounting css and javascript files from local directories and remote URLs.
| new | Added a toggle for switching between character and token highlighting in  ner_manualand spans_manualUIs. | 
| new | Support mounting CSS and JS code from local directories and remote URLs. | 
| fix | Fixed annotator filtering in IAA recipes. | 
v1.14.4
This patch release improves error messages and fixes a bug in spacy-config
that prevented to config to be saved on disk properly.
| fix | Improve error messages for iaaandstreammodules. | 
| fix | Fixed an issue with saving the config file to disc in spacy-config | 
v1.14.3
This release adds two new commands for computing inter-annotator agreement for document level and token level annotations. We also introduce Prodigy Plugins: Prodigy-PDF, Prodigy-ANN and Prodigy-LUNR. Prodigy Plugins are add-ons that extend Prodigy’s functionality with third party libraries. They are open source and can be installed separately to be used with 1.14.3 and above.
| new | Inter annotator agreement for document level and token level annotations. | 
| fyi | Prodigy Plugins for PDF processing and selecting relevant subsets of data. | 
| fix | Fixed the display of the history in the sidebar. | 
| fix | Fixed the truncated display of the available recipes outputted by the prodigycommand. | 
| docs | Added a new section on inter annotator agreement metrics. | 
| docs | Added a new section on Prodigy Plugins. | 
v1.14.2
This patch update addresses a backward compatibility issue that was introduced
in version 1.14.0, where the get_labels helper function was removed
potentially affecting custom recipes.
| fix | Restored get_labelfunction for backward compatibility. | 
v1.14.1
This release adds support for custom
Recipe Event Hooks to allow for basic
interactivity in custom Prodigy Recipes. It adds a new window.prodigy.event
function to the window.prodigy object available for use in Custom Recipe
JavaScript. This completes the initial work on an ongoing, undocumented feature
we’ve been using for a while.
| new | Added support for basic interface interactivity via custom event hooks. | 
v1.14.0
This release focuses on improving Prodigy internals. We have substituted plac
with radicli for CLI development which
brings DX improvements such as using type hints for argument parsing including
support for custom types as well as custom CLI errors. Please check radicli
documentation for a complete overview of
benefits.
Higher versions of pydantic (<3.0), fastapi (<0.103.0) and spacy-llm
(<0.6.0) dependencies are now supported. Since spacy-llm 0.5.0 adds support
for chain-of-thought prompting, there’s
now a corresponding section in the
docs with examples.
We have also improved typing and error handling across Prodigy.
Finally, some of the older, deprecated helper functions are no longer available:
- Redditdataset loader
- read_jsonl,- write_jsonl,- read_json,- b64_uri_to_bytes,- pretty_print_ner,- pretty_print_tc
| new | Improved CLI by substituting placwithradicli. | 
| new | Allowed latest versions of pydantic,fastapiandspacy-llm. | 
| docs | Added LLM section with explainers for chain of thought prompts for NER and spancat. | 
| fyi | Deprecated Redditloader and older helpers:read_jsonl,write_jsonl,read_json,b64_uri_to_bytes,pretty_print_ner,pretty_print_tc. | 
v1.13.3
This patch release fixes a bug in the  review recipe which prevented
overwriting view-id attribute on CLI. This is particularly relevant when using
datasets with  block view-id as input to  review, including the
output of *.llm.correct recipes.
| fix | Fixed a bug in  reviewthat didn’t permit overwritingview-idattribute for blocksinterface. | 
v1.13.2
This release introduces spacy-llm variants of  terms.openai.fetch and
 ab.openai.tournament recipes. The  terms.llm.fetch recipe can
generate terms and phrases using an LLM. And the  ab.llm.tournament recipe
can be used for prompt engineering and/or comparing different LLM backends. This
means that we now have replacements for all the *.openai.* recipes, which is
why they now all carry deprecation notices.
We have also added a new annotation interface  llm-io to facilitate
writing custom LLM recipes and fixed a task router bug related to server
restarts.
| new | Added  terms.llm.fetchwhich can usespacy-llmto fetch relevant phrases and terms. | 
| new | Added  ab.llm.tournamentwhich can be used for prompt engineering and comparing LLM backends. | 
| new | Added  llm-iointerface to show the prompt/response from an LLM. | 
| fix | Fixed a bug that caused inconsistencies in task routers when dealing with many server restarts. | 
| fyi | All the *.openai.*recipes now carry deprecation warnings, because there arespacy-llmvariants to replace them. | 
v1.13.1
This release introduces recipes that allow spaCy pipelines to annotate examples.
When you combine these recipes with the  review recipe, you’re able to
focus on examples where models disagree.
This pattern is powerful because these examples typically carry a lot of
information for your model. But it is also very useful given the spaCy-LLM
integration introduced in v1.13.0, which makes it relatively easy to compare
your own model against an LLM pipeline.
| new | Added  ner.model-annotate, textcat.model-annotate, spans.model-annotaterecipes to automatically annotate datasets with models. | 
| new | Added make_ner_suggestions,make_spancat_suggestionsandmake_textcat_suggestionshelper functions to make it easier to turn spaCy output into annotation examples. | 
| new | Added filter_seen_beforehelper functions to make it easier to remove specific duplicates from your stream in custom recipes. | 
| fix | Fixed a bug that caused duplicate log lines to appear. | 
| fix | Fixed a bug related to config validation for the  image.manualrecipe. | 
| fyi | The  reviewrecipe is now more explicit and strict when it comes to exiting immediately if the annotation interface isn’t supported. | 
| docs | Added a new section on reviewing annotations. | 
| ## v1.13.0 {#v1.13.0 meta=“2023-08-15”} | 
This release introduces support for spacy-llm, which gives an even wider support for large language models for NER, textcat and spancat annotations. Future recipes that leverage large language models will also use the spaCy-LLM backend and the OpenAI recipes will be deprecated.
| new | Added spacy-llmbased replacements for the OpenAI workflows for NER and Textcat via the ner.llm.correct, ner.llm.fetch, textcat.llm.correctand textcat.llm.fetchrecipes. | 
| new | Introduced LLM support for Spancat tasks via the  spans.llm.correctand spans.llm.fetchrecipes. | 
| fyi | Prodigy will deprecate the *.openai.*recipes in the future due to a deprecation over at OpenAI. These recipes will all be replaced with*.llm.*variants that use spaCy LLM as a backend. | 
| doc | Updated the large language models section | 
v1.12.7
This release fixes the issue where DatasetSource, GeneratorSource and
ListSource might end up in erroneous state at the end of the iteration due to
incorrect position resetting. This would also lead to unexpected progress bar
updates.
| fix | Remove position reset when closing DatasetSource,GeneratorSourceandListSource. | 
v1.12.6
This release fixes intermittent MySQL integrity errors during bulk DB operations.
| fix | Remove bulk inserts to DB to make the operations more stable. | 
v1.12.5
This release adds temporary support to legacy (pre 1.12.X) loaders in the new
get_stream utility. It also fixes a
few minor CLI and config processing bugs. We have also improved the error
message for missing DB drivers.
| fix | Add support to legacy (pre 1.12.X) loaders in get_streamutility. | 
| fix | Fix the processing of the :ignore,:accept,:rejectsuffixes in dataset source CLI. | 
| fix | Improve error message in the event of missing DB drivers. | 
| fix | Fix the support for the delimiterargument of the legacyCSVloader. | 
| fix | Fix the processing of hide_arrow_headsandhide_true_newline_tokenconfig settings in the rel.manualrecipe. | 
v1.12.4
This release includes an additional bug fix for the frontend.
| fix | Fix issue where individual image spans could not be selected in the  image_manualview for the Polygon and Freehand tools. This builds on the fix inv1.12.3which only fixed selection of image spans annotated with the rectangle tool. | 
v1.12.3
This release includes major bug fixes for the frontend and an extra video docs for task routing:
| fix | Fix issue where individual image spans could not be selected in the  image_manualview | 
| fix | Fix an issue where the “Save” button could be clicked twice and save a duplicate answer to the database. | 
| fix | Fix an issue that would render brelements in the frontend | 
| doc | Added docs on Database.get_hashes and Database.count_dataset Databasemethods | 
| doc | Added a new video on task routers that does a deep dive on how to construct your own | 
v1.12.2
Fixes a bug when using a Prodigy Dataset as a source for an Audio or Image
recipe using the dataset:my_dataset_name syntax.
| fix | Fix FileNotFoundErrorwhen using a Dataset as a source for an Audio or Image recipe | 
| doc | Fixed inconsistencies related to session ids. | 
v1.12.1
This update adds support for the latest spaCy version.
| new | Extend spaCy support to the latest v3.6. | 
v1.12.0
For this version we have completely refactored Prodigy internals to make the
annotation flow more tractable and more customizable. We have reimplemented the
Controller and added new abstractions to better represent the stream of tasks
and the input source. This let us deliver a number of new, exciting features
such as partial, configurable feed overlap, custom task routers, custom session
factories, source-based progress estimation, support for Parquet input files,
experimental support for training coref component in  train, new
 filter-by-patterns recipe and DX improvements.
v1.12 also provides support for LLM-assisted workflows for data annotation
and prompt engineering. We have provided 4 new recipes for bootstrapping NER and
Textcat annotation, 1 for terminology generation and 2 for prompt engineering
including a really creative  ab.openai.tournament recipe. As of this
version we support python 3.11 and we drop support for python 3.7.
Thanks to everyone who’s helped us by testing the alpha versions. See the changelog below for a full list of new features.
| new | Added a new Controller to facilitate annotation workflow customization. | 
| new | Added support for task routing, allowing you to customise who annotates each example. | 
| new | Added annotations_per_tasksetting to easily configure a task router for partial annotator overlap. | 
| new | Added a selection of task routers to the public API that can be used in custom recipes. | 
| new | Added a session_factorycallback for custom recipes, giving you control on how sessions are created. | 
| new | Added support for spacy-experimental corefcomponent in thetrainandtrain-curverecipes. | 
| new | All of Prodigy’s internal recipes now support the .parquetfile format as a data source. | 
| new | Added allow_work_stealingsetting inprodigy.jsonthat allows you to turn off work stealing. | 
| new | Added PRODIGY_LOG_LOCALSenvironment variable to supply local variables for when debugging Prodigy error messages | 
| new | Added get_hash_count and get_hashes_min_cardinality methods to database class, which are useful in custom task routers. | 
| new | The  reviewrecipe now provides a--accept-singleflag to also automatically accept annotations from a single annotator when--auto-acceptis also turned on. | 
| new | Added a new  filter-by-patternsrecipe that can use match patterns to produce a relevant subset for a downstream task. | 
| new | Added support for annotation workflows that use large language models from OpenAI as a model-in-the-loop via the  ner.openai.correct, ner.openai.fetch, textcat.openai.correctand textcat.openai.fetchrecipes. | 
| new | Added support for pattern file generation via OpenAI’s large language model with  terms.openai.fetchrecipe. | 
| new | Added support for prompt engineering recipes via the  ab.openai.promptsand ab.openai.tournamentrecipes. | 
| new | Added new progress calculation based on relative position in a source object. | 
| new | Distinguish between target progressandsource progessin the UI. | 
| fix | Fixed a bug related to allow_newline_highlightsetting in NER recipes. | 
| fix | Fixed a bug multiple labels in the  markrecipe. | 
| fix | Fixed a bug related to multiple labels in the  choiceinterface | 
| fix | Fixed a bug related to trailing slashes in session names. Prodigy will now ignore trailing slashes. | 
| fix | Added a more helpful error message when a user needs to provide a /?session=via the URL | 
| fyi | Removed auto_count_streamsetting and automated counting of generators passed tostreamcomponent. See Controller Progress docs for new information on progress calculation. | 
| fyi | Added a warning when custom recipes don’t ensure the hashes are set appropriately on their examples. | 
| fyi | Tracebacks that Prodigy error messages try to hide will now appear in the logs when PRODIGY_LOGGINGis configured. Details are explained here. | 
| fyi | Dropped support for python 3.7 due to end of life on 2023-06-27. | 
| doc | Added a new usage guides on task routing, large language models and cloud deployments | 
| doc | Fixed typos and inconsistencies | 
v1.11.14
This patch release adds a constraint for
typing_extensions (<4.6.0) to
avoid a version conflict in Pydantic.
| fix | Add dependency for typing_extensions. | 
v1.11.13
This patch release relaxes the following requirements: tqdm (>=4.38.0,<5.0.0), Jinja2 (no pin), python-dotenv (>=0.21.1,<2.0.0).
| fix | Update dependency versions for tqdm, Jinja2, and python-dotenv. | 
v1.11.12
This patch release fixes an issue with the --base-model argument in
 train which resulted in erroneous sourcing of the tok2vec component
from the spaCy base model. It also updates the
peewee (<3.17),
pydantic (<2.0),
FastAPI (<0.95.1) and
typeguard (<4.0) dependencies.
| fix | Fix --base-modelparsing in train. | 
| fix | Update dependency versions for peewee, pydantic, typeguard and FastAPI. | 
v1.11.11
This release reverts a backward incompatible change from v1.11.10 that removed
database methods and helpers get_db, set_db and disconnect. These methods
were not part of the documented API, but could be accessed via the Prodigy
source available to users, which might have potentially caused problems.
| fix | Restore database methods get_db,set_dbanddisconnect. | 
v1.11.10
This release updates Prodigy to use superior versions of spaCy (up to 3.5), pydantic (up to 1.10.4) and FastAPI (up to 0.89.1) dependencies.
| fix | Update dependency versions for spaCy, pydantic and FastAPI. | 
v1.11.9
This update fixes an issue with duplicate examples in multi-user annotation flows and includes several smaller bug fixes in recipes.
| new | Add logging from the frontend to the backend if the frontend ever receives a batch with duplicate tasks. | 
| fix | Prevent duplicate examples from being shown to annotators, specifically in higher latency, production scenarios. | 
| fix | Fix the  audio.transcriberecipe by putting the custom UI attributes on each task, instead of in the config. | 
| fix | Fix an issue where some unsaved examples could be lost during a browser refresh. | 
| fix | Fix the --wrapfunctionality in relationsinterface. | 
| fix | Fix multiple copies of session IDs being rendered in  reviewrecipe. | 
v1.11.8
This update includes various bug fixes and usability improvements and extends support to the latest spaCy versions.
| new | Extend spaCy support to the latest v3.4. | 
| new | Add --use_annotationsargument toSpan Categorizationrecipes forsuggestersthat require annotations from other components. | 
| new | /healthand/healthzAPI endpoints for health checks. | 
| new | Support tokens with "disabled": truein input data for rel.manual. | 
| new | Controller.from_componentsclassmethod. | 
| new | Add validation to ensure  choiceoptions are unique. | 
| fix | Allow highlighting newlines in  sent.correct. | 
| fix | Prevent binary conflicting spans from being added to both positive and negative examples in  train. | 
| fix | Fix --auto-acceptfor binary rejection agreements in review. | 
| fix | Automatically prevent duplicates from appearing in training and evaluation set in  trainand data-to-spacy. | 
| fix | Improve default config generation for base models with vectors and ensure vectors are used. | 
| fix | Improve warnings for invalid setting combinations in PatternMatcher. | 
v1.11.7
This update includes fixes to better support spaCy v3.2 and improves sentence segmentation correction, data export for binary NER annotations, and stream handling for multi-user sessions.
| new | Update spaCy version range to allow installing spaCy v3.2 with Prodigy by default. | 
| fix | Fix vector handling for spaCy v3.2 compatibility. | 
| fix | Improve caching to prevent duplication in named multi-user sessions. | 
| fix | Enable newline and whitespace highlighting by default in  sent.correct. | 
| fix | Ensure binary rejected entity spans are ignored in  trainand data-to-spacyif they’re also in the accepted annotations. | 
| doc | Fix typos and inconsistencies. | 
v1.11.6
This update includes wheels for Python 3.10, as well as small fixes to recipes and config generation.
| new | Pre-built wheels for Python 3.10. | 
| fix | Always use best score in  train-curveand trainwith--label-stats, not last. | 
| fix | Ensure hashes are set correctly in  audio.transcribe. | 
| fix | Fix issue that could cause progress 0to not be reported correctly in custom functions. | 
| fix | Correctly preserve tok2vecandtransformerin trainwith base config. | 
| fix | Don’t auto-add examples already in dataset in  reviewwith--auto-accept. | 
| fix | Use relative paths for fonts to support custom path prefixes. | 
v1.11.5
This update includes small fixes to the feed logic for multi-user sessions and custom progress handling.
| fix | Simplify feed history tracking for multi-user sessions to prevent duplication. | 
| fix | Correctly handle progress 0.0returned by custom progress functions. | 
| fix | Fix display of input content in  comparerecipe. | 
| fix | Include .prodigy-spansCSS class in ner_manualUI. | 
v1.11.4
| fix | Fix issue that could cause stream to repeat batches of questions in some scenarios. | 
v1.11.3
This release includes various small fixes to stream handling, data loading and config generation.
| new | Exclude previously accepted labels during binary annotation with --exclusivein textcat.manual. | 
| fix | Fixing feed overlap bug that could cause session history to not be tracked correctly after reset. | 
| fix | Ensure recipe’s updatecallback is executed when annotating without a dataset. | 
| fix | Fix handling of metacolumn in CSV loader and add its value to a dict. | 
| fix | Handle non-dictionary "meta"values correctly inPatternMatcher. | 
| fix | Correctly set both _session_idand_annotator_idin controller. | 
| fix | Don’t remove frozen scores used by non-frozen components during config generation in  train. | 
| fix | Ensure that pre-defined spans receive a "score"in ner.teach. | 
v1.11.2
This update includes small fixes to the train curve plots and recipes that don’t save data.
| fyi | Add warning when using deprecated --ner-missingin trainand data-to-spacy. | 
| fix | Add workaround for using v2.x and v3.x of plotextin train-curvewith--show-plot. | 
| fix | Fix handling of Falseas dataset value returned by recipe. | 
| fix | Fix handling of "meta"dict in choiceoptions. | 
| fix | Fix links in PyPi server /indexendpoint. | 
v1.11.1
This update includes a new workflow for correcting a trained span categorizer, as well as various small fixes to the config generation, stream setup and UI.
| new |  spans.correctworkflow for correcting a trained span categorizer. | 
| new | Support /indexendpoint in PyPi download server for package index to use inrequirements.txt. | 
| fix | Fix config generation in  trainif no logger is present in the config. | 
| fix | Prevent error in stream counting for slower streams and don’t pre-count if --updateis set. | 
| fix | Fix issue that’d cause CSV reader to fail for Nonecolumn headers. | 
| fix | Ensure hashes are always added before task validation. | 
| fix | Prevent labels from wrapping in  spans_manual. | 
v1.11.0
This release updates Prodigy to use the new spaCy v3, which brings you lots of new exciting features like end-to-end support for transformer-based pipelines, a training config system for reproducible results, as well as new trainable components for sentence segmentation and span categorization that you can create annotations for with Prodigy. Thanks to the 300+ (!) nightly users who helped us test this new release!
Prodigy v1.11 includes a bunch of new features, including a new installation
process via pip and new wheels for Python 3.9 and ARM architectures, a new
recipe and UI for annotating overlapping and nested spans, new recipes for
improving a sentence recognizer model, new training and data export recipes
that seamlessly integrate with spaCy’s config system and let you train multiple
components with different evaluation sets, support for updating the model in the
loop in ner.correct and a new textcat.correct to go along with it, improved
handling of binary annotations in ner.teach for better results, as well as new
customization options and settings.
| new | Support for spaCy v3, including transformer-based pipelines, training configs, new trainable components and more. | 
| new | Improved wheel installation: download the best-matching wheel via pipusing your license key! | 
| new | Pre-built wheels for Python 3.9 and ARM architectures. | 
| new | New  traincommand that supports training multiple components from different datasets and evaluation datasets (using theeval:prefix) and mixing manual and binary datasets. | 
| new | New  data-to-spacycommand that generates all data you need: training and evaluation corpora in spaCy’s binary format, initialized label sets for faster training and optional config file. | 
| new | New  train-curvecommand with support for multiple components and visual plots. | 
| new |  spans.manualworkflow and spans_manualUI for annotating any number of potentially overlapping and nested spans. Also see the span categorization docs for details. | 
| new | Support for training spaCy’s new SpanCategorizerin trainand data-to-spacy, based on annotations collected with spans.manual. | 
| new | Update the model in the loop in  ner.correctusing the--updateflag. | 
| new |  textcat.correctrecipe for correcting and updating an existing text classifier. | 
| new |  sent.teachand sent.correctrecipes for improving a sentence recognizer model. | 
| new | Improved  ner.teachworkflow for more accurate results with spaCy v3. In addition to binary questions about entity suggestions, you’re now also asked questions about texts with no entities at all. If an example includes no highlighted suggestions, you can hit accept to confirm that it contains no entities, or reject if it contains entities. | 
| new |  progresscommand to calculate annotation progress over time. | 
| new | The -Fargument to provide a file path for custom recipe scripts now supports multiple, comma-separated paths and can also be used to load custom registered functions for spaCy configs. It works across all recipes, including the built-in workflows. | 
| new | Add --auto-acceptflag to reviewrecipe to automatically accept annotations with no conflicts and add them to the database. | 
| new | Support "history_text"property in task for customizing preview shown in sidebar history. | 
| new | Allow optional "meta"and"score"in choiceoptions, which will be displayed with the option. | 
| new | Include the UNIX timestamp of when an annotation was answered in the UI as "_timestamp". | 
| new | Support counting finite and potentially filtered generator streams for better progress estimation via "auto_count_stream": true. Note that this setting should only be used for streams that are not dynamic and depend on outside state (e.g. an updated model in the loop). | 
| new | Add total_examples_targetfor the total number of examples that should be annotated to reach a progress of 100%. Useful for infinite streams or if completion doesn’t map to stream size. | 
| new | PRODIGY_CONFIGandPRODIGY_CONFIG_OVERRIDESenvironment variables to provide custom path to global config JSON and override individual config settings on the CLI. | 
| new | Dark mode theme! Enable it by setting "theme": "dark"in yourprodigy.json. | 
| new | Support overriding color palettes used for labels via "palettes"in"custom_theme". | 
| new | Support "style"property on individual"tokens"in ner_manualand spans_manual. | 
| new | Add more human-readable CSS class names and data attributes. | 
| fyi | The  traincommand now handles binary annotations out-of-the-box, so you won’t have to explicitly set--binaryor--ner-missinganymore. Future annotations created with binary workflows like ner.teachwill now also set"_is_binary": trueexplicitly in the data. | 
| fyi | Per-label stats in the output of  traincan now be toggled via the--label-statsflag. | 
| fyi | The --textcat-exclusiveargument is not needed anymore in trainand related workflows and has been removed. Instead, you can explicitly provide datasets via--textcat(exclusive categories) and--textcat-multilabel(non-exclusive categories). | 
| fyi | The --init-tok2vecargument has been removed from textcat.teach. You can now pretrained embeddings directly via the spaCy pipeline you load in. | 
| fyi | Examples are now accepted automatically in  textcat.manualif when you select an option with mutually exclusive categories. You can override this by setting"choice_auto_accept": false.. | 
| fyi | The force_stream_orderconfig setting is now deprecated and the default behavior of the feeds. Batches are now always sent and re-sent in the same order wherever possible. | 
| fyi | Long deprecated old recipes and functions have been removed. | 
| fix | Fix various issues and inconsistencies around stream handling and feed overlap when using named multi-user sessions with a single instance of Prodigy. | 
| fix | Fix span selection in  relationsUI via tap on mobile devices. | 
| fix | Correctly handle vectors for languages without uppercase/lowercase distinction in  terms.teach. | 
| fix | Fix issue that could cause next batch to be blocked when using "instant_submit": true. | 
| fix | Fix issue in CSV loader that would handle title-cased Labelcolumns incorrectly. | 
| fix | Fix base64 conversion to be forwards-compatible. | 
| fix | Ensure that html_templateoverrides are correctly interpreted in blocksUI. | 
| fix | Deep-merge all config settings provided via global and local prodigy.json, recipe config and overrides to support changing only individual nested properties. | 
| fix | Fix issue that could cause config keyword arguments to not be set correctly in prodigy.serve. | 
| doc | Add span categorization usage docs and feature page. | 
| doc | Update installation docs and add instructions for PyPi. | 
| doc | Update various documentation references for spaCy v3 and recipe API changes. | 
v1.10.8
This release includes various small fixes to the annotation interfaces, UI customizability and progress reporting.
| new | Fire prodigyendevent if no more tasks are available. | 
| new | Add batch_sizeargument toPatternMatcher.__call__. | 
| new | Add human-readable .prodigy-spansclass for containers in ner, ner_manualetc. | 
| fix | Correctly recognize  relationsas manual UI in review. | 
| fix | Fix issue with disabled pipes during --binarytraining. | 
| fix | Handle trailing newlines and wrapping correctly in  relationsUI. | 
| fix | Fix handling of label position for long labels in  relationsUI. | 
| fix | Ensure total and session annotation counts are reflected correctly in controller passed to custom progresscallback withupdatecallback. | 
| fix | Improve error handling when using prodigy.servewith non-servable functions. | 
v1.10.7
| fix | Ensure Prodigy works with the latest pydantic. | 
v1.10.6
This release includes a few small fixes, including an update to prevent Prodigy’s dependencies from pulling in a package incompatible with Python 3.6.
| new | Add newlines for newline tokens in  relationsUI (if wrapping is enabled). | 
| new | Support path-based routing and path-strip proxies by using relative paths in the web app. | 
| fix | Prevent dependencies from pulling in newer uvloopversion that’s incompatible with Python 3.6. | 
| fix | Fix issue that could cause config overrides to not be reflected correctly when calling prodigy.serve. | 
| fix | Fix bug in  dep.correctthat could cause the heads to not be sent to spaCy correctly. | 
| fix | Prevent closed socket from killing the server by removing custom signal handlers. | 
| fix | Use better pattern ID delimiter in pattern matcher to prevent conflicts with user-defined labels. | 
v1.10.5
This release includes updates to the relations and review workflows, fixes for feed overlap and multi-user session handling, new UI customization options and a Portuguese UI translation, as well as various other small fixes and improvements.
| new | Support custom span label colors in  relationsUI. | 
| new | Support label_stylesetting config instead of justner_manual_label_styleto indicate that it applies to ner_manual, image_manualand relationsUI. | 
| new | Add --show-skippedoption to reviewinterface to include answers that would otherwise be skipped, like ignored answers or rejected examples in manual interfaces. | 
| new | Allow clicking on a version in  reviewinterface to update final annotation. | 
| new | Add swipe_gesturesconfig setting to customize left/right mapping. | 
| new | Fire prodigyspanselectedevent in image_manualand relations. | 
| new | Add UI translation for Portuguese. Thanks to Cristiana S Parada for the contribution! | 
| fyi | The feed_overlapconfig setting now defaults tofalseand Prodigy will show a warning if an overlapping feed is used without named sessions. | 
| fix | Use symbols for whitespace characters in  relationsUI. | 
| fix | Fix issue that could cause head or child span of first token to not be represented correctly in  relationsinterface. | 
| fix | Fix issue that could cause span label changes to not be reflected correctly in "relations"meta generated by relationsUI and make sure"spans"are always sorted by default. | 
| fix | Set default batch size in calls to nlp.pipein recipes. | 
| fix | Ensure that custom database is correctly passed to RepeatingFeed. | 
| fix | Fix issue that could cause excluded datasets to not be represented correctly in named sessions. | 
| fix | Always sort files alphabetically in loaders that read from directories. | 
| fix | Make  trainfail more gracefully if no data is available. | 
| fix | Fix issue that could cause honor_token_whitespaceto not be reflected correctly. | 
| fix | Don’t explicitly set delimiter in CSV loader and let Python guess. | 
| fix | Correctly interpret image spans without "points"in imageUI. | 
v1.10.4
This update includes small fixes to the stream state management and hashing and improves handling of pre-defined tokens and spans in recipes and interfaces. It also introduces new customization options for the manual image and audio UIs.
| new | Support customizing the JSON key used to store image spans in  image_manual. Can be used to combine the interface with other interfaces that use"spans", e.g. ner_manual. | 
| new | Expose WaveSurferinstance in audio_manualto allow implementing custom controls. | 
| fix | Support pre-defined "tokens"in rel.manual. | 
| fix | Ensure that custom values in pre-defined, non-edited "spans"are preserved in ner_manual. | 
| fix | Fix issue that could cause --excludedatasets to not be considered with non-overlapping feeds. | 
| fix | Add filter to prevent state conflicts of incoming answers in high-latency or low-CPU situations. | 
| fix | Fix incorrect span offset issue in  print-datasetand print-stream. | 
| fix | Make label detection in NER annotation model consistent with spaCy if label contains hyphen. | 
| fix | Fix hasing consistency in  reviewand ensure existing binary answer doesn’t impact hash. | 
v1.10.3
This update fixes a problem with the exclude logic by input hashes and adds support for custom tokenization in the manual relation annotation workflow.
| new | Allow pre-defined "tokens"in rel.manual. | 
| fix | Fix issue that could cause exclude_by": "input"to re-send tasks with overlapping feeds. | 
v1.10.2
This update includes small fixes to the exclude logic in repeating streams, improvements to dependency parsing annotation and training, and updates to the ASGI server. Check out the release notes for v1.10 for all the new features introduced in the latest update!
| fix | Fix issue that’d cause repeating feed to not honor exclude_by. | 
| fix | Fix problem in  dep.correctsentence segmentation that could lead Prodigy to incorrectly report misaligned tokenization. | 
| fix | Correctly print dependency parser training results in  train. | 
| fix | Update to support latest version of uvicorn. | 
| fix | Allow changing expected max length for MySQL via PRODIGY_MYSQL_MAX_LENenvironment variable to prevent Prodigy from raising an error if the field type was changed tomediumblob. | 
v1.10.1
This update includes small fixes for problems introduced in v1.10.0, as well as improvements to the spaCy v2.3 integration, more customization for audio and video transcription, and a new UI translation for French. Check out the release notes for v1.10 for all the new features introduced in the latest update!
| new | Support customizing field ID used to store transcript in  audio.transcribe. | 
| new | Add UI translation for French. Thanks to Thierno Ibrahima DIOP for the contribution! | 
| fix | Fix sentence segmentation issue that could cause  ner_manualUI to crash. | 
| fix | Make  terms.teachcompatible with spaCy v2.3 by pre-populating the lexeme cache. | 
| fix | Only show pattern matches for provided labels in  ner.teach. | 
| fix | Fix issue in  ner_manualon touch devices that would prevent selecting first token. | 
| fix | Ensure overriding "text": Nonein blocksdoesn’t cause errors in certain interfaces. | 
v1.10.0
Our biggest release yet includes a bunch of new features, interfaces and recipes for dependency and relation annotation, audio and video annotation, as well as a new and improved manual image annotation interface with support for editing shapes and bounding boxes. We’ve also added new recipe callbacks for modifying examples placed in the database and validating answers at runtime, added more settings for whitespace-handling in manual NER annotation, including a mode for character-based highlighting, and introduced various new config settings to customize the web app and annotation interfaces. Thanks to everyone who’s helped us beta test the new features – your feedback has helped a lot! See the changelog below for a full list of new features.
| new | Flexible  relationsinterface for fully manual dependency and relationship annotation and joint span and dependency relation annotation. | 
| new | New recipes  rel.manual, coref.manualand dep.correctfor efficient manual and model-assisted dependency annotation. | 
| new |  audioand audio_manualinterfaces binary and fully manual audio and video annotation. Add and modify segments for different labels and collect feedback about pre-highlighted regions. | 
| new |  audio.manualand audio.transcriberecipes for audio and video annotation and transcription, as well as community recipes for using Prodigy with pretrainedpyannote.audiomodels for speaker diarization in the loop. | 
| new | New and improved  image_manualinterface with support for moving and resizing shapes, adjusting polygons, freehand annotation, more detailed data format and more settings. | 
| new | Support dataset:{name}anddataset:{name}:{answer}syntax assourceargument in recipes to allow loading from existing datasets. For example,dataset:my_setwill use examples datasetmy_setas the input data anddataset:my_set:acceptwill only load in accepted answers. | 
| new | Add validate_answerrecipe component to perform custom validation of annotations created in the UI and prevent invalid answers from being submitted. | 
| new | Allow recipes to return a before_dbcallback for modifying examples before they’re placed in the database, e.g. to strip out base64 data. | 
| new | Update Prodigy for the latest spaCy v2.3 and new models. | 
| new | Support multi-arc dependency annotations (e.g. created with  dep.correct) in train. | 
| new | Set information about trailing whitespace in add_tokensand reflect whitespace (or lack of whitespace) between tokens in ner_manual(can be changed using the"honor_token_whitespace"setting). | 
| new | Add --highlight-charsflag to ner.manualanduse_charsargument toadd_tokensto allow highlighting individual characters instead of full tokens. | 
| new | Add "field_suggestions"property to text_inputUI to allow specifying a list of auto-suggestions to show when the user types or presses ↓. | 
| new | Allow disabling and reordering of the accept, reject, ignore and undo buttons at the bottom of the screen via the "buttons"config setting. | 
| new | Add options --width(card with and maximum image width) and--remove-base64(remove base64-encoded image data) to image.manual. | 
| new | Add file_extargument toImagesandImageServerloaders, always preserve original local file path as"path"and addAudio,AudioServer,VideoandVideoServerloaders. | 
| new | Expose generic Base64andServerhelpers to load any data as a base64-string or via a web server and add genericfetch_mediapreprocessor. | 
| new | Add --rehashflag to db-mergeto force-overwrite hashes. | 
| new | Add --base-modelargument to data-to-spacyto customize tokenizer and sentencizer. | 
| new | Allow individual tasks to override global or UI config via a key "config". | 
| new | Add "ui_lang"config and translations of descriptions, messages and tooltips in the annotation UI to German, Spanish, Dutch and Chinese. | 
| new | Make sidebar history length default to batch_sizeand allow customizing it via thehistory_sizeconfig setting. Note that the history size can’t be larger than the batch size. | 
| new | Show recipe name in project info in sidebar and allow customizing info via "project_info"config. | 
| new | Add Controllermethods and attributes for retrieving total counts and progress by session ID. | 
| new | Warn if global or local prodigy.jsonsettings override potentially critical recipe components. | 
| new | Support custom label colors manual interfaces and automatically pick contrasting text color. | 
| new | Show keyboard shortcuts for toolbar buttons on hover. | 
| new | Show friendlier error if prodigy.jsoncontains invalid JSON. | 
| fix | Make progressfunction returned by recipes consistent and always pass it the controller and the return value of theupdatecallback, if available. | 
| fix | Correctly report per-session progress for streams with a length and multi-user sessions and take feed_overlapinto account. | 
| fix | Improve support for using "force_stream_order": True(repeating feed) with"feed_overlap": False(no overlap between sessions). | 
| fix | Make all manual recipes default to "force_stream_order": Truefor more intuitive stream behavior: batches of tasks are now always re-sent until they’re answered and refreshing the page will show the same batch again. | 
| fix | Fix issue that could cause the  reviewto not displayed changes when user hits undo. | 
| fix | Preserve "choice_style"config setting on tasks so it can be re-applied when running review. | 
| fix | Support simpler data format in  diffinterface to make it work combined with choicein a blocksinterface and prevent clash of"accept"property used by both UIs. | 
| fix | Adjust display of spans with RTL text when "writing_mode": "rtl"is enabled. | 
| fyi | The deprecated --apirecipe argument has been removed and merged with--loader. | 
| fyi |  textcat.manualnow doesn’t perform additional checks for the pre-v1.9 syntax with an (unused) spaCy model argument anymore. | 
| fyi | Loading from standard input now requires the sourceargument to be set to-explicitly. | 
| fyi | The "show_stats"setting to display detailed stats in the sidebar is now set totrueby default. | 
| fyi | The "spans"data created with image_manualnow also include a"type"(either"rect","polygon"or"freehand"), as well as"width","height","x","y"and"center"values for rects. | 
| fyi | Forced stream order and repeating batches by default means that you should use named sessions or set "force_stream_order": Falseif you want multiple users connecting to the same instance. Otherwise, you may get duplicate questions. | 
| doc | Add documentation and feature page for dependency relation annotation. | 
| doc | Add documentation and feature page for audio and speech annotation. | 
| doc | Update feature pages for named entity recognition and computer vision. | 
| doc | Add docs section on efficient NER annotation for fine-tuning transformers like BERT. | 
| doc | Add docs section on recipe callback functions in detail. | 
| doc | Document b64_to_bytes,file_to_b64andbytes_to_b64utilities for converting base64. | 
| doc | Tidy up global config docs and move settings specific to a single interface to interface docs. | 
| doc | Fix various typos and inconsistencies. | 
v1.9.10
This patch release includes small fixes to the force_stream_order setting to
prevent a race condition and duplicate examples. Stay tuned for v1.10, which is
coming soon and will include lots of cool new features!
| new | Add Controller.all_session_ids, all named sessions that have connected to the current instance. | 
| fix | Fix race condition that could cause force_stream_orderto produce duplicate tasks. | 
| fix | Correctly exclude currently shown task when requesting new questions with force_stream_order. | 
v1.9.9
This release includes an important fix for a training regression introduced in the previous version, as well as small improvements.
| fix | Fix issue that’d cause rejected binary text classification annotations to be filtered out in  train. | 
| fix | Improve handling of rejected and ignored examples across different annotation types in  train. | 
| fix | Relax unnecessarily strict validation for  difftasks. | 
v1.9.8
This release includes a new built-in recipe  match for selecting examples
based on pattern matches, as well as various bug fixes and improvements.
| new | General-purpose  matchrecipe to only match patterns in text with various configurations. | 
| fix | Use custom --view-idset in reviewto determine how to merge examples. | 
| fix | Improve default configuration in  trainfor NER models with--init-tok2vec. | 
| fix | Fix filtering that could cause incorrect totals to be reported before training. | 
| fix | Fix async handling of built-in and user-provided databases. | 
| fix | Fix hashing of patterns that’d cause incorrect line numbers to be displayed. | 
| fix | Fix compiler setting that’d cause  print-streamand print-datasetto not output colored results. | 
| fix | Check for correct view ID when printing text classification datasets with  print-dataset. | 
| fix | Correctly pass --eval-splitto data-to-spacy. | 
| fix | Show correct path to Prodigy installation root (not recipe root) in  statscommand. | 
| fix | Fix issue that could cause span rendering problems in  nerif text contains emoji. | 
| fix | Fix UI issue that’d cause card headings to overlay expanded sidebar on small screens. | 
| doc | Fix various typos and links. | 
v1.9.7
This release includes small fixes and improvements to the built-in recipes and interfaces.
| new | Add overwriteflag toadd_tokenspreprocessor to overwrite existing"tokens". | 
| new | Allow  reviewrecipe to overwrite view ID (e.g. to render blocksannotations differently). | 
| fix | Accept pre-set tokens correctly in add_tokensto make it easier to provide custom tokenization. | 
| fix | Improve backwards-compatibility checks of arguments in  textcat.manual. | 
| fix | Correctly report numbers of textcatexamples in trainand filter out ignored answers instead of just ignoring the examples during training and evaluation. | 
| fix | Fix handling of integer option "id"values in print-dataset. | 
| fix | Fix issue that’d cause  text_inputvalue to not reset and auto-focus correctly between tasks. | 
| fix | Fix incorrect validation errors for  depUI and"card_css"setting. | 
| fix | Set more explicit MIME types for JS bundle for server configs that prevent MIME type sniffing. | 
| fix | Adjust eightiestheme to prevent dark text on dark background in choiceoptions. | 
v1.9.6
This release includes small fixes related to async database usage in Python 3.7+
and text classification training with the new  train recipe.
| fix | Fix issue with async database usage in Python 3.7+ that could cause MySQL connection errors. | 
| fix | Ensure --textcat-exclusivesetting is passed down correctly in train. | 
v1.9.5
This release includes small fixes related to multiprocessing and new features introduced in v1.9.0.
| fix | Make  ner.manualwith--patternscorrectly return all examples instead of only the matches. | 
| fix | Fix error when loading evaluation examples in new  trainrecipe with--binaryenabled. | 
| fix | Fix issue in  trainwith--binarywhen restoring pipeline component before saving the model. | 
| fix | Fix Foreign Key constraint error that could occur in Database.drop_examples. | 
| fix | Add thread locking to database reconnect methods in controller. | 
| fix | Fix accuracy output for tagger and parser in  train. | 
v1.9.4
This release includes small fixes, a new option for changing keyboard shortcuts for labels and multiple choice options, and a new loader for serving images.
| new | Add "keymap_by_label"config to change keyboard shortcuts for labels and choice options. | 
| new | Add image-serverloader for serving images from a directory (and bypassing base64 encoding). | 
| fix | Fix too strict validation for  reviewcontent. | 
v1.9.3
This release includes small fixes to the new interfaces introduced in v1.9.0.
| fix | Fix too strict validation for  blockscontent. | 
| fix | Prevent input field in  text_inputfrom losing focus on update. | 
v1.9.2
This release includes small fixes to bugs introduced in v1.9.0.
| fix | Fix error in PatternMatcherwhen assigning combined matches to tasks with no"meta". | 
| fix | Fix too strict validation for  htmltasks with no"html"key but"html_template". | 
v1.9.1
This release includes small fixes to bugs introduced in v1.9.0.
| fix | Fix issue with loading recipes from entry points. | 
| fix | Fix too strict validation for "db"recipe component. | 
v1.9.0
This release introduces tons of new features and improvements, including new recipes, interfaces and workflows. We also redesigned the website, rewrote the documentation from scratch and added lots of new pages, usage guides, demos and examples. We hope you like it! Some highlights in Prodigy v1.9 include new unified training recipes, two new annotation interfaces for free-form text input and combining different UIs, config settings for making streams repeat questions until they’re answered, and changing keyboard shortcuts, official support for spaCy v2.2 and a new recipe for converting Prodigy annotations of different types to a single training corpus in spaCy’s JSON format. See the changelog below for a full list of new features.
| new | Add new general-purpose  trainand train-curverecipes to replace the task-specific training recipes and make overall training process more consistent. | 
| new | Show accuracy per entity type, tag or text category in training results. | 
| new | Add  data-to-spacyrecipe that takes Prodigy datasets for NER, text classification, tagging and parsing and outputs a merged corpus (optionally split into training and evaluation data) in spaCy’s JSON format that you can use withspacy train. | 
| new | Add --patternsargument to ner.manualto pre-highlight suggestions from patterns. This workflow is going to replace the binary ner.match. | 
| new | Add general-purpose  print-streamand print-datasetrecipes that can output different data types. Those recipes are going to replace the more specific print utilities like ner.print-stream. | 
| new | Add  blocksinterface to freely combine annotation interfaces. | 
| new | Add  text_inputinterface to collect free-form text input from annotators. | 
| new | New "force_stream_order"config setting. IfTrue, tasks will always be sent out in the same order and re-sent until they’re answered – even if you refresh the app in your browser. | 
| new | Support customizing keyboard shortcuts. | 
| new | Support tokenizing terms in  terms.to-patternsto create patterns for multi-token terms. | 
| new | Add "exclude_by"config setting to allow recipes to specify whether to filter by input hash or task hash so that manual recipes don’t repeat the same content with different suggestions. | 
| new | Support blank:{lang}, e.g.blank:enas an alternative spaCy model in ner.manual, textcat.teachand trainto start off with a blank model. | 
| new | Pass --labelvalues added to markto the"labels"config so the recipe can be used with manual interfaces like ner_manualand image_manual. | 
| new | Add --no-fetchflag to image.manualto disable base64 conversion of images. | 
| new | Add --fetch-mediaflag to reviewrecipe to temporarily replace paths with base64 data. | 
| new | Also support -as the value ofsourcearguments to read from standard input and make this the recommended best practice (instead of omitting the argument). | 
| new | Always auto-create datasets and deprecate  datasetcommand. | 
| new | Make  compareand ner.eval-abrecipes use the more flexible choiceinterface and deprecate the compareUI. | 
| new | Add more human-readable class names to use in custom CSS and JS. | 
| new | Support new syntax in prodigy.servethat lets you pass in the full command-line command to start Prodigy from within Python. | 
| new | Add data validation for prodigy.json/ recipe config, recipe components and training examples. | 
| new | Make the printed output and messages prettier and more consistent. | 
| new | Make FastAPI the default REST API library and include interactive API docs. | 
| new | Drop support for Python 3.5 and make wheel installers support Python 3.8. | 
| new | Update Prodigy for spaCy v2.2. | 
| fix | Show an example suggested by patterns in  textcat.teachonly once with all matches instead of once per match. | 
| fix | Fix error that’d occur when passing in long label sets on the command line (due to Prodigy checking if it’s a valid file path). | 
| fix | Remove unused spacy_modelargument from textcat.manual. | 
| fix | Exclude by input hash instead of task hash in  ner.manual, ner.correct, pos.correct, textcat.manualand image.manual, using the new"exclude_by"setting. Examples will only be shown again if their content is identical, not if they include different highlighted suggestions. | 
| fix | Fix handling of newline tokens in  ner.manualfor multiple newline character and adjust style of↵symbols. Newline-only tokens are now unselectable by default to prevent creating newline token entities. You can set"allow_newline_highlight": trueto change this. | 
| fix | Show error if MySQL database is used and JSON blob saved to the database is longer than 65535 characters, to prevent MySQL DB from truncating example. | 
| fyi | Rename ner.make-goldandpos.make-goldto ner.correctand pos.correct. The old names are still supported so your code won’t break. | 
| fyi | Deprecate various outdated recipes, the built-in live APIs and the recipe_argsdict. You can still use all of these features and your code shouldn’t break but they’ll be removed in v2. | 
| fyi | Refactor the whole code base and module organization and various other internals, and added simple type annotations to recipe functions. | 
| doc | New documentation and website redesigned and rewritten completely from scratch, with tons of new content, demos and usage examples. The new site also replaces the PRODIGY_README.htmlthat used to be available for download with Prodigy. | 
| doc | Update prodigy-recipesrepo. | 
v1.8.5
This update includes a fix for a regression introduced in v1.8.4, as well as small improvements to the dataset creation and stream handling.
| new | Warn after exhausting streams with many duplicates. | 
| fix | Fix issue introduced in v1.8.4 that could cause the client to send back empty answers if users annotated very quickly. | 
| fix | Remove defaultsession from client and correctly populate session datasets. | 
v1.8.4
This update includes various small fixes to the interfaces and recipes.
| new | Experimental: Allow moving selected bounding boxes in  image_manualinterface via keyboard shortcuts ← → ↑ ↓. | 
| new | Add prodigyundoevent for custom JavaScript. | 
| fix | Fix issue that’d cause label change in  image_manualto not be reflected correctly. | 
| fix | Disable unselecting of radio button if choice_auto_acceptis enabled. | 
| fix | Always prefer rending "html"in classificationinterface, if available. | 
| fix | Improve handling of  choicetasks in reviewrecipe. | 
| fix | Re-add default spacing for most common HTML elements in  htmlinterface. | 
| fix | Ensure bin/prodigyandbin/pgyare interpreted as shell scripts. | 
| fix | Make  textcat.manualcorrectly support single-label use cases. | 
| fix | Fix handling of pre-defined spans in EntityRecognizer. | 
| fix | Fix detection of user databases via entry points. | 
| fix | Fix race condition that’d fire prodigyanswerevent incorrectly. | 
| fix | Prevent card labels from being displayed on top of modals. | 
| fix | Improve fallback if labels are provided to the app in incorrect format. | 
| fix | Fix handling of related sessions in feeds if "feed_overlap"is enabled. | 
v1.8.3
This update includes fixes to  textcat.batch-train, the NER preprocessing
logic and Prodigy’s dependencies.
| fix | Fix issue in  textcat.batch-trainthat wouldn’t passexclusivesetting to the model and converter functions correctly. | 
| fix | Fix handling of multiple choice data in  textcat.batch-train. | 
| fix | Fix segmentation bug that caused spans ending on text boundaries to be dropped. | 
| fix | Make sure span is fully excluded if skip=Trueis set inadd_tokenspreprocessor. | 
| fix | Add srslyto direct dependencies and pin to latest version. | 
| doc | Fix typos and inconsistencies. | 
v1.8.2
This update includes small fixes to the  terms.teach and  review
recipes, as well as improvements to the pretraining support.
| fix | Fix issue in  reviewrecipe that’d raise error if no versions were generated. | 
| fix | Make  terms.teachskip vocab entries with no vectors to prevent unnecessary warnings. | 
| fix | Fix serialization issue of sentencizer in  textcat.batch-train. | 
| fix | Ensure hyperparameters from pretraining are passed to  textcat.batch-train. | 
v1.8.1
This update includes small fixes to the text classification workflows.
| fix | Fix handling of rejected example scores in  textcat.manual. | 
| fix | Ensure handling of --eval-idin textcat.batch-trainremains backwards-compatible. | 
v1.8.0
This release updates Prodigy for the brand new spaCy v2.1, which features BERT-style language model pretraining, an extended match pattern API and faster tokenization. We’ve also added support for basic authentication and several completely new built-in recipes and workflows for reviewing annotations from multiple sessions and resolving conflicts, manual multiple-choice text classification, and merging two or more existing datasets.
| new | Update Prodigy for spaCy v2.1. | 
| new | Add language model pretraining support via --init-tok2vecin training recipes. | 
| new | New interface and  reviewrecipe for reviewing and reconciling annotations from multiple sessions on the same data. View conflicting annotations, resolve them in the UI and create a final training set. | 
| new | Add  textcat.manualrecipe to annotate text categories using the choiceUI. | 
| new | Make  textcat.batch-trainaccept annotations in choiceformat. | 
| new | Add --exclusiveflag to textcat.batch-trainto train mutually exclusive categories. | 
| new | Add  ner.silver-to-goldrecipe to convert binary accept/reject annotations to gold-standard data with no missing values. | 
| new | Add  db-mergerecipe to merge two or more datasets into a new set. | 
| new | Add basic authentication to the app with PRODIGY_BASIC_AUTH_USERandPRODIGY_BASIC_AUTH_PASSenv variables. | 
| new | Add PRODIGY_ALLOWED_SESSIONSenv variable to specify allowed named sessions. | 
| new | Store "_session_id"and"_view_id"with annotations. | 
| new | New REST API powered by FastAPI. Set the PRODIGY_FASTAPIenvironment variable and installfastapi(Python 3.6+) to try it out. | 
| fix | Fix issue in  image_manualUI that’d cause boxes to not be deleted correctly. | 
| fix | Make sure flag button isn’t covered by title in annotation UI. | 
| fix | Use named logger "prodigy"to allow customizing logging behavior. | 
| fix | Allow  textcat.evalrecipe to read fromstdinas expected. | 
| fix | Prevent incorrectly raised KeyErrorinsplit_sentencespreprocessor. | 
| fix | Raise error if Database.add_examplesdoesn’t receive list/tuple of dataset names. | 
| fix | Make sure  choiceinterface adds"accept": []if no selection is made. | 
| fix | If instant_submitis enabled, send answer before requesting new questions. | 
| fix | Prevent keyboard in custom <input>and<textarea>elements. | 
| fix | Preserve docstrings of compiled Cython classes, methods and functions. | 
| doc | Improve various typos and inconsistencies and add new sections for new features. | 
v1.7.1
This update includes a small fix to the "instant_submit" feature introduced in
the previous release.
| fix | Fix issue that could cause tasks to not receive an "answer"when"instant_submit"was enabled. | 
v1.7.0
This update makes it easy to set up named multi-user sessions in a single instance and use some of the multi-user features we’ve developed for the upcoming Prodigy Scale. It also introduces a new setting for instant submissions and support for custom CSS and JavaScript across all interfaces. Of course, we also fixed various bugs and inconsistencies to make sure Prodigy runs as smoothly as possible.
By the way, if you want to add 12 months of updates to your license, you can now do so via our online shop!
| new | Add "instant_submit"option to send back a task instantly after it’s answered in the app, skipping the history and immediately triggering the update callback if available. | 
| new | Support custom named sessions via query parameters in the app to enable multi-user workflows in single instances. For example, accessing the app with /?session=alexwill add all annotations to a session datasetdataset-alex. The boolean"feed_overlap"setting lets you control whether to have each example sent out once so it’s annotated by someone or whether to allow overlaps and send out each example to everyone (default). | 
| new | Add "global_css"option across all interfaces, more human-readable class names and exposedata-prodigy-view-idanddata-prodigy-recipefor custom interface or recipe-specific styling. | 
| new | Add "javascript"option across all interfaces and fire custom events on mount, update and answer. | 
| new | Add --batch-sizeoption to dropcommand to prevent database errors when deleting large datasets. | 
| fix | Make labels in  pos.teachand pos.make_goldcorrectly default to built-in label scheme and raise error if no fine-grained labels are provided. | 
| fix | Make sure PatternMatcheronly shows matches for recipe labels. | 
| fix | Fix bug that would cause add_tokenspreprocessor to raise an error. | 
| fix | Correctly handle min_lengthinsplit_sentencespreprocessor. | 
| fix | Fix bug that’d cause text classification tasks to not be deep copied correctly. | 
| fix | Raise error if  terms.to-patternsis used without label to preventnullvalue. | 
| fix | Fix problem that’d cause dependency arcs to be rendered incorrectly. | 
| fix | Improve relative sizing of bounding boxes and labels for large images. | 
| fix | Ensure task can only be flagged via keyboard shortcut if "show_flag"is enabled. | 
| fix | Drop third-party dependency mmh3that was causing problems for some users. | 
| fix | Make manual NER interface more touch-friendly. | 
| doc | New video: FAQ #1: Tips & tricks for NLP, annotation and training. | 
| doc | Improve various typos and inconsistencies and add new sections for new features. | 
v1.6.1
| fix | Fix split_sentencespre-processor for untokenized examples. | 
v1.6.0
This update takes advantage of pre-built binary wheels for our dependencies and speeds up the installation by up to 10 times! We’ve also added official support for Python 3.7, made excluding the current dataset the default behavior, fixed issues related to patterns, text classification and NER training and improved some internals to get Prodigy ready for multi-user workflows and the upcoming Prodigy Scale.
| new | Add official support and wheels for Python 3.7. | 
| new | Use spaCy v2.0.16 to take advantage of pre-built wheels and allow up to 10 times faster installation. | 
| new | Automatically exclude examples already present in the current dataset (e.g. make --exclude datasetthe default behavior). To disable this feature, you can set"auto_exclude_current": falsein yourprodigy.jsonor recipe config. | 
| new | Add --loaderargument to image.manual. | 
| new | Make annotation card header sticky for long content. | 
| new | Improve internal handling of sessions and streams to get Prodigy ready for better multi-user workflows. | 
| fix | Fix prior in PatternMatcherto prevent matches from being excluded by sorter. | 
| fix | Ensure spans and tokens are correctly updated in split_sentencespreprocessor. | 
| fix | Improve  textcat.evalrecipe and make sure labels are added automatically. | 
| fix | Fix issue that would require refreshing the app when using the manual interface with a low batch size. | 
| fix | Make sure dataset links are removed when dropping a dataset via  drop. | 
| fix | Fix memory leak in NER training that could cause segmentation fault for large datasets. | 
| fix | Fix issue in TextClassifier, where active learning didn’t resume from weights. | 
| fix | Exclude "model"key from hashes so that identical predictions by different models receive the same hash. | 
| fix | Add server middleware to prevent response caching in IE 11. | 
| fix | Improve NER model loading with large vectors. | 
| doc | Fix various typos and inconsistencies. | 
v1.5.1
This update includes several bug fixes and stability improvements related to the new part-of-speech tagging recipes and the built-in pattern matcher model, as well as a better identification system for match patterns.
| new | Add --resumeargument to ner.matchto update matcher from dataset. | 
| new | Use hashes as pattern IDs to allow updating existing matchers even if pattern files change across sessions. | 
| fix | Make  pos.teachand pos.batch-trainwork as expected with both fine-grained and coarse-grained part-of-speech tags. | 
| fix | Fix bug in  ner.iob-to-goldthat’d cause export to fail. | 
| fix | Small improvements to UI and web app stability. | 
v1.5.0
This update includes new recipes for part-of-speech tagging, an experimental release of the new manual image labeling interface and a new mechanism for adding custom loaders, database connectors and recipes via Python entry points. We’ve also added validation for incoming streams and detailed error messages for incorrect task formats, enhanced the training options for sparse and gold-standard named entity data, and improved handling of newlines and formatting tokens in the manual NER interface.
| new | New recipes for part-of-speech tagging:  pos.teach, pos.batch-trainand pos.train-curve. | 
| new | Experimental: Manual image annotation interface and  image.manualrecipe. | 
| new | Add annotation task validation. Before the Prodigy server starts, your stream is checked against a schema to make sure it has the correct format. If not, Prodigy tells you what the problem is. | 
| new | Allow adding custom recipes, databases and loaders via entry points. | 
| new | Add --no-missingflag to ner.batch-trainto assume all correct spans are in the gold annotation, and any spans not in the gold annotation are incorrect. This is especially useful when training from annotations collected with ner.manualor ner.make-gold. | 
| new | Add --resumeargument to terms.teachto update target vector from dataset. | 
| new | Add “true” newlines to newline tokens ↵manual interfaces. The behavior can be turned off by setting"hide_true_newline_tokens": true. | 
| new | Allow marking tokens as "disabled": truein manual interfaces. Disabled tokens can’t be highlighted and can be used to assist annotators with formatting. | 
| new | Converter recipe  ner.iob-to-goldto convert IOB tags to Prodigy’s JSONL. | 
| fix | Disable and restore other pipeline components in batch-trainrecipes. | 
| fix | Ensure seed terms are added to the dataset correctly. | 
| fix | Fix bug that would cause web app to fail with annotation instructions. | 
| fix | Make keyboard shortcuts in  choiceinterface work as expected again. | 
| fix | Add missing import and make  image.testwork out-of-the-box again. | 
| doc | Add sections on Python entry points and document new recipes and interfaces. | 
| doc | Fix various typos and inconsistencies. | 
v1.4.2
This update includes various bug fixes and efficiency improvements.
| new | Allow custom HTML in  classificationinterface. | 
| new | Allow pre-defined selections in  choiceinterface, e.g."accept": [1, 3]. | 
| fix | Improve memory usage of  terms.teach. | 
| fix | Fix data integrity error when dropping datasets using MySQL. | 
| fix | Fix bug in error message of custom recipe validation introduced in v1.4.1. | 
| fix | Resolve problem with image preloading in  imageinterfaces. | 
| fix | Make keyboard shortcuts work as expected in  choiceinterface. | 
| doc | Fix various typos and inconsistencies. | 
v1.4.1
This update improves efficiency of the  ner.batch-train recipe and fixes
the handling of task and input hashes in the database methods and --exclude
option. It also comes with various improvements to error messages and web app
stability.
| new | Improve efficiency of  ner.batch-train– up to 10× faster for some workloads! | 
| fix | Fix problem that would cause text classification tasks created from pattern matches to not have a label assigned to the task. | 
| fix | Ensure that --excludelogic is always applied after the stream is (re)hashed. | 
| fix | Fix bug that would cause hashes to not be returned correctly by the database. | 
| fix | Allow the "instructions"setting to befalseornull. | 
| fix | Improve error messages if recipe file is not valid and if dataset doesn’t exist in  terms.to-patterns. | 
| fix | Various improvements to UI and web app stability. | 
v1.4.0
This update includes a new
annotation interface for relations and
dependencies, as well as an experimental  dep.teach recipe.
 textcat.teach now takes a file of match patterns instead of seed terms,
and manual interfaces now support lists of up to 30 labels with keyboard
shortcuts. We’ve also improved the customization of various components.
| new | Dependency and relation annotation interface and recipes  dep.teach, dep.batch-trainand dep.train-curverecipes for training a dependency parsing model. Still experimental! | 
| new | Allow using  textcat.teachwith a patterns file instead of seed terms. | 
| new | Support list view and keyboard shortcuts for larger label sets in manual interfaces. | 
| new | Add option to display modal with annotation instructions. | 
| new | Allow skipping examples with mismatched tokenization in add_tokens. | 
| new | Make swipe gestures optional via "swipe": true. | 
| new | Allow overwriting the host and port via PRODIGY_HOSTandPRODIGY_PORTenvironment variables. | 
| new | Add split_sents_thresholdconfig setting and--unsegmentedcommand-line option to disable sentence segmentation. | 
| new | Update NewsAPI loader to use v2. | 
| fix | Prevent MySQL server from timing out between requests. | 
| fix | Correctly port over spans in split_sentencespreprocessor. | 
| fix | Always add labels from examples and --labelsin ner.batch-trainand consistently allow loading label sets from a string or a text file. | 
| fix | Fix issue that caused print recipes to not display colors when piped to less. | 
| fix | Ensure that pre-set task meta isn’t overwritten in the PatternMatcher. | 
| fix | Show error message in the web app if view_idis invalid. | 
| doc | Add live demo for new  depinterface. | 
| doc | Add Prodigy Cookbook with quick solutions to various tasks. | 
| doc | Add glossary to “First Steps” workflow. | 
| doc | Order recipes in PRODIGY_README.htmltable of contents by type. | 
v1.3.0
This update introduces a new  ner.make-gold recipe that lets you create
gold-standard data faster by manually correcting a model’s predictions. We’ve
also added a new  pos.make-gold recipe for
annotating part-of-speech tags, as
well as converters to create spaCy training data from Prodigy datasets.
| new | Improved  ner.make-goldworkflow: run a model over your text and manually correct the entities to create gold-standard data. | 
| new | Add "ner_manual_label_style"option to display label set as list of dropdown (always uses dropdown for more than 10 labels) and add number keyboard shortcuts to list of labels. | 
| new | Experimental  pos.make-goldrecipe for manual POS annotation. | 
| new | Experimental  ner.gold-to-spacyand pos.gold-to-spacyconverters. | 
| new | Add option for custom label color schemes for NER and POS tagging. | 
| new | Add UI option to “flag” tasks to bookmark them for later via "show_flag"setting and a flag icon and f keyboard shortcut. Add--flagged-onlysetting to db-outcommand. | 
| new | Rename split_tokenspre-processor toadd_tokens. | 
| fix | Fix rendering and use icons for whitespace tokens in  ner_manual. | 
| fix | Fix rendering of RTL languages in manual interfaces via "writing_dir"setting. | 
| fix | Overwrite database settings correctly when using connect(). | 
| fix | Fix bug in logging timestamp and log minutes correctly. | 
| fix | Only use colored CLI output if supported by user’s terminal. | 
| fix | Don’t disable entity recognizer in  textcat.batch-train. | 
| doc | Document preprocessor components and models’ batch_trainmethods. | 
| doc | Fix various typos and add more examples. | 
| doc | Add docstrings to internals so they can be inspected using help(). | 
v1.2.0
This update introduces  ner.manual, a new recipe and interface for
manual NER annotation. You can now
highlight one or more text spans per task and select the entity label from a
dropdown menu. To allow faster annotation and less fiddly clicking, token
boundaries are used to determine the entity spans when highlighting them. Note
that this workflow replaces ner.mark and boundaries.
| new |  ner.manualrecipe and interface for manual NER annotation. | 
| new | "card_css"option to inject custom CSS into annotation card. | 
| new | Experimental "show_whitespace"for basic nerinterface. | 
| fix | Make --excludeargument and recipe option work as expected. | 
| fix | Don’t merge and modify NER spans before adding example to the database. | 
| doc | Document API of PatternMatchermodel. | 
| doc | Improve formatting of available recipes in prodigy --help. | 
| doc | Fix various typos and inconsistencies. | 
v1.1.0
| new | Automatically add new entity labels in  ner.batch-train. | 
| new | Improve speed during NER training and allow setting the beam width via CLI. | 
| new | Filter out ignored examples before creating training and evaluation sets. | 
| new | Re-add improved version of  ner.evalrecipe. | 
| new | Handle broken JSONL in Reddit loader. | 
| new | Use spaCy model to assign labels in  ner.print-stream. | 
| doc | Small improvements to documentation. |