Contributors
Pixeltable is built by a vibrant community of contributors. We’re grateful for everyone who has helped make Pixeltable better! Want to contribute? Check out our Contributing Guide to get started. Top Contributors: View our amazing contributors on GitHub.Release History
View the complete release history for Pixeltable below. Each release includes detailed information about new features, bug fixes, and improvements. For the latest release information, visit our GitHub Releases page.v0.4.24
Released: November 12, 2025Author: @aaron-siegel
View on GitHub: v0.4.24
What’s Changed
- Update imagen model in tests and docs (3.0 is deprecated) by @aaron-siegel in #929
- Allow hyphens in table and dir names by @aaron-siegel in #926
- Skip download when replicating the same version of a table a second time by @aaron-siegel in #927
- Several fixes and improvements for data sharing by @aaron-siegel in #928
- PXT-862: bug fix for drop_table() by @mkornacker in #930
- Various docs updates by @aaron-siegel in #923
v0.4.23
Released: November 11, 2025Author: @aaron-siegel
View on GitHub: v0.4.23
What’s Changed
- Add PIXELTABLE_API_KEY to CI environment by @aaron-siegel in #914
create_store_tbls: booloption in Catalog.create_replica() by @aaron-siegel in #916- [PXT-380] Remove NamedFunction object and related code in named_function.py by @sergey-mkhitaryan in #911
- Switch to new random ops script in CI by @aaron-siegel in #909
- [PXT-799] Allow setting
fpsgreater than the framerate of the video inFrameIteratorby @aaron-siegel in #918 - Intelligible error message when replicating a view of an existing original base table by @aaron-siegel in #897
- [PXT-837] Support creating/inserting directly from an existing Table by @aaron-siegel in #919
- Add parameters to
make stresstestby @aaron-siegel in #920 - Introduce “anchor tables” in TableVersion(Handle) for live replicas; working pull() by @aaron-siegel in #917
- Time travel for view over snapshot; replicas of view over snapshot by @aaron-siegel in #924
- Proper display of embeddings by @aaron-siegel in #925
v0.4.22
Released: November 04, 2025Author: @aaron-siegel
View on GitHub: v0.4.22
What’s Changed
- Manage
additional_mdfrom Catalog, rather than TableVersion by @aaron-siegel in #913
v0.4.21
Released: November 03, 2025Author: @aaron-siegel
View on GitHub: v0.4.21
What’s Changed
- Hotfix for bug when publishing older versions of a table by @aaron-siegel in #910
v0.4.20
Released: November 03, 2025Author: @aaron-siegel
View on GitHub: v0.4.20
What’s Changed
- pyscenedetect udfs by @mkornacker in #899
- CockroachDB fixes + CI target by @aaron-siegel in #900
- Add protocol for replica operations. by @amithadke in #819
- [PXT-822, PXT-674] Fix for querying snapshots of tables with unstored columns by @aaron-siegel in #895
- Switch to using random_tbl_ops_2 in stress-tests by @aaron-siegel in #898
- Fix nondeterminism in unit test by @aaron-siegel in #905
- [PXT-817] UDFs for reve.com by @sergey-mkhitaryan in #901
- [PXT-826] Refactor index creation logic by @aaron-siegel in #908
- UV_OPTS in Makefile by @aaron-siegel in #896
- Ignore additional_mds when checking table or table version metadata by @amithadke in #903
- [PXT-786] push() and pull() implementations by @amithadke in #907
v0.4.19
Released: October 29, 2025Author: @aaron-siegel
View on GitHub: v0.4.19
What’s Changed
- Add image recipes to cookbook by @apreshill in #857
- Add display-name to CI matrix (prep for testing global media destination) by @aaron-siegel in #879
- Enable all media destinations in CI by @aaron-siegel in #876
- [PXT-814] UDF to encode a numpy array to an audio file by @sergey-mkhitaryan in #881
- Convert notebooks to use YAML frontmatter and fix formatting issues by @goodlux in #880
- Rename a public constant by @sergey-mkhitaryan in #884
- Multi-phase create_table() by @mkornacker in #854
- Initial integration of TwelveLabs Embed API by @mkornacker in #885
- Fix
pxt.__version__by @aaron-siegel in #887 - Update many error messages for consistency by @aaron-siegel in #869
- Replace
Optional[T]withT | None(Python 3.10 style) throughout the codebase by @aaron-siegel in #888 - Docs-related updates to Makefile and pyproject by @aaron-siegel in #889
- [PXT-685] Add
recompute_columns()to computed columns fundamentals notebook by @aaron-siegel in #892 - [PXT-811, PXT-812] Improve two error messages with helpful hints by @aaron-siegel in #891
- Revert two uses of
Optionalin unit tests by @aaron-siegel in #893 - Dependency updates for Python 3.14 by @aaron-siegel in #894
- Azure support by @aaron-siegel in #886
- Default media destination as configuration parameter by @aaron-siegel in #883
v0.4.18
Released: October 22, 2025Author: @aaron-siegel
View on GitHub: v0.4.18
What’s Changed
- Updates to nightly.yml by @aaron-siegel in #866
- Streamline CI configs on PRs by @aaron-siegel in #858
- Update WhisperX to >=3.7 and enable for Python 3.13 by @aaron-siegel in #860
- elements parameter for DocSplitter by @mkornacker in #865
- Fix examples docstring for add_embedding_index() by @aaron-siegel in #871
- Improvements to random_tbl_ops script by @aaron-siegel in #868
- Enforce
numpy>=2.2by @aaron-siegel in #872 - Segmentation-related improvements by @mkornacker in #873
- Randomize the behavior of
sample()in the caseseed=Noneby @aaron-siegel in #828 - [PXT-729] Documentation deploy scripts for Mintlify website and local development by @goodlux in #867
- Properly reconstruct btree and vector indices when a replica is restored by @aaron-siegel in #875
- Fix various errors and typos in README and the notebooks by @sergey-mkhitaryan in #877
- UDFs for Hugging Face Auto model integrations by @aaron-siegel in #870
New Contributors
- @sergey-mkhitaryan made their first contribution in #877
v0.4.17
Released: October 16, 2025Author: @aaron-siegel
View on GitHub: v0.4.17
What’s Changed
- Update model used by Together AI tests by @aaron-siegel in #846
- Fix broken links at the bottom of basics notebook by @apreshill in #844
- Retry failed notebook tests once in CI by @aaron-siegel in #830
- feat(storage): add Backblaze B2 S3-compatible integration and tests by @jeronimodeleon in #840
- cockroachDB: Set null_ordered_last on session start. by @jpeterson-pxt in #838
- cockroachDB: Explicit coercions for arithmetic ops. by @jpeterson-pxt in #839
- Fix for isolated NB tests in CI by @aaron-siegel in #847
- Notebook updates & OpenRouter notebook by @aaron-siegel in #851
- ffmpeg with libx264 by @mkornacker in #855
- Fixed incorrect documentation links by @metadaddy in #859
- Update pixeltable-pgserver dependency to 0.4.0 by @aaron-siegel in #853
- Support packaging of tables with embedding indices for data sharing by @aaron-siegel in #841
- mode ‘accurate’ for VideoSplitter and segment_video() by @mkornacker in #856
- Added PDF-Page-Chunk-Extractor for image extraction (Issue 703) (PR 705) by @kamir in #850
- Formatting fixes by @aaron-siegel in #862
- Fix pyproject and mypy config by @aaron-siegel in #863
- Fixes for load_replica_md() with non-snapshot tables by @aaron-siegel in #861
- Correctly process cellmd in package/restore by @aaron-siegel in #864
New Contributors
- @jeronimodeleon made their first contribution in #840
- @metadaddy made their first contribution in #859
- @kamir made their first contribution in #850
v0.4.16
Released: October 08, 2025Author: @aaron-siegel
View on GitHub: v0.4.16
What’s Changed
- Openrouter Integration by @aaron-siegel in #825
- Concurrency fixes & random_tbl_ops v2 by @aaron-siegel in #814
- Images and arrays in json structures, plus improved storage of array columns by @mkornacker in #812
- Minimal edits to docstrings. by @goodlux in #813
- Add SDK documentation for Mintlify by @goodlux in #835
- Fix for performance problem when importing HF datasets by @mkornacker in #833
- cockroachDB: div, mod operations SQL changed. Timestamp propagated through client stack by @jpeterson-pxt in #823
v0.4.15
Released: October 01, 2025Author: @aaron-siegel
View on GitHub: v0.4.15
What’s Changed
- Add a spot for the cookbook in docs/ by @apreshill in #815
- Fixes for notebook tests resource cleanup by @aaron-siegel in #827
- Adding export_lancedb() to API reference by @mkornacker in #824
- Replace
create_replica()with separatepublish()andreplicate()methods by @aaron-siegel in #816 - PXT-638, PXT-675, PXT-682 Handle Keyboard exception by @amithadke in #803
- PXT-772 Filling in missing docstrings by @goodlux in #822
- with_audio() udf by @mkornacker in #826
New Contributors
- @apreshill made their first contribution in #815
v0.4.14
Released: September 23, 2025Author: @aaron-siegel
View on GitHub: v0.4.14
What’s Changed
- Proper implementation of package/restore for non-snapshot replicas by @aaron-siegel in #797
- Set up pydoclint by @aaron-siegel in #805
- upgrade mint.json -> docs.json by @goodlux in #809
- Enable a destination parameter on stored computed columns. by @jpeterson-pxt in #766
- Add support for running tests with cockroachdb as backend by @amithadke in #811
v0.4.13
Released: September 19, 2025Author: @aaron-siegel
View on GitHub: v0.4.13
What’s Changed
- Added pxt.io.export_lancedb() by @mkornacker in #795
- Update README.md by @pierrebrunelle in #801
- Use raw.githubusercontent.com instead of raw.github.com in tests by @aaron-siegel in #806
- Simplify & generalize TableDataSource types by @aaron-siegel in #804
- Short Sample App: CLI Media Toolkit for Multimodal Data Processing by @pierrebrunelle in #802
- Table.get_versions() by @aaron-siegel in #800
- Fixes for nightly CI by @aaron-siegel in #807
v0.4.12
Released: September 05, 2025Author: @aaron-siegel
View on GitHub: v0.4.12
What’s Changed
- Update model used by groq tests and examples by @aaron-siegel in #790
- Clear TempStore, MediaStore, and HF cache after each test in CI by @aaron-siegel in #792
- Explicitly install pixeltable in run-isolated-nb-tests.sh by @aaron-siegel in #794
- Handle incomplete rate limit headers better by @mkornacker in #788
- SDK changes/fixes for data sharing by @aaron-siegel in #791
- Disable TestWhisperx on Linux w/ GPU by @mkornacker in #789
- recompute_columns(): added where parameter by @mkornacker in #787
v0.4.11
Released: August 29, 2025Author: @aaron-siegel
View on GitHub: v0.4.11
What’s Changed
- missing .md for VideoSplitter by @mkornacker in #784
- CI & dev environment enhancements by @aaron-siegel in #785
v0.4.10
Released: August 28, 2025Author: @aaron-siegel
View on GitHub: v0.4.10
What’s Changed
- Fix local_public_names() to properly exclude private functions by @goodlux in #778
- Add .DS_Store to .gitignore by @goodlux in #779
- More video built-ins by @mkornacker in #768
- Add missing all to gemini and whisper modules by @aaron-siegel in #781
v0.4.9
Released: August 27, 2025Author: @aaron-siegel
View on GitHub: v0.4.9
What’s Changed
- WhisperX Speaker Diarization by @aaron-siegel in #770
- Basic support for concurrent pixeltable metadata creation/upgrade by @amithadke in #769
- Support for pydantic models in Table.insert() by @mkornacker in #760
- Add comments for concurrent pixeltable initialization changes by @amithadke in #772
- Disable notebook tests that are failing in CI for unknown reasons by @aaron-siegel in #777
- Publish the existing mypy plugin under
pixeltable.mypymodule to make it accessible for external use. by @amithadke in #776 - Remove
extpackage and fold contents intofunctionsby @aaron-siegel in #775
v0.4.8
Released: August 20, 2025Author: @aaron-siegel
View on GitHub: v0.4.8
What’s Changed
- Performance test for chat completion integrations by @mkornacker in #746
- Bugfixes related to missing dependencies by @aaron-siegel in #747
- Makefile and pytest improvements by @aaron-siegel in #753
- Update dev version of onnx by @aaron-siegel in #755
- Pytest configuration fix by @aaron-siegel in #756
- RequestRateScheduler improvements by @mkornacker in #752
- Update README.md by @aaron-siegel in #754
- Updating tutorial notebook to use Table.recompute_columns(). by @mkornacker in #757
- Changes to pixeltable shared client for R2 support. by @amithadke in #653
- Fix README spacing and linting issues by @aaron-siegel in #759
- Move stored_img_cols from ExecNode To RowBuilder, add stored_media_cols by @jpeterson-pxt in #749
- Group local media file operations into a MediaStore or TempStore class by @jpeterson-pxt in #748
- Correct construction of two row_builder members. by @jpeterson-pxt in #761
- PXT-661 PXT-662 Adding checks for dropping column used by view predicates by @amithadke in #751
v0.4.7
Released: August 04, 2025Author: @aaron-siegel
View on GitHub: v0.4.7
What’s Changed
- Consolidate ColumnMd operations into from_md() and to_md(). by @jpeterson-pxt in #715
- Update README.md + Changelog by @pierrebrunelle in #727
- Consolidate all store_table row prep into DataRow.create_store_table_row. by @jpeterson-pxt in #723
- More rigor in UDF evolution tests by @aaron-siegel in #728
- Rerun tests that fail due to concurrency conflicts by @aaron-siegel in #737
- Replace most uses of
Union[]with Python 3.10-style unions by @aaron-siegel in #735 - Extend FrameIterator to output all available frame attributes by @mkornacker in #716
- Clean up pytest output by @aaron-siegel in #740
- Introduce
TypedDicts for user-facing table, dir, column, and index metadata by @aaron-siegel in #739 - get_dir_contents(), a more structured replacement for list_tables() / list_dirs() by @aaron-siegel in #742
- Test cleanup by @aaron-siegel in #743
- Prefer public API in tests by @aaron-siegel in #744
- Catching missing sqlalchemy transaction-related exceptions by @mkornacker in #745
- PXT-668: Remove unneeded test_sample_md5_fraction. by @jpeterson-pxt in #750
- PXT-671: fixes to RateLimitsScheduler by @mkornacker in #741
- make_video API Doc by @pierrebrunelle in #736
v0.4.6
Released: July 24, 2025Author: @aaron-siegel
View on GitHub: v0.4.6
What’s Changed
- Migrate from
poetrytouvby @aaron-siegel in #722
v0.4.5
Released: July 24, 2025Author: @aaron-siegel
View on GitHub: v0.4.5
What’s Changed
- Consolidate more MediaStore operations - part 3 by @jpeterson-pxt in #701
- Working Python 3.13 dev installation by @aaron-siegel in #695
- Replace uses of sql.text() in catalog.py with idiomatic SQLAlchemy by @aaron-siegel in #707
- Move some column summary information into RowBuilder. by @jpeterson-pxt in #711
- DataFrameResultSet.to_pydantic() by @mkornacker in #713
- PXT-667: Write media files to MediaStore with correct version. by @jpeterson-pxt in #714
- Time travel by @aaron-siegel in #710
- Correct the table.history status report for newly created views. by @jpeterson-pxt in #719
- Include all columns in packager data preview by @aaron-siegel in #720
- Communicate Column spec for all MediaStore save and move operations by @jpeterson-pxt in #718
- Further simplify DataRowBatch. by @jpeterson-pxt in #724
- Use the method plan._insert_prefetch_node everywhere. by @jpeterson-pxt in #721
- Support Python 3.10 style union types by @aaron-siegel in #726
- Additional config parameters + more flexible rate limit parsing for Azure OpenAI support by @aaron-siegel in #725
v0.4.4
Released: July 16, 2025Author: @aaron-siegel
View on GitHub: v0.4.4
What’s Changed
- Consolidate MediaStore file operations, including temp file name creation by @jpeterson-pxt in #694
- Update google-genai dev dependency by @aaron-siegel in #699
- CI changes for random-tbl-ops by @aaron-siegel in #697
- schema_overrides bugfixes by @aaron-siegel in #700
- Load replicas as views by @aaron-siegel in #696
- Multi-phase transactions by @mkornacker in #692
v0.4.3
Released: July 10, 2025Author: @aaron-siegel
View on GitHub: v0.4.3
What’s Changed
- Allow config parameters to be specified in
pxt.init()by @aaron-siegel in #680 - Prepare to report more status in table.history() by @jpeterson-pxt in #682
pxt.ls()command for pretty-printing all contents of a Pixeltable dir by @aaron-siegel in #681- Handle 429 errors in RateLimitScheduler by @mkornacker in #670
- Support dicts and Sequences of dicts in HF datasets [rough-edges PXT-640] by @aaron-siegel in #684
- Allow packaging of non-snapshot tables in TablePackager by @aaron-siegel in #688
- Use a JSON field xxx_cellmd in place of xxx_errortype and xxx_errormsg by @jpeterson-pxt in #685
- Consolidate media operations in the MediaStore module by @jpeterson-pxt in #691
- Enhance UpdateStatus to subsume SyncStatus. Save user and UpdateStatus in a field in TableVersionMd. by @jpeterson-pxt in #689
- Refactor create_replica to conform to concurrency protocol by @aaron-siegel in #690
- Add additional packages & task configurations to nightly.yml by @aaron-siegel in #693
- Doc fixes for audio and video UDFs by @aaron-siegel in #698
v0.4.2
Released: June 27, 2025Author: @aaron-siegel
View on GitHub: v0.4.2
What’s Changed
- Revert various accumulated workarounds in CI by @aaron-siegel in #669
- Use ColumnHandles in external stores by @aaron-siegel in #664
- Update versions of a few more libraries by @aaron-siegel in #668
- First part of additional status collection for table.history reporting. by @jpeterson-pxt in #654
- Add table.history() method to return a user-readable list of known changes to a table. by @jpeterson-pxt in #640
- Added Table.recompute_columns() by @mkornacker in #667
- Collect more information on ins, del, upd operations. Freeze UpdateStatus. by @jpeterson-pxt in #673
- Refactor SyncStatus for merge with UpdateStatus. by @jpeterson-pxt in #674
- Adding recompute_columns() to overview in table.md by @mkornacker in #675
- CI workflow for random table ops by @aaron-siegel in #676
- ~40% improvement in insert performance by @aaron-siegel in #658
- Skip whisperx on t4 instances by @aaron-siegel in #678
- Pretty-print update status in notebooks or IPython shells by @aaron-siegel in #677
- Performance improvements in add_computed_column by @aaron-siegel in #679
v0.4.1
Released: June 19, 2025Author: @aaron-siegel
View on GitHub: v0.4.1
What’s Changed
- Docs/update model kwargs by @jacobweiss2305 in #662
- Fixes and improvements for nightly CI job by @aaron-siegel in #665
- Docs/changelog v0.4.0 by @jacobweiss2305 in #663
- Update dev versions of many libraries used by Pixeltable by @aaron-siegel in #666
v0.4.0
Released: June 16, 2025Author: @aaron-siegel
View on GitHub: v0.4.0
Highlights
- Support for concurrent insert/query and table/view operations
sample()operator for deterministic, pseudo-random samples of tables and data frames- More flexible API for optional LLM parameters
- Groq integration
- MCP integration
- HEIC image support
- Numerous bugfixes
All Changes
- Support for concurrent table operations by @mkornacker in #611
- New Deepseek notebook by @aaron-siegel in #634
- Re-enable 3 of the 4 disabled Labelstudio tests by @mkornacker in #635
- Implement
to_sqlfor many string methods by @aaron-siegel in #636 - Remove extraneous reload_catalog() in test_packager by @aaron-siegel in #637
- fix building with llm link by @jacobweiss2305 in #638
- Allow HEIC images by @aaron-siegel in #639
- Include preview data in request when publishing a table by @aaron-siegel in #631
- WIP: stratified sampling operation on DataFrame by @jpeterson-pxt in #591
- remove main reference and replace with release by @jacobweiss2305 in #646
- docs: add product updates changelog with version history and release notes by @jacobweiss2305 in #645
- remove print statement in gemini tool calls by @jacobweiss2305 in #651
- PXT-595: Raise error if attempting to access metadata from a future v… by @jpeterson-pxt in #642
- Make TableVersion timestamps consistent across propagated changes. by @jpeterson-pxt in #643
- Update RowBuilder.create_table_raw to save PIL image with the jpeg extension by @Yann-CV in #648
- Fix bug in handling “nullary” JsonMapper expressions by @aaron-siegel in #655
- Update release.sh to handle pre-releases by @aaron-siegel in #656
- Refactor inference API integrations to use
model_kwargsdicts instead of explicit parameters by @aaron-siegel in #641 - Refactor tool invocation unit tests [techdebt] by @aaron-siegel in #657
- Concurrent view interactions by @mkornacker in #652
- Consolidate all SQL generation related to sampling inside of SqlSampleNode by @jpeterson-pxt in #649
- Suppressing asyncio slow callback warnings by @mkornacker in #660
- Groq integration by @aaron-siegel in #659
- First cut at MCP integration by @aaron-siegel in #661
New Contributors
Full Changelog: https://github.com/pixeltable/pixeltable/compare/v0.3.15…v0.4.0v0.4.0-pre.3
Released: June 10, 2025Author: @aaron-siegel
View on GitHub: v0.4.0-pre.3
What’s Changed
- Update release.sh to handle pre-releases by @aaron-siegel in #656
- Refactor inference API integrations to use
model_kwargsdicts instead of explicit parameters by @aaron-siegel in #641 - Refactor tool invocation unit tests [techdebt] by @aaron-siegel in #657
v0.4.0-pre.2
Released: June 07, 2025Author: @aaron-siegel
View on GitHub: v0.4.0-pre.2
What’s Changed
- fix building with llm link by @jacobweiss2305 in #638
- Allow HEIC images by @aaron-siegel in #639
- Include preview data in request when publishing a table by @aaron-siegel in #631
- WIP: stratified sampling operation on DataFrame by @jpeterson-pxt in #591
- remove main reference and replace with release by @jacobweiss2305 in #646
- docs: add product updates changelog with version history and release notes by @jacobweiss2305 in #645
- remove print statement in gemini tool calls by @jacobweiss2305 in #651
- PXT-595: Raise error if attempting to access metadata from a future v… by @jpeterson-pxt in #642
- Make TableVersion timestamps consistent across propagated changes. by @jpeterson-pxt in #643
- Update RowBuilder.create_table_raw to save PIL image with the jpeg extension by @Yann-CV in #648
- Fix bug in handling “nullary” JsonMapper expressions by @aaron-siegel in #655
New Contributors
Full Changelog: https://github.com/pixeltable/pixeltable/compare/v0.3.15…v0.4.0-pre.2v0.4.0-pre.1
Released: May 28, 2025Author: @aaron-siegel
View on GitHub: v0.4.0-pre.1
What’s Changed
- Support for concurrent table operations by @mkornacker in #611
- New Deepseek notebook by @aaron-siegel in #634
- Re-enable 3 of the 4 disabled Labelstudio tests by @mkornacker in #635
- Implement
to_sqlfor many string methods by @aaron-siegel in #636 - Remove extraneous reload_catalog() in test_packager by @aaron-siegel in #637
v0.3.15
Released: May 25, 2025Author: @aaron-siegel
View on GitHub: v0.3.15
What’s Changed
- Rename blueprint links to guides in pixelagent documentation by @jacobweiss2305 in #628
- Add documentation for embedding_access feature by @jacobweiss2305 in #626
- Improve import documentation by @jacobweiss2305 in #624
- Update mint.json to use Kandinsky color theme by @jacobweiss2305 in #633
- Merge different versions of base tables consistently when pulling replicas by @aaron-siegel in #625
- Add UDFs for Google Imagen and Veo; Support Tool Calling in Gemini by @aaron-siegel in #632
v0.3.14
Released: May 20, 2025Author: @aaron-siegel
View on GitHub: v0.3.14
What’s Changed
- PXT-480: Add DATE type to pixeltable supported types. by @jpeterson-pxt in #599
- PXT-560: Combine ALTER TABLE operations when adding or dropping columns. by @jpeterson-pxt in #608
- Remove support for Python 3.9 by @aaron-siegel in #596
- PXT-514 Add distinct to table, dataframe and columnref by @amithadke in #598
- update pixelagent links by @jacobweiss2305 in #615
- Add Bedrock integration notebook with basic chat and tool-based agent by @jacobweiss2305 in #600
- Updates to UDF API docs [rough-edges] by @aaron-siegel in #616
- Docs/building with llms and chg log v3.13 by @jacobweiss2305 in #610
- Properly resolve
ColumnRefs whose reference table differs from the column definition table by @aaron-siegel in #582 - change url to include keyword llms by @jacobweiss2305 in #619
- Add make_video examples to documentation by @jacobweiss2305 in #618
- Logic for reconstituting replica data from a published bundle; new
pxt.create_replica()method by @aaron-siegel in #581 - Add configuration page with system settings and API configuration by @jacobweiss2305 in #622
- Switch from deprecated
google-generativeaipackage to newergoogle-genaiby @aaron-siegel in #627 - PXT-573 fixing planner bugs related to aggregate ordering by @mkornacker in #629
- Update object-detection-in-videos notebook by @aaron-siegel in #630
v0.3.13
Released: May 05, 2025Author: @aaron-siegel
View on GitHub: v0.3.13
What’s Changed
- Update embedding index and add change log by @jacobweiss2305 in #574
- update changelog and add technical diagram by @jacobweiss2305 in #586
- remove sample snippet from installation page by @jacobweiss2305 in #587
- PXT-551 Remove internal column types from pixeltable top level module by @amithadke in #584
- PXT-553: Use source CTE explicitly to generate GROUP BY. by @jpeterson-pxt in #588
- PXT-550 Add markdown when displaying table/dataframe descriptors in n… by @amithadke in #585
- Ensure that extra_fields is properly set in TableDataConduit. by @jpeterson-pxt in #583
- CI fixes by @aaron-siegel in #593
- Improvements and fixes for Table._descriptors() by @mkornacker in #589
- AWS Bedrock Adapter by @aaron-siegel in #592
- [Sample-App] Reddit Agentic Bot by @pierrebrunelle in #590
- Improved error reporting in ExprEvalError by @aaron-siegel in #595
- CI fixes by @aaron-siegel in #603
- Add OpenAI tool call to integration notebook by @jacobweiss2305 in #601
- Fix docs integration links by @jacobweiss2305 in #605
- Update Reddit BOT README.md by @pierrebrunelle in #602
- Add comprehensive user workflow test script with timing by @pierrebrunelle in #594
- add deepseek integration notebook by @jacobweiss2305 in #606
- fix typo in file name by @jacobweiss2305 in #580
- Removing anthropic import from FnCallEvaluator by @mkornacker in #609
v0.3.12
Released: April 18, 2025Author: @aaron-siegel
View on GitHub: v0.3.12
What’s Changed
- PXT-526: Fix concurrency issues with dir operations by @jpeterson-pxt in #562
- Enable linting of
testsby @aaron-siegel in #575 - Two grouping aggregation-related bug fixes by @mkornacker in #576
- Introduce create_replica for replica metadata, and refactor metadata ops in
catalogpackage by @aaron-siegel in #564 - image sim update by @pierrebrunelle in #573
- PXT-410 Handle keyboard interrupt gracefully, clean up in memory stru… by @amithadke in #559
- Client side changes to publish snapshot by @amithadke in #579
- New
pxt.retrieval_tool()for easily exposing a table as a RAG data source by @aaron-siegel in #572
v0.3.11
Released: April 12, 2025Author: @aaron-siegel
View on GitHub: v0.3.11
What’s Changed
- Cleanup grouping in examples by @jacobweiss2305 in #553
- New Logo with Black Background for Darkmode Readme by @pierrebrunelle in #554
- update pixelagent page by @jacobweiss2305 in #555
- PXT-525: Disallow multiple where clauses in the specification of a DataFrame. by @jpeterson-pxt in #552
- add tool choice options to our tool execution example by @jacobweiss2305 in #557
- Fix mypy error by @aaron-siegel in #551
- Generalize release script so it works with other Pixeltable repos by @aaron-siegel in #558
- PXT-465 Add support to initialize Pixeltable with database connection strings by @amithadke in #530
- Removing unused PathDict by @mkornacker in #561
- PXT-319: Disallow updates to media columns. by @jpeterson-pxt in #545
- Prefer file extension over puremagic format when it matches a known document type by @aaron-siegel in #549
- Support for separate userspaces in the Pixeltable catalog by @aaron-siegel in #556
- Widen numpy version by @aaron-siegel in #565
- [Changelog] Update product-updates.mdx by @pierrebrunelle in #566
- Brand New Readme for Launch Prep by @pierrebrunelle in #567
- PXT-461: Enable table.select(None). by @jpeterson-pxt in #568
- Linting for
catalog,exec,io, andtoolby @aaron-siegel in #560 - Update README.md by @pierrebrunelle in #570
- Integration of JsonMapper with async expr evaluation. by @mkornacker in #563
- Require type hints for all functions in the code base by @aaron-siegel in #571
- Fix for add_embedding_index() when embedding function has arity > 1 by @aaron-siegel in #569
v0.3.10
Released: April 02, 2025Author: @aaron-siegel
View on GitHub: v0.3.10
What’s Changed
- Introduce
pxtf.map()as a replacement for >> to create JsonMappers by @aaron-siegel in #514 - PXT-384 Support string concatenation operations(+ and *) in Arithmeti… by @amithadke in #529
- restructure docs by @jacobweiss2305 in #541
- Fix event loop debug logging by @mkornacker in #544
- Fold import operations into table_create and insert methods. by @jpeterson-pxt in #522
- PXT-336: Add access method for embedding indices. by @jpeterson-pxt in #526
- remove versions from docs by @jacobweiss2305 in #546
- Use pixeltable-yolox by @aaron-siegel in #543
- Documentation updates by @aaron-siegel in #548
- Add unit tests for QueryTemplateFunction in JsonMapper by @aaron-siegel in #542
- Add table ids to pixeltable mds. by @amithadke in #547
- rename extensions to libraries by @jacobweiss2305 in #550
v0.3.9
Released: March 28, 2025Author: @aaron-siegel
View on GitHub: v0.3.9
What’s Changed
- PXT-499 Add create_parents option to create_dir to create missing ele… by @amithadke in #525
- Jw/fix syntax error by @jacobweiss2305 in #531
- Concurrent directory operations by @mkornacker in #510
- adding pixelagent page by @jacobweiss2305 in #536
- PXT-512 Update the together.ai examples notebook to use the newer mod… by @amithadke in #537
- Bugfix when drop_dir() is the first operation after a catalog load by @aaron-siegel in #539
- Fixing log output of paths. by @mkornacker in #538
- Bugfix related to chained tool calling by @aaron-siegel in #534
- Bugfix involving
[@pxt](https://github.com/pxt).queryinstances whose parameters have default values by @aaron-siegel in #540
v0.3.8
Released: March 25, 2025Author: @aaron-siegel
View on GitHub: v0.3.8
What’s Changed
- add async support to udfs and column casting to table operations by @jacobweiss2305 in #518
- Jw/docs move mcp server docs by @jacobweiss2305 in #519
- Fix broken link + chatbot by @jacobweiss2305 in #520
- adding jfk mcp server by @jacobweiss2305 in #515
- Update changelogs and added Deepseek to Integration Tab by @pierrebrunelle in #523
- remove default values from udf args in docs by @jacobweiss2305 in #527
- Load jfk index on MCP initialization by @jacobweiss2305 in #528
- Linting for
ext,func,share, andutilspackages by @aaron-siegel in #517 - Fix bug in JsonPath serialization by @aaron-siegel in #532
- replace get_view with get_table by @jacobweiss2305 in #533
v0.3.7
Released: March 19, 2025Author: @aaron-siegel
View on GitHub: v0.3.7
What’s Changed
- remove mentions of [”] notation by @jacobweiss2305 in #504
- Catalog changes to prepare for concurrency by @mkornacker in #497
- update configurations page to match api reference by @jacobweiss2305 in #505
- Introduce linting by @aaron-siegel in #482
- add video index to cookbook by @jacobweiss2305 in #507
- Fail gracefully when a backwards incompatibility is detected in a computed column UDF call by @aaron-siegel in #494
- Docs/update vision search example by @jacobweiss2305 in #508
- Add MCP to docs by @jacobweiss2305 in #509
- Refactor Config into a separate abstraction distinct from Env by @aaron-siegel in #511
- Use just-in-time initialization for spaCy, speeding up pxt.init() by @aaron-siegel in #513
- Update Label Studio job to Python 3.10 in nightly CI by @aaron-siegel in #516
- Bugfixes by @aaron-siegel in #512
v0.3.6
Released: March 12, 2025Author: @aaron-siegel
View on GitHub: v0.3.6
What’s Changed
- [OpenAI/Anthropic] Support multiple invocations of the same tool in tool calling logic by @aaron-siegel in #496
v0.3.5
Released: March 11, 2025Author: @aaron-siegel
View on GitHub: v0.3.5
What’s Changed
- Test suite improvement: Use pytest fixtures for Hugging Face embedding models by @aaron-siegel in #483
- PXT-0126: Enable view creation from dataframes which include a select clause by @WildCard932 in #479
- Add user and additional_md fields to metadata structs by @aaron-siegel in #485
- Update llama_cpp version and disable in non-Linux CI by @aaron-siegel in #486
- Fix documentation for the stored attribute on computed columns. by @WildCard932 in #487
- Update to Poetry 2.x by @aaron-siegel in #488
- Add mintlify by @jacobweiss2305 in #424
- Readme update with developer-focused content by @pierrebrunelle in #490
- [OpenAI] Determine completion token upper bounds on a per-model basis by @aaron-siegel in #493
- Update pyav to 14.2 and WhisperX to 3.3.1 by @aaron-siegel in #492
- Improvements to handling of UDF calls in computed columns by @aaron-siegel in #481
- Data sharing: logic for publishing snapshots by @aaron-siegel in #484
- Add audio file by @jacobweiss2305 in #500
- PXT-279: Refactor import methods, add functionality. by @WildCard932 in #489
- Deepseek integration by @aaron-siegel in #498
- Properly handle relative pathnames and filenames with unusual characters by @aaron-siegel in #499
- Release script fixes for poetry 2.0 by @aaron-siegel in #501
v0.3.4
Released: February 23, 2025Author: @aaron-siegel
View on GitHub: v0.3.4
What’s Changed
- Test resiliency improvements by @aaron-siegel in #476
- A packager for table data by @aaron-siegel in #471
- PXT-0456: Allow numpy.ndarray arrays to be used a Literal constants by @WildCard932 in #478
- Support OpenAI reasoning models by @aaron-siegel in #477
- Update postgres to 16.8 and pgvector to 0.8.0 by @aaron-siegel in #480
v0.3.3
Released: February 15, 2025Author: @aaron-siegel
View on GitHub: v0.3.3
What’s Changed
- Apply formatting by @aaron-siegel in #463
- Converting more udfs to async by @mkornacker in #455
- fix for notebook test failure by @mkornacker in #464
- Fix add_computed_column() syntax in pxtf.huggingface docs by @aaron-siegel in #465
- Add export_parquet to docs by @aaron-siegel in #467
- PXT-405 AudioSplitter support by @amithadke in #451
- Update README.md by @pierrebrunelle in #474
- Replace deprecated add_computed_column() syntax in docs by @aaron-siegel in #468
- PXT-0455: Enable computed columns of all types to be unstored. by @WildCard932 in #470
- [SHOW] PXT-0416: Enable variable parameter in query limit() clause by @WildCard932 in #454
- Tables as UDFs by @aaron-siegel in #475
v0.3.2
Released: January 31, 2025Author: @aaron-siegel
View on GitHub: v0.3.2
What’s Changed
- dealing with unexpected behavior of AsyncConnectionPool by @mkornacker in #447
- PXT-407 Migrate sample apps to new query syntax by @jacobweiss2305 in #441
- PXT 401/PXT-402 Add verbose system config option by @amithadke in #442
- Pxt-401 Add newline when printing to stdout by @amithadke in #448
- Run tmate in detached mode in pytest action by @aaron-siegel in #453
- Support generalized arrays (unparameterized or with only a dtype) by @aaron-siegel in #450
- Archive Pixeltable logs from every test run by @aaron-siegel in #456
- Remove unused code from arrow.py by @aaron-siegel in #460
- Pxt 429 missing tiktoken by @jacobweiss2305 in #459
- upgrade httpcore by @mkornacker in #461
v0.3.1
Released: January 24, 2025Author: @aaron-siegel
View on GitHub: v0.3.1
What’s Changed
- fastAPI bug fixed by @2pk03 in #440
- Update Gemini version to 0.8.4 by @aaron-siegel in #444
- PXT-0244: Correct validity of col error properties by @WildCard932 in #443
- PXT-396 Treat collections with all constants as Literals. by @amithadke in #430
- Type checking for
testspackage by @aaron-siegel in #445 - Phase 1 of parallel execution by @mkornacker in #418
- fix for test_tool_invocations() by @mkornacker in #446
New Contributors
- @2pk03 made their first contribution in #440
- @WildCard932 made their first contribution in #443
- @amithadke made their first contribution in #430
v0.3.0
Released: January 17, 2025Author: @aaron-siegel
View on GitHub: v0.3.0
Important
This release contains a few breaking API changes. The most significant change is that the deprecated syntax for adding columns has been removed. This will now generate an error:What’s Changed
- PXT-179 Add a if_exists parameter to add_* APIs by @anushas in #422
- Add a section on UDAs to the UDF feature guide by @aaron-siegel in #437
- Various API changes for version 0.3.0 by @aaron-siegel in #426
- Terminology: use ‘aggregate’ in place of ‘aggregator’ in UDF docs by @aaron-siegel in #438
- Support tool choice in OpenAI and Anthropic by @aaron-siegel in #436
v0.2.30
Released: January 11, 2025Author: @aaron-siegel
View on GitHub: v0.2.30
What’s Changed
- Add multimodal chat sample app by @jacobweiss2305 in #419
- Windows Support: Update Makefile to enforce file creation with -Force option by @jacobweiss2305 in #420
- Update hf datasets version by @aaron-siegel in #425
pixeltable.functions.mathmodule by @aaron-siegel in #427- Sample Apps: AI-Based Trading Chrome Extension by @pierrebrunelle in #428
- PXT-373 - Add if_not_exists parameter to drop_* APIs by @anushas in #423
- Tool calling by @aaron-siegel in #416
v0.2.29
Released: December 26, 2024Author: @aaron-siegel
View on GitHub: v0.2.29
What’s Changed
- PXT-361 - improve DataFrame docstrings by @anushas in #394
- PXT-354: Bug: Indexed column for a view may not load correctly from persistence by @anushas in #395
- PXT-235 - do not accept bool literals in int columns by @anushas in #400
- PXT-372: Bug: Test-only: Assertion in ReloadTester by @anushas in #409
- PXT-374: Bug: cannot create an index with the same name as one that e… by @anushas in #406
- PXT-388: Change the SQL Engine isolation level to ‘REPEATABLE READ’ by @anushas in #417
- Allow Function instances, UDFs, and UDAs to have multiple signatures by @aaron-siegel in #403
- PXT-179 Add a if_exists parameter to create_* APIs by @anushas in #401
- PXT-382: Bug: Similarity queries do not work correctly with ReloadTester by @anushas in #411
- Adding a Gradio Example to our sample apps by @pierrebrunelle in #415
- Fixes for pgserver by @aaron-siegel in #421
- Support JSON Schemas for validating
JsonTypecolumns by @aaron-siegel in #380
v0.2.28
Released: December 11, 2024Author: @aaron-siegel
View on GitHub: v0.2.28
What’s Changed
- Update Title in Readme.md of Discord Bot by @pierrebrunelle in #399
- Update Expr.id after a call to substitute() by @aaron-siegel in #402
- Working with Gemini notebook by @anushas in #393
- Fixes for PyAV 14 by @aaron-siegel in #405
v0.2.27
Released: December 01, 2024Author: @aaron-siegel
View on GitHub: v0.2.27
What’s Changed
- Update index.md by @pierrebrunelle in #392
- Gemini adapter by @aaron-siegel in #391
- PXT-345 Add .txt support for DocumentType by @anushas in #389
- fix: use != instead of ‘is not’ for string comparison by @jacobweiss2305 in #396
New Contributors
- @jacobweiss2305 made their first contribution in #396
v0.2.26
Released: November 23, 2024Author: @aaron-siegel
View on GitHub: v0.2.26
What’s Changed
- Refactor the
docsandexamplesfolders by @aaron-siegel in #378 - Move examples/ to docs/sample-apps/ by @aaron-siegel in #379
- Readme Update: Added sample apps to table by @pierrebrunelle in #381
- Python 3.13 Support by @aaron-siegel in #382
- Test utility to verify query results after catalog reload by @mkornacker in #365
- Lock av version in dev environment by @aaron-siegel in #385
- Update pyproject.toml by @aaron-siegel in #386
- Fix handling of Optional vs. Required in astype() by @aaron-siegel in #387
- Friendlier
reproutput for Tables, DataFrames, and Expressions by @aaron-siegel in #384 - Update Ollama integration for ollama 0.4.0 by @aaron-siegel in #390
- Feature guide for time zones by @aaron-siegel in #388
- PXT-288 - Provide pxt.io.export_parquet API by @anushas in #374
- PXT-352 gracefully error when using a catalog.Table after it is dropped by @anushas in #383
- Basic joins by @mkornacker in #377
v0.2.25
Released: November 18, 2024Author: @aaron-siegel
View on GitHub: v0.2.25
What’s Changed
- Disable sentence_transformers tests on linux ARM by @aaron-siegel in #370
- Fix for backwards-incompatible Mistral API change by @aaron-siegel in #368
- Reusable retry script for CI by @aaron-siegel in #369
- PXT-330 Fix a bug in create_insert_plan by @anushas in #372
- Update README.md by @pierrebrunelle in #373
- Add Context-Aware Discord Bot with Semantic Search Capabilities by @pierrebrunelle in #367
- PXT-290: Allow APIs to accept table/column handles by @anushas in #371
- Partial bindings for
Functionby @aaron-siegel in #363 - Add config.md documenting configuration options by @aaron-siegel in #376
- TileIterator by @aaron-siegel in #375