Changelog 2026
¶
Note
Get notified by watching releases for git repositories: lamindb · laminhub · laminr · nf-lamin · bionty
Follow updates on LinkedIn
2026-09-15 hub 1.56.0¶
✨ Allow branch selection to include main PR @chaichontat
✨ Filter button with dropdown in entity pages that don’t have a filter sidebar PR @sheetalgiri
:lipstick: Make Records the default first tab and move Overview all the way to the right PR @falexwolf
2026-09-08 hub 1.55.0¶
🚸 Hide table view on non-sheet record pages PR @chaichontat
🐛 Fix branch selector behavior on record subtype pages PR @chaichontat
2026-09-07 blog¶
2026-09-01 hub 1.54.0¶
✨ Support populated and list-valued typed-record feature filters PR @chaichontat
🐛 Fix Firefox sheet cell overflow PR @chaichontat
Soon db 2.10.1¶
2026-08-27 hub 1.53.0¶
🚸 Support a broad range of data types for launchable functions PR @chaichontat
🚸 Under the
Recordstab, renameTypetoPageso that pure UI users don’t have to learn the concept of a record type PR @sheetalgiri
2026-08-26 db 2.10.0¶
⚠️ lamin init now creates a database with dev-dir in the current directory, analogous to git; if not passing --storage, the default storage location is now ./storage/ PR @falexwolf
What was the behavior before?
lamin init scoped auto-connections to a LaminDB instance by writing ~/.lamin/current_instance, hence, you’d auto-connect in any child of $HOME. Now it writes $CWD/.lamin/current_instance, creating the dev-dir for that instance; hence, you only auto-connect in that directory.
The default value for --storage was ., the current working directory.
Features:
✨ Add
lamin settings mountto mount storage locations read-only, for example, FUSE PR @jpfeuffer✨ Allow moving artifacts across managed storage locations PR @Koncopd
API:
🚸 Delete the
dev-dirmarker upon deleting a database PR @falexwolf🚸 Avoid the edge case of loading a dataset as an input of a run and then tracking it as recreated in that run, avoid cycles in the lineage of records PR @falexwolf
🚸 Validate type annotations in functions that are decorated with
@ln.flow()or@ln.step()PR @falexwolf🚸 Broaden name deduplication in
HasTypeto search the hierarchy if notypeis passed PR @ishitajain9717🚸 Consistent API for saving to non-default databases via the
usingargument inln.save()&BaseSQLRecord.save()PR @falexwolf🚸 Enable linting scripts to check whether they produce complete data lineage PR @sheetalgiri
🚸 Make the default child record space consistent with the UI behavior PR @sunnyosun
🚸 If a path inside a folder-like artifact is passed to
Artifact(), return the existing folder-like artifact PR @Koncopd🚸 Allow
Artifactregistration also if cloud stats cannot be read PR @Koncopd
Performance:
⚡️ Speed up
lamin initby avoiding network calls for local databases PR @falexwolf⚡️ Do not eagerly import
fsspecandupathPR @falexwolf
Bug fixes:
🐛 In
gitintegration, allow finding objects in merge commits PR @ishitajain9717🐛 Do not launch implicit queries inside an atomic block after a failure PR @Koncopd
🐛 Correctly process anonymous
gsrequests inArtifact()PR @Koncopd
Dependencies:
2026-08-10 hub 1.52.0¶
✨ Show spaces in feature lists PR @chaichontat
✨ Show organism beside gene symbols PR @chaichontat
🚸 Show branch changes on detail pages PR @chaichontat
🐛 Make compact feature summaries expandable PR @chaichontat
🐛 Fix record search on the database writes page PR @chaichontat
2026-08-07 nf 0.9.0¶
2026-08-04 db 2.9.1¶
2026-08-03 db 2.9.0¶
⚠️ Run lamin migrate deploy
🗃️ Add fields: Schema.suffix and Collection.schema; more stringent unique constraints when feature is NULL PR PR PR @falexwolf
All databases that are connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed database, please migrate your instance with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
Features:
✨ Track token counts, agent steps, and tool calls in addition to agent transcripts PR @falexwolf
✨ Enable registering http directories as artifacts, with correct hashes & sizes PR @Koncopd
API:
🚸 Deprecate
Schema.add_optional_feature()in favor ofSchema.add()PR @falexwolf🚸 Simplify output of
schema.describe()PR @falexwolf🚸 More robust
.describe()for corrupted schemas PR @falexwolf🚸 Expose
.cache()onUPathPR @falexwolf🚸 Avoid double logging if passing
--heretolamin connectPR @falexwolf🚸 Check key on init of
sqlrecordand savingartifactPR @Koncopd🚸 Clean CLI surface for finishing a tracked session PR @falexwolf
Database:
🗃️ Add field
.schematoCollection, parallel toArtifactandRecordPR @falexwolf🗃️ Add field
.suffixtoSchema, parallel toArtifact.suffixPR @falexwolf
Bug fixes:
🐛 Fix error on large uploads and lacking progress print for
gcsfsPR PR @Koncopd🐛 Check expiration of the db token from
LAMIN_DB_TOKENenv variable PR @Koncopd🐛 Clear instance context (
branch,space) cache fromsettingson re-connect PR @Koncopd🐛 Fix user messages missing from transcript HTML report PR @Ebad371
🐛 Harden Copilot/Claude session tracking with hard errors PR @Ebad371
Security:
Dependencies:
Docs:
📝 Fix agent-specific skill path and document the Copilot Local/Copilot toggle PR @Ebad371
📝 Simplify section on versioning and branching PR @falexwolf
2026-08-03 bionty 2.4.3¶
🍱 Update EFO URL to use GitHub release link PR @sunnyosun
🏷️ Mark as py.typed PR @falexwolf
2026-08-03 hub 1.51.0¶
✨ Show validating schemas on collection pages PR @chaichontat
💄 Consolidate run views to be consistent with record views and show ULabels on runs PR @falexwolf
2026-08-03 blog¶
📝 Agentic variant analysis of the 1000 Genomes Project using Polars, DuckDB, and lakehouses PR @Raaghav-Pillai
2026-07-30 atlas¶
2026-07-20 hub 1.50.0¶
✨ Add scalar feature filters to artifact lists PR @chaichontat
✨ Add scalar sheet editing to experiment registration PR @chaichontat
🚸 Display schema information for collections PR @falexwolf
🍱 New video: Trace data, code & agents PR @sunnyosun
2026-07-17 hub 1.49.0¶
✨ Add drag-and-drop uploads to the markdown editor PR @sheetalgiri
✨ Add service accounts under organization settings PR @Ebad371
🐛 Fix project hierarchy navigation, search, and metadata PR @chaichontat
💄 Change layout of artifacts page, adjust fonts to be more consistent and style of parquet preview table PR @sheetalgiri
2026-07-17 db 2.8.1¶
🚸 Support parallel Claude Code sessions and prettify agent traces PR @Ebad371
🐛 Schema members should take precedence over flexible features PR @ishitajain9717
📝 Clearer
acid.mddoc PR @falexwolf📝 Clearer organization of system
design.mddoc PR @falexwolf
2026-07-13 hub 1.48.0¶
✨ Show orchestrating runs in lineage graph PR @falexwolf
🚸 Distinguish spaces by shape and color PR @chaichontat
💄 Add icons for registries PR @sunnyosun
2026-07-13 db 2.8.0¶
Features:
API:
🚸 Make behavior of
to_dataframe(include="features')consistent acrossQuerySetandRegistryPR @falexwolf🚸 More strictly enforce
CanonicalSuffixPR @Koncopd @falexwolf🚸 Do not treat the bionty default space differently from other entities PR @falexwolf
🚸 Merge branches without requiring global branch switch PR @sheetalgiri
🚸 Actually label reverse accessor for
output_transformsPR @falexwolf🚸 Add
to_artifact()toRecordSetPR @falexwolf🚸 Fix type annotations of
@strict_classmethodand@instance_or_classmethodPR @falexwolf🚸 More concise warning upon missing or surplus modules PR @falexwolf
🚸 Expose high-level field names on queries through M2M fields PR @falexwolf
🚸 Simplify lineage during record export via
to_dataframe()PR @falexwolf🚸 Handle reports of erroring runs in
@ln.flow()better PR @falexwolf
CLI:
🚸 Speed up and prettify output of
lamin list branchPR @falexwolf⚡️ Speed up
lamin switchby a factor 3 PR @falexwolf
Bug fixes:
🐛 Retain empty columns in
Record.from_dataframe()PR @ishitajain9717🐛 Fix
lamin create branchhub path PR @falexwolf🐛 Less stringent unique constraint in
ArtifactSchemaPR @falexwolf🐛 Fix stale instance reference in
lamin connect --herePR @falexwolf🐛 Also save source code in
Transform.from_path()PR @falexwolf
Docs:
📝 Dedicated agent skills via laminlabs/lamin-skills PR @falexwolf
📝 Add screenshots to the “Manage changes” guide PR @sheetalgiri
2026-07-10 hub 1.47.0¶
✨ Versioned notes as in LaminDB PR @chaichontat
✨ Implement exchange jwt exchange edge function and endpoint PR @Koncopd
✨ Support URL dtype PR @chaichontat
⚡️ Speed up scrolling in wide record tables PR @chaichontat
🐛 Allow clearing optional launch enums PR @chaichontat
2026-07-10 blog¶
📝 Scaling anndata training to the terabyte scale with annbatch PR @felix0097
2026-07-08 hub 1.46.0¶
✨ Introduce a preview for folder-like artifacts PR @sheetalgiri
⚡ Speed up loading of the artifact page PR @chaichontat
💄 Pricing page v4: Announce Beta Pro Plan at $10/month and spell out collaborator tiers PR @Ebad371
💄 Support tagging records with emojis PR @sunnyosun
2026-07-07 R 1.3.1¶
2026-07-06 hub 1.45.0¶
✨ Update branch page to display objects, comments, and a sidebar to change the branch status PR @sheetalgiri
🚸 Use project-aware sheet default names PR @chaichontat
🚸 Indicate ongoing upload PR @falexwolf
💄 A provenance header for all pages PR @falexwolf
💄 A more minimal design for the page headers across the app PR @sunnyosun
💄 Show records in lineage graph PR @falexwolf
2026-06-29 nf 0.8.3¶
2026-06-29 db 2.7.0¶
Features:
✨ Recognize
schema.indexin theRecordAPI PR @sunnyosun✨ Support schema transfer with related objects PR @falexwolf
UX:
🚸 Expose notes as a
.notesattribute PR @falexwolf🚸 Introduce
Feature.is_null()as a predicate for filtering objects by whether they measure or do not measure a feature PR @falexwolf🚸 Introduce
RecordSetto allow exporting arbitrary sets of records PR @falexwolf🚸 Throw an error if categorical values would be read from
RecordJsonPR @ishitajain9717🚸 Reduce the default value for limit in
to_dataframe()from 100 to 20 PR @falexwolf🚸 Allow passing urls to
lamin loadfor records PR @falexwolf🚸 Early fallback to SQLite clone PR @falexwolf
🚸 Add validation check for union dtypes PR @ishitajain9717
🚸 Expose
Transform.from_path()PR @falexwolf🚸 Display run URL instead of transform URL PR @falexwolf
🚸 Export sheet artifacts to the sheet’s space PR @sunnyosun
CLI:
🚸 Speed up some CLI commands via the hub REST API PR @fredericenard
🚸 Catch
NoWriteAccessin CLI PR @falexwolf🚸 Catch
CurrentInstanceNotConfiguredin CLI PR @falexwolf
Performance:
⚡️ Speed up
Record.from_dataframe()by a factor ~2 PR @ishitajain9717⚡️ Speed up
Record.from_dataframe()in presence of indexes PR @ishitajain9717
Bug fixes:
🐛 Fix ambiguous match in
sheet.to_artifact()for duplicate names PR @sunnyosun🐛 Reorder schema features on update from
featuresinput PR @sunnyosun🐛 Fix single-key dict collapse in
get_values()PR @sunnyosun
Legacy API:
🔥 Remove backward compat for legacy
ln.Paramcall pattern from v1 PR @falexwolf
Docs:
📝 Add
spaceandbrancharguments to signatures PR @ishitajain9717📝 More clearly document dynamic registries PR @falexwolf
2026-06-23 hub 1.44.0¶
✨ Add Excel support to sheet imports PR @chaichontat
✨ Implement schema index feature handling in CSV editor and related components PR @chaichontat
🚸 Hide sheet index for sheets without a schema index PR @chaichontat
🚸 Scope sheet import auto-create to writable target spaces PR @chaichontat
🚸 Add single-space record type controls PR @chaichontat
🚸 Constrain single-space records to their type space PR @chaichontat
🐛 Fix XLSX upload failures with worksheet selection PR @chaichontat
🐛 Keep sheets editable with union dtype columns PR @chaichontat
🐛 Prevent list registry selectors from creating missing values PR @chaichontat
2026-06-10 hub 1.43.0¶
✨ Remember each sheet’s last view PR @chaichontat
🐛 Fix recursive data lineage expansion PR @chaichontat
2026-06-10 db 2.6.1¶
🚸 Enable passing arbitrary spaces to the
SQLRecordSettings.single_spacesetting PR @falexwolf🚸 Print index as the first element in
schema.describe()if it exists PR @falexwolf
2026-06-09 blog¶
📝 Simpler queries for the 2.5B transcriptional profiles of the Arc Virtual Cell Atlas PR @falexwolf
2026-06-09 hub 1.42.0¶
2026-06-08 db 2.6.0¶
⚠️ Run lamin migrate deploy
🗃️ Add fields: Artifact.extra_data and Run.extra_data JSON fields, Transform.run and TransformTransform.run, Feature._ounit_str PR @falexwolf
All databases that are connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed database, please migrate your instance with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
✨ Constrain the content of dynamic registries to be in the same space as the registry PR @falexwolf
🚸 Store
index-like features in thenamefield ofRecordPR @sunnyosun🚸 No input tracking warning if no default database PR @falexwolf
🚸 Inherit space from
storage.spacein Artifact constructor ifstorageis passed andspaceis not passed PR @falexwolf🚸 Improve typing of
Feature()constructor PR @ishitajain9717🚸 Upon exporting records, link each single record as an input rather than their type, always link record exports against a run of
__lamindb_record_export__PR1 PR2 PR3 @falexwolf🚸 Enable pre-filtering records before export PR @falexwolf
🏷️ Fix type annotation of
SQLRecord.filter()to be LaminDB’sQuerySet, not Django’s PR @falexwolf
Performance:
Refactor:
♻️ Homogenize branch and space treatment in constructors PR @falexwolf
♻️ Refactor the
Runconstructor, set run status upon start and completion of transfer and export functions PR @falexwolf
Docs:
📝 Refer to
SQLRecordtypes as (dynamic) registries PR @falexwolf📝 Advocate feature objects over feature names PR @falexwolf
2026-06-08 hub 1.41.0¶
✨ Add compact density for sheets and record lists PR @chaichontat
✨ In transfer, visualize the incoming artifact as a new node and make it clickable to lead to the source database PR @falexwolf
🚸 Add CSV index selection for sheet imports PR @chaichontat
2026-06-05 hub 1.40.0¶
🚸 Make record creation harder to trigger accidentally PR @chaichontat
🚸 Prettier display of special transforms & more minimal transform design overall by removing display of unnecessary information PR @falexwolf
2026-06-04 nf 0.8.2¶
2026-06-01 hub 1.39.0¶
🚸 Better design for the space selector PR @chaichontat
🚸 Better design for artifacts filter sidebar PR @falexwolf
🐛 Fix artifact storage paths after upload and sheet export PR @chaichontat
🐛 Fix explicit display fields in selectors PR @chaichontat
2026-06-01 db 2.5.1¶
🚸 Better organize the logging about query result truncation PR @falexwolf
🐛 Fix passing
is_type=Falseto thecat_filtersargument ofFeaturePR @falexwolf🐛 Avoid duplication of
__lamindb_record_export__under concurrency PR @falexwolf🐛 Populate
run.finished_atfor transfer and export functions PR @falexwolf
2026-05-31 hub 1.38.0¶
⚡️ Speed up frontend queries on large databases by orders of magnitude when
order_byorsearch_inare not needed PR @Koncopd🐛 Fix write-space selection across creation flows PR @chaichontat
🐛 Fix record value dtype filter handling PR @chaichontat
2026-05-31 nf 0.8.1¶
2026-05-26 db 2.5.0¶
⚠️ No longer deduplicate existing files when registering them from managed storage locations.
Given a file or folder is already present in a managed storage location when passing an S3 path to Artifact(), the constructor will no longer attempt deduplicating it (skip_hash_lookup = True).
Newly ingested artifacts will still be deduplicated based on hash equivalence (skip_hash_lookup = False).
The default value for the skip_hash_lookup in Artifact() changes from False to None.
⚠️ Drop support for passing semantic type names in v1 string-based dtypes.
For example: ln.Feature(name="perturbation", dtype="cat[Record[Perturbation]]") will no longer work. You have to pass a Python object now, e.g., a Record type perturbation.
Passing strings raised a warning since lamindb 1.17.0, but will otherwise continue to work.
See PR @falexwolf
Features:
✨ Compatibility of
ln.track()andln.finish()with Marimo notebooks PR @ishitajain9717✨ Enable
lamin loadfor notes PR @falexwolf✨ Allow changing the real storage key by moving the artifact within the storage location PR1 PR2 @Koncopd
✨ Support timezone-ware datetimes as dtype PR @falexwolf
✨ Use existing artifacts for
s3andgspaths in.lamindb/when creating an artifact PR @Koncopd✨ Add public
key_is_virtualargument toArtifact(...)PR @Koncopd
UX:
🚸 Print warnings on instance module mismatch with environment during
ln.connect()andln.DB()PR @falexwolf🚸 Simplify the curator logs and advocate explicit object construction instead of
add_new_from()PR @falexwolf🚸 Warn about reducing the default value for
limitin.to_dataframe()from 100 to 20 PR @falexwolf🚸 Clearer error on reading old versions of artifacts with
overwrite_versions=TruePR @Koncopd🚸 Improve the UX around auto-selecting managed storage locations for a space PR @falexwolf
🚸 Raise an informative error for unmanaged storages in storage settings setters PR @Koncopd
🚸 Raise an error on write streaming for artifacts with
overwrite_version=FalsePR @Koncopd🚸 Add safeguards against non-latest
revisesargument on saving a versioned sqlrecord PR @Koncopd
Bugs:
🐛 Use etag for gs when md5 hash is not available, do consistent hashing of cloud directories PR @Koncopd
🐛 Fix de-duplication of feature names within
.to_dataframe(include="features")PR @falexwolf
Dependencies:
Docs:
📝 Document and test features where the
dtypeis a sheet PR @falexwolf📝 Document cell output stripping of
ln.finish()in a Jupyter notebook PR @falexwolf📝 Document the string serialization of
dtypeobjects PR @falexwolf📝 More visibility for branching on the
manage-changesdocument PR @falexwolf📝 Better document collection vs folder and clarify that
ArtifactSetcan also be streamed PR @falexwolf
2026-05-26 hub 1.37.0¶
✨ Run general Python scripts from the
Transformstab PR @sheetalgiri✨ Support schema-restricted sheet dtypes PR @chaichontat
💄 Route instance roots to the configured default tab PR @chaichontat
2026-05-21 nf 0.8.0¶
2026-05-17 hub 1.36.0¶
✨ Add organization account creation endpoint PR @fredericenard
2026-05-13 hub 1.35.2¶
🐛 Fix typed-record feature filters on sheet-backed records PR @chaichontat
🐛 Fix sheet filters for paginated rows PR @chaichontat
2026-05-12 blog¶
📝 Re-engineering the PerturBench benchmarking tasks with data lineage PR @ishitajain9717 @namsaraeva
2026-05-11 hub 1.35.0¶
💄 Simplify the records/labels section of the overview page PR @falexwolf
💄 Simpler and more consistent design of the artifact page PR @falexwolf
💄 Showcase runs on overview page PR @falexwolf
2026-05-10 hub 1.34.0¶
2026-05-07 hub 1.33.0¶
🚸 Enforce name requirement for new record dialog PR @chaichontat
🚸 Clear search on folder navigation in bucket table PR @chaichontat
🐛 Fix space selector in sheet creation PR @chaichontat
2026-05-06 nf 0.7.0¶
2026-05-06 hub 1.32.0¶
🚸 Clean up project detail page PR @chaichontat
🚸 Experiment page launch improvements PR @chaichontat
🐛 Fix sorting and pagination in access management pages PR @chaichontat
2026-05-05 docs¶
📝 New guide: Organize datasets PR @falexwolf
2026-05-04 hub 1.31.0¶
🚸 Launch workflows from records with auto-completed metadata PR @chaichontat
🚸 Add a dedicated project page PR @falexwolf
🚸 Enable ordering and hiding tabs on the instance navbar PR @chaichontat @falexwolf
🚸 Prevent password managers from autocompleting fields PR @chaichontat
🚸 Support more data types in the feature creation modal PR @chaichontat @falexwolf
🚸 Show download button for problematic HTMLs PR @chaichontat
🚸 Add
nf-laminplugin detection and alert in launch form PR @chaichontat🐛 Enhance Nextflow schema validation and parsing logic PR @chaichontat
2026-04-27 db 2.4.2¶
🚸 Support
dtypeURL PR @falexwolf
2026-04-25 hub 1.30.0¶
✨ Support the bool
dtypefor CSV upload PR @chaichontat🚸 Improve sheet keyboard handling PR @chaichontat
🚸 Standardize instance settings and org collab settings PR @chaichontat
🚸 Canonical run URLs PR @falexwolf
🚸 Transform link inheritance PR @chaichontat
🐛 Fix audit log rendering PR @chaichontat
🐛 Fix double scroll bars in the transform page PR @chaichontat
2026-04-24 nf 0.6.2¶
2026-04-23 blog¶
📝 How I managed thousands of datasets to build the scPRINT family of scRNA-seq foundation models PR @falexwolf
2026-04-23 bionty 2.4.0¶
⚠️ Run bionty.core.sync_public_sources()
This will update the Source registry with the new organisms of Protein.
🍱 9 new organisms from
Uniprot,v2026-01PR @sunnyosun @ishitajain9717🍱 Update
Uniprottov2026-01for organismshuman&mousePR @sunnyosun
2026-04-23 db 2.4.1¶
🔒️ Obfuscate user secrets in params and source code PR @falexwolf
🚸 Detect
project,space&branchargs in@ln.flow()and detectLAMIN_INITIATED_BY_RUN_UIDinln.track()PR @falexwolf🚸 Validated transfer of artifacts to other storage locations PR @Koncopd
🐛 Fix cleanup of internal files on instance init failures PR @Koncopd
2026-04-21 hub 1.29.2¶
🚸 Sheets: bulk row addition and CSV template download PR @chaichontat
🐛 Fix projects page highlighting and pagination PR @chaichontat
2026-04-20 db 2.4.0¶
⚠️ Run lamin migrate deploy
🗃️ Add
branchandcreated_onfields toBaseBlockand the_auxfield toBranchPR @falexwolf🗃️ Make
featurenullable onRunRecordPR @falexwolf
All instances connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed instance, please migrate your database with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
Highlights:
✨ Allow users to transfer artifacts between storage locations PR @Koncopd
✨ Add
Record.from_dataframe()and bulk saving of records PR @falexwolf✨ Saving markdown notes as records PR @falexwolf
UX:
🚸 Enable
lamin connect --hereto scope instance to a development directory parallel to git PR @falexwolf🚸 Scope a
lamindbconnection to a development directory PR @falexwolf🚸 Skip hash lookup on empty files when creating an
artifactPR @Koncopd🚸 Remove duplicated logging in
ln.connect()if already connected PR @falexwolf🚸 Allow users to pass kwargs to
write_h5adandwrite_zarrinArtifact.from_anndata(...)PR @Koncopd🚸 Warn if working with a non-latest version of an artifact PR @Koncopd
🚸 Do not error, only warn if running outside
dev-dirPR @falexwolf
Integrations:
🚸 Overhaul the
lightningintegration (v3) PR @jorenretel
Bugs:
🐛 Invoke original signal handlers in
LogStreamTracker.cleanup()PR @Koncopd🐛 Except only specific import error in
with_package_objandwith_packagePR @Koncopd🐛 Fix single file directory upload when saving an
artifactPR @Koncopd🐛 Fix
record.to_artifact()export in casemaximal_setisTrueand record names are not populated PR @falexwolf
Dependencies:
⬇️ Upgrade and upper bound
s3fsby 2026.1.0 PR1 PR2 @Koncopd @danplischke
Refactors:
♻️ In the
lamidb.core.storagemodule, lazily import heavy dependencies likeanndataPR @jorenretel♻️ Avoid unnecessary
pandasandanndataimports onArtifactinitialization PR @Koncopd♻️ Also save README as block, prepare transitioning away from README artifacts PR @falexwolf
♻️ Do not show instance settings content on validation error PR @Koncopd
♻️ Enable
to_dataframe(include='features')also forRunPR @falexwolf
Docs:
📝 Recommend
FeatureManager.set_values()and warn thatFeatureManager.add_values()can invalidate thedtypeof categorical feature annotations under certain circumstances PR @ishitajain9717📝 Document dtype
booland improve documentation ofDtypeStrPR @falexwolf📝 Prettify and simplify spatialdata schema creation script PR @falexwolf
📝 Improve documentation for
Artifact.from_anndata(...)PR @Koncopd📝 README v5.6: Added new features of lamindb 2.4 + clean ups PR @falexwolf
2026-04-20 hub 1.29.0¶
✨ Support GitHub-flavored markdown PR @chaichontat
🐛 Fix faceted filter narrowing in projects and reference PR @chaichontat
2026-04-19 hub 1.28.0¶
🚸 Default sheets to card view PR @chaichontat
⚡️ Faster sheet saving PR @chaichontat
⬆️ Upgrade lamindb to 2.4 PR @falexwolf
2026-04-16 hub 1.27.0¶
✨ Query records by features PR @chaichontat
✨ Feature-based record linking workflow PR @chaichontat
🚸 Add the delete action to the records dropdown menu PR @chaichontat
🚸 Improve robustness of organization management pages PR @chaichontat
2026-04-15 blog¶
2026-04-12 hub 1.26.0¶
🚸 Rename Merge Requests to Change Requests and polish design PR @keller-mark
🐛 Fix space information in new sheet workflow PR @chaichontat
🐛 Fix overflow behavior in main navigation tabs PR @chaichontat
2026-04-10 hub 1.25.0¶
✨ Card view for sheets PR @chaichontat
✨ Record page: transform links PR @chaichontat
✨ Drag-and-drop reordering for sidebar records PR @chaichontat
🚸 Simplify record creation modal, advocate “Type” also for notes pages PR @falexwolf
🚸 Move the
ULabelspage under theFeaturestab PR @falexwolf🚸 Inline title/description editing PR @chaichontat
🐛 Fix display of record type / page descriptions PR @falexwolf
2026-04-08 hub 1.24.0¶
🚸 Redesign the run cards and add a tabular view indexed by params and features PR @chaichontat
💄 Move records number and schema info to the right and do not display ‘Root’ in breadcrumbs PR @falexwolf
🐛 Fix data fetch error on
collectionpage PR @falexwolf
2026-04-06 hub 1.23.0¶
✨ General support for managing access with spaces in the UI PR @chaichontat
✨ Make runs searchable PR @chaichontat
✨ Add support for R source code highlighting PR @falexwolf
🛂 Enable linking objects in a protected space for users who have read access to them PR @Koncopd
🚸 Mention
lamin savein notebook preview PR @falexwolf💄 Harmonize markdown font size PR @chaichontat
🐛 Fix request for
spaceonUserin sheet edit mode PR @falexwolf
2026-04-02 blog¶
📝 An introduction to LaminR PR @falexwolf
2026-03-31 hub 1.22.0¶
✨ Add a simple feature detail page PR @chaichontat @falexwolf
⚡️ Eliminate a multi-second p100 for multiple REST endpoints PR @fredericenard
🚸 Add option to show non-zero status code runs for data lineage PR @chaichontat
🚸 Separate markdown editing from data editing PR @chaichontat
🚸 Improve responsiveness of nav bar PR @chaichontat
🚸 Unnamed records are marked as unnamed PR @chaichontat
🐛 Fix
record.to_artifact()export in casemaximal_setisTrueand record names are not populated PR @falexwolf🐛 Fix duplicated features in artifact detail PR @chaichontat
🐛 Fix admin self-assignments in access pages PR @chaichontat
Experimental beta:
✨ Initial space support in the UI PR @chaichontat
2026-03-27 nf 0.6.0¶
✨ This release adds support for spaces and branches, configurable artifact keys, and manual path tracking. @rcannood
Space & Branch support: New
space_uidandbranch_uidtop-level config options to scope transforms, runs, and artifacts into a specific space and branch (PR).lamin { space_uid = "abcdef1234" branch_uid = "abcdef1234" }
Configurable artifact keys: New
keyoption onoutput_artifacts,input_artifacts, and individual rules to control how artifact keys are derived. Accepts a string template, a closure, or a[relativize: ...]map shorthand (PR, PR).lamin { output_artifacts { key = [relativize: params.outdir] } }
Manual path tracking: New
include_pathssetting oninput_artifacts,output_artifacts, and individual rules to explicitly specify files that should be tracked — useful for files consumed in Groovy that are invisible to the task listener (PR).lamin { input_artifacts { include_paths = { params.input } } }
Name-based references: UID fields (
project_uids,ulabel_uids,space_uid,branch_uid) now accept prefixed names (?name,!name,+name) for convenience and cross-environment testing (PR). Note that this is experimental and may be subject to change in future releases.
Bug fixes.
Fixed key relativization to work uniformly across
file://,s3://,gs://, andaz://paths usingURI.relativize()PR @rcannoodFixed assets directory detection for users with custom
NXF_HOMEorNXF_ASSETSby usingnextflow.Const.DEFAULT_ROOTinstead of a hardcoded path PR @rcannood
Breaking changes.
project_uidsinsiderun {},transform {}, and artifact rules is removed. Use the top-level field only PR @rcannood
Others.
2026-03-20 bionty 2.3.1¶
🐛 Fix duplicates in Ensembl prefixes for organisms PR @falexwolf
2026-03-20 db 2.3.1¶
🐛 Fix incorrect read-only warning for
ln.DB(...)PR @Koncopd📝 Coin the term “sync” instead of “transfer” for syncing data between databases PR @falexwolf
2026-03-18 bionty 2.3.0¶
Bionty now depends on lamindb-core instead of lamindb.
2026-03-18 db 2.3.0¶
Architecture:
🏗️ Create
lamindb-coreto distributelamindbwithout optional dependencies PR @ap– @falexwolf
UX improvements:
🚸 Improve
ln.connect()performance and robustness PR @falexwolf🚸 Enable feature-based query expressions PR @falexwolf
🚸 Allow semantic queries by run & branch status PR @falexwolf
🚸
FeatureManager.add_values(),set_values(), andremove_values()accept feature objects, not just feature name strings PR @falexwolf🚸 Enable configuring env modules PR @falexwolf
🚸 Refresh federated AWS credentials on the
botocorelevel PR @Koncopd🚸 Add informative
record.describe()PR @falexwolf🚸 Print warning if truncating a query result PR @falexwolf
🚸 Refactor agent plan saving to strip TODOs from description PR @falexwolf
🚸 Treat composite suffixes with
.zarrat the end differently from other unspecified composite suffixes PR @Koncopd🚸 Allow users to enforce ignoring local aws credentials via
system.envPR @Koncopd🚸 Optimize DB interactions in
lightningintegration PR @falexwolf🚸 Warn when connecting the default database to a non-writable connection PR @Koncopd
Database:
🗃️ Make
feature_idonTransformRecordlink model nullable PR @falexwolf
Bug fixes:
🐛 Fix model field tracking via
_populate_tracked_fieldsfor deferred fields PR @Koncopd🐛 Fix synchronization of directory artifacts when the destination directory exists but is empty PR @Koncopd
🐛 Fix feature collisions in lightning integration PR @falexwolf
🐛 Account for host database in
FeatureManager.__getitem__PR @sunnyosun
MappedCollection:
🚸 Improve data retrieval in
MappedCollectionPR @mojtababahrami🚸 Allow users to specify partially available keys in
MappedCollectionand retrieveraw.XPR @Koncopd
Ontologies:
Docs:
📝 Improve the
lamindb.recorddocument PR @falexwolf📝 Document refresh behavior of federated s3 credentials for
tiledbsomaPR @Koncopd
2026-03-16 hub 1.21.0¶
✨ Enable linking transforms to a record PR @chaichontat
🚸 Enhance artifact and transform cards on record page with pagination and filtering PR @chaichontat
🚸 Enable searching for
str-dtype features in sheets PR @falexwolf🚸 Set default sorting to
updated_atdescending for artifacts PR @chaichontat🐛 Resolve
ULabeltypes in sheets’dtypedisplay and enforce these types during edit mode PR @chaichontat🐛 Disambiguate categorical values in CSV parser PR @chaichontat
💄 Remove root element from typed sidebars for records, ulabels, features & schemas PR @falexwolf
💄 Do not display schema names on records sidebar PR @falexwolf
2026-03-13 R 1.3.0¶
🚸 Simplify connecting to an instance PR @lazappi
Connecting via the main module object now works with lamindb>=2.3:
ln <- laminr::import_module("lamindb")
ln$connect("<owner>/<instance>")
Other changes:
2026-03-12 hub 1.20.0¶
✨ Show features in records list PR @chaichontat
✨ Link artifacts to records PR @chaichontat
🐛 New features default to being nullable as in
lamindbPR @chaichontat
2026-03-05 hub 1.19.0¶
✨ Add sheet column filtering PR @chaichontat
🐛 Fix truncated run counts PR @chaichontat
2026-03-02 blog¶
2026-03-04 hub 1.18.0¶
✨ A more detailed record page PR @chaichontat @cydneyn @sunnyosun
✨ Display README on the Artifact, Collection, Transform, and Schema detail page PR @sunnyosun
2026-03-03 hub 1.17.0¶
Features & major design improvements:
✨ Merge Requests v0.1 under new Changes tab includes Database Writes log PR @keller-mark
✨ Overhaul the design of the Records page PR @cydneyn @sunnyosun @chaichontat
GUI polish:
💄 Improve nested scrolling behavior PR @chaichontat
💄 Increase artifact dialog size PR @chaichontat
💄 Simplify Team page PR @falexwolf
Frontend routes:
🚚 Rename the
write-logs/route todbwrites/PR @falexwolf
Bug fixes:
🐛 Fix instance deletion in on-prem infra due to missing permissions PR @Koncopd
🐛 Improve pagination in artifact tables PR @chaichontat
🐛 Invalidate instance README display cache on artifact upload PR @chaichontat
🐛 Fix instance deletion in on-prem infra due to missing permissions PR @falexwolf
2026-03-02 blog¶
📝 Interactive visualization of multimodal and spatial data with Vitessce PR @keller-mark
2026-02-27 blog¶
📝 Symbolic memory for biological R&D PR @falexwolf
2026-02-24 db 2.2.1¶
🚸 Add backward compat for
lamin switch --branchPR @falexwolf🚸 Improve logging during
@ln.flow()and@ln.step()PR @falexwolf🚸 Enable defining a feature that restricts to a subset of artifacts PR @falexwolf
🚸 Better handling of problematic access token refreshes PR @Koncopd
2026-02-19 bionty 2.2.0¶
🗃️ Add
created_onfield for LaminDB v2.2 PR @falexwolf⚡️ Lazily import pandas PR @falexwolf
2026-02-19 db 2.2.0¶
⚠️ Run lamin migrate deploy
🗃️ Add a
_status_code: intfield toBranchandBaseBlockPR @falexwolf
All instances connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed instance, please migrate your database with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
Examples: Change management with branching, merging, and Merge Requests
To create a contribution branch and switch to it, run:
lamin switch -c my_branch
To merge a contribution branch into main, run:
lamin switch main # switch to the main branch
lamin merge my_branch # merge contribution branch into main
To see the current branch along with other information, run:
lamin info
To annotate the current branch with a README.md, run:
lamin annotate branch --readme README.md
To comment on the current branch, run:
lamin annotate branch --comment "I think we should revisit this, tomorrow, WDYT?"
To describe the current branch (optionally include comments), run:
lamin describe branch --include comments
To trace on which branch a SQLRecord object was created, run:
sqlrecord.created_on.describe()
To open a Merge Request for a branch:
lamin update branch --status draft # for current branch
lamin update branch --name my_branch --status review # for any branch
Just like Pull Requests on GitHub, branches are never deleted so that the provenance of a change stays traceable.
For more info, see: docs.lamin.ai/lamindb.branch
Examples: Agent plan traceability
Saving an agent plan automatically tags with artifact.kind = "plan" and infers a key starting with .plans/:
lamin save /path/to/.cursor/plans/my_task.plan.md
lamin save /path/to/.claude/plans/my_task.md
Link an agent plan against a run:
ln.track(plan=".plans/my-agent-plan.md")
This will link the plan artifact to a run in the same way in which transform, an initiating run (initiated_by_run) and report/environment artifacts are linked to the run.
While the transform acts as the deterministic source code for the run and initiated_by_run enables higher-level runs in workflow orchestration, the agent plan complements these two by allowing the linkage of plan that steers a non-deterministic agent.
Highlights:
✨ Add
lamin mergecommand, addlamin switch -coption & simplifylamin switchsyntax PR @falexwolf✨ Add agent plan traceability PR @falexwolf
✨ Enable linking a
README.mdto and commenting for any entity PR @falexwolf✨ Introduce Merge Request states on branches PR @falexwolf
✨ Add
lamin updateand homogenizelamin getwith other commands PR @falexwolf
UX:
🚸 Quality of life improvements for saving via the CLI: saving plans, sync with git, annotating with version tags PR @falexwolf
🚸 Extend
lamin describeto more entities PR @falexwolf🚸 Prettier display for
dtypeforRecordandULabelsub types inschema.describe()PR @falexwolf🚸 Track
record_type.to_dataframe()as an input for the current run PR @falexwolf🚸 Make it easier to query for all output artifacts including recreated ones PR @falexwolf
🚸 Include comments in
SQLRecord.describe()when passinginclude = "comments"PR @falexwolf🚸 Include comments in
lamin describeupon--include commentsPR @falexwolf🚸 Re-raise
InvalidArgumentinlamin annotateasClickExceptionPR @falexwolf🚸 Nicer error for
lamin switchto non-existing branch PR @falexwolf
Performance:
⚡ Speed-up lamindb import by lazily importing pandas, anndata & pyarrow PR @falexwolf @Zethson @Koncopd
Architecture:
🏗️ Reconcile
is_lateststate across branches PR @falexwolf
Bux fixes:
Docs:
📝 Add videos to docs, polish typos and wording PR @falexwolf
Security:
Dependencies:
2026-02-15 hub 1.16.0¶
🚸 Respect Nextflow MIME suffix behavior in Launch page inputs form PR @sunnyosun
🚸 Fix clunky UX in left sidebar of typed entities PR @chaichontat
💄 Simplify features header in artifact detail page, should be “Values” not “Categories / Values” PR @falexwolf
💄 Account for recreated artifacts and recreated collections in lineage explorer PR @falexwolf
💄 Display run entrypoints in transform, run, and lineage views PR @falexwolf
💄 Pricing page v2 PR @falexwolf
💄 Do not show
pertdblink tables PR @sunnyosun💄 Fix text truncation in list cells of sheets PR @sunnyosun
💄 Fix badge for recreated output artifacts PR @sunnyosun
🐛 Fix allowed suffixes in launch input selection PR @sunnyosun
🐛 Fix between-page sidebar type navigation PR @chaichontat
🐛 Fix pagination bar position in sheets PR @sunnyosun
🐛 Run metadata settings includes the dtype sheet when a feature has the same dtype PR @chaichontat
2026-02-11 nf 0.5.1¶
2026-02-10 hub 1.15.0¶
💄 Move
Recordstab to the left ofFeaturesPR @sunnyosun💄 Move
ULabelsunderRecordstab PR @sunnyosun💄 Fix string truncation display in sheets PR @sunnyosun
🚸 Support more path types from nextflow schema PR @sunnyosun
🐛 Fix
pertdbcopy button content PR @sunnyosun🐛 Fix
Projectfeature link PR @sunnyosun
2026-02-09 db 2.1.2¶
UX:
Performance:
Bug fixes:
2026-02-09 hub 1.14.0¶
🚸 Better experience saving markdown notes PR @chaichontat
🐛 Fix text overflow for sheet names on
Launchpage PR @chaichontat🐛 Fix the count & filtering for recreated artifacts in the run input/output panes PR @sunnyosun
🐛 More robust error handling for account handle suggestions PR @chaichontat
🐛 Properly show a 404 response for artifacts when non-existent PR @chaichontat
💄 Polish the
Overviewpage PR @ninhja01 @chaichontat💄 Display run params PR @falexwolf
💄 Add the story to the About page PR @falexwolf @chaichontat
2026-02-02 db 2.1.1¶
UX:
🚸 Better detection of read-only connections for write errors and tracking PR @Koncopd
🚸 A
lamin settings cache-dir resetCLI command for resetting the cache directory to the default path PR @Koncopd🚸 A
S3QueryPath.is_bucket_versioned()method to check if the bucket in an s3 path is versioned PR @Koncopd
Bug fixes:
2026-02-03 nf 0.5.0¶
This release revamps the configuration (nextflow.config) for more control over which artifacts are registered and which metadata is attached (kind, projects, ulabels). Here is an example Nextflow config:
lamin {
instance = "laminlabs/lamindata"
api_key = secrets.LAMIN_API_KEY
output_artifacts {
rules {
output {
pattern = ".*"
order = 1
type = "include"
project_uids = ["AbCdEfGhIjKl"]
ulabel_uids = ["AbCd0123"]
}
// don't publish state.yaml files
yaml {
pattern = ".*\\.state\\.yaml"
type = "exclude"
order = 10
}
}
}
}
New functionality:
✨ Control which files are registered as artifacts using pattern-based rules PR @rcannood
✨ Link projects and ulabels to transforms, runs, and artifacts with new
runandtransformconfig sections for granular control PR @rcannood✨ New
apisection for connection settings replaces root-level fields PR @rcannood
UX:
Bug fixes:
Deprecations: The following API components are now deprecated and are scheduled for removal in v0.6
Type |
Deprecated |
Replacement |
|---|---|---|
Config |
|
|
Config |
|
|
Function |
|
|
2026-02-02 db 2.1.0 | bionty 2.1.0¶
MLOps:
🚸 Overhaul the pytorch
lightningintegration PR @Zethson @jorenretel
Notebooks, scripts, workflows:
🚸 Recognize packaged python source code across
track(),@flow(), and@step()PR @falexwolf🚸 Default to creating a global run context in
ln.flow()PR @falexwolf🚸 Serialize
Path,UPath, and handleNonein transformparamsPR @falexwolf🚸 Reflect user CLI calls in transform description PR @falexwolf
🚸 Improve error message for running a script or notebook outside the development directory PR @falexwolf
Validation:
🚸 Unify validating features with and without the presence of a schema, fix parsing ISO-format strings as datetime if mapped on a feature with
dtype=strPR @falexwolf
CLI:
🚸 Delete records via CLI PR @falexwolf
🚸 Better error behavior in
lamin savewhen transform is on a different branch PR @sunnyosun
General UX:
🚸 Enable convenient re-upload of local file after upload failure PR @falexwolf
🚸 Return information about deleted objects rather than
Noneupon hard delete PR @falexwolf🚸 Introduce safe-guards in updating the space of artifacts PR @Koncopd
🚸 Switch on SQL logging if
ln.settings.verbosityis"debug"PR @sunnyosun🚸 Raise canonical
InstanceNotFoundErrorinRegistry.connect()PR @falexwolf🚸 Allow users to pass ids of foreign keys in
Artifact()constructor PR @Koncopd
Performance:
⚡️ Much faster permanent run & transform deletion PR @falexwolf
⚡️ 1 sec speed-up for basic CLI calls through optimized
lamindb_setupimport time PR @falexwolf
Ontology updates in bionty:
🚸 Default the
CellLinesource tocellosaurusPR @sunnyosun🚸 More robust
add_sourcePR @sunnyosun🚸 Allow users to set
biontyroot dir viaBIONTY_ROOT_DIRenv variable PR @Koncopd🍱 New ontology version: Gene, release-114 PR PR @sunnyosun @Zethson
🍱 New ontology version: Gene, release-113 PR @sunnyosun
🍱 New ontology version: Organism PR @sunnyosun
🍱 Update standard ontologies PR @sunnyosun
Better conventions in CLI (backward compatible):
🚚 Support
key-based deletion inlamin deletePR @falexwolf🚚
lamin cacheis nowlamin settings cache-dir, refactor settings managemennt PR @falexwolf🚚 More consistent
lamin switchandlamin createcommands PR @falexwolf
The wetlab plugin was renamed to pertdb (backward compatible):
🚚 Rename
wetlabtopertdbPR @falexwolf
Bugs:
🐛 Refactor & fix feature-based queries for records PR @falexwolf
🐛 Fix
Artifact.from_dataframe()to support path input PR @Zethson
Docs:
📝 Convert guides to markdown format PR @falexwolf
📝 Legible API reference for
lamindb.modelsPR @falexwolf📝 Consistent reference to Python/R alternative for all CLI commands, expand
lamin annotatePR @falexwolf📝 Document backward relationships and add
RelatedManager[T]toManyToManytype annotations PR PR @falexwolf📝 README improvements PR @falexwolf
Refactoring:
♻️ Rather flag
_storage_ongoingthan_storage_completedPR @falexwolf♻️ Efficiently encode uploading information PR @falexwolf
♻️ Fully leverage
Contextto manage the run context of function executions PR @falexwolf
2026-01-31 hub 1.13.0¶
⚡ Update JWT signing from HS256 to ES256 for better performance PR @fredericenard
💄 Display output and input records on run detail page PR @falexwolf
2026-01-26 hub 1.12.0¶
✨ Configurable default Seqera workspace and compute environment PR @chaichontat
✨ Two new endpoints to help users authenticate and interact with instances through the API PR @fredericenard
🐛 Fix attaching a space to an instance in case an org admin isn’t a collaborator of that space PR @fredericenard
🐛 Prevent empty results when searching Artifacts PR @chaichontat
🐛 Fix an issue in the Seqera Launch connector PR @chaichontat
💄 Landing page: re-format taglines and update schematic PR @chaichontat
2026-01-21 nf 0.4.0¶
✨ This release allows for the automatic tracking of input artifacts by discovering their remote URIs, using functionality implemented in Nextflow 25.10. Hence, it requires Nextflow >=25.10.0 PR @rcannood
export NXF_VER=25.10.2
nextflow run <pipeline> \
--input "https://raw.githubusercontent.com/..." \
-with-report report.html
2026-01-20 hub 1.11.0¶
✨ Beta: A Logs page with
DbWriteevents PR - frontend: @chaichontat backend: @Koncopd✨ Support children type in record registration PR @chaichontat
🚸 Handle suggestions when adding users PR @chaichontat
🐛 Fix run metadata selection state PR @chaichontat
💄 Show records on the overview page PR @falexwolf
2026-01-14 hub 1.10.0¶
✨ Add
/artifacts/by-pathendpoint PR @fredericenard🐛 Write run annotations on the Launch page into the
RunRecordregistry PR @falexwolf📝 Improve landing page - metadata and lakehouse sections PR @falexwolf
2026-01-13 R 1.2.2¶
⬆️ Update minimal
lamindbversion to 2.0.0 PR @falexwolf PR @lazappi
2026-01-12 nf 0.3.0¶
2026-01-12 hub 1.9.0¶
✨ Transform search bar also understands run names and UIDs PR @chaichontat
🚸 Default to not listing inferred schemas without names PR @chaichontat
🐛 Fix the broken “New schema” button on the records page due to
lamindbv2 PR @chaichontat🐛 Fix the broken pipeline
Launchbutton due tolamindbv2 PR @sunnyosun🐛 More strictly enforce schema during UI-based record creation PR @chaichontat
🐛 Broaden database server access permissions to include shared database servers PR @fredericenard
📝 Improve landing page - introduce tags and improve language PR @falexwolf
2026-01-11 db 2.0.1¶
🚸 Backward compatibility for querying features by
dtypePR @falexwolf
2026-01-11 db 2.0.0¶
This release makes the database schema fully consistent and thereby improves UX, integrity, and enables long-term stability.
⚠️ With the exception of previous deprecations, your code continues to run as is, but you will receive new warnings about renamed API components.
Main changes:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
Function tracking |
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
Private fields that are now public:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
✗ |
|
|
|
✗ |
|
|
|
✗ |
|
|
|
✗ |
Changes to auxiliary (JSON) fields:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✓ |
|
|
|
✗ |
On link models with labels:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
removed |
✗ |
|
|
removed |
✗ |
For completeness, changes in recently introduced unused API components:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
✗ |
|
|
|
✗ |
|
|
|
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
Changes in the bionty and wetlab modules:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
|
* uids are re-encoded to 14 chars with the first X chars conserved.
Changes in the wetlab module:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
removed |
✗ |
|
|
|
✗ |
|
|
removed |
✗ |
|
|
✓ |
If you have data in removed registries you’ll see a warning that your data gets exported to parquet files. You can import these parquet files into the Record registry under an Experiment type without losing of functionality.
⚠️ After migrating databases to v2 via lamin migrate deploy lamindb package installations with v1 will raise errors. This is the last planned database migration that breaks older clients.
All instances connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed instance, please migrate your database with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
⚠️ For laminr and nf-lamin users
For laminr users with an auto-managed reticulate environment, please run this:
reticulate::py_require("lamindb>=2.0.1") # DO THIS FIRST
ln <- laminr::import_module("lamindb")
For nf-lamin users, please upgrade to 0.3.0.
Removals:
🔥 Remove deprecated v1 API components PR @falexwolf
Features:
✨ Track shell scripts PR @falexwolf
✨ Enable managing workflows by decorating functions with
@ln.flow()and@ln.step()and deprecate@ln.tracked()PR @falexwolf
Architecture:
🏗️ For more robustness and to convey the field’s special nature in the API and the database schema, replace
Feature.dtypewithFeature._dtype_strto now hold a serialization that links object types (Record+ULabel) based on theiruidinstead of theirnameand type hierarchy PR @falexwolf
UX:
🚸 Add
feature.dtype_as_objectPR @sunnyosun🚸 Add
descriptionargument toTransform.from_git()PR @falexwolf🚸 Allow passing
_key_is_virtualonArtifactcreation PR @Koncopd🚸 Raise
SystemExituponInstanceNotFoundonly from CLI PR @falexwolf🚸 Raise error for init or import issues in
lamin io snapshotPR @Zethson🚸 Do not track inputs when calling
collection.artifacts.all()PR @Koncopd🚸 Raise a clear error if calling
CanCurateand similar registry class methods on objects PR @falexwolf🚸 Sort features in
describe()PR @falexwolf
Database-level changes:
🗃️ Rename
RootBlocktoBlockwith a columnkeyakin toArtifactandTransformPR @falexwolf🗃️ Refactor
_storage_completedmechanism and remove unique constraints on type names PR @falexwolf🗃️ Migrate most auxiliary fields to SQL columns PR @falexwolf
🗃️ Simplify
TransformPR @falexwolf🗃️ Rename
IsVersioned.versiontoIsVersioned.version_tag,Transform.typetoTransform.kind,FeatureValuetoJsonValue,BaseBlock.typetoBaseBlock.kind, deleteTransform._templateandRun._logfilePR @falexwolf🗃️ Rename
Artifact._subsequent_runstoArtifact.recreating_runsandRun._recreated_artifactstoRun.recreated_artifactsPR @falexwolf🗃️ Rename
SQLRecord._branch_codetoSQLRecord.branch_idand removefeature_ref_is_nameandlabel_ref_is_namefields from link models PR @falexwolf🗃️ Rename
Artifact.feature_setstoArtifact.schemasPR @falexwolf🗃️ Migrate the
FeatureandSchemadatabase tables to LaminDB v2 PR @falexwolf🗃️ Swap accessor names for
SchemaComponentlinks, consistentManyToManyfield names forRecordRecordlinks PR @falexwolf🗃️ Better names for the
ManyToManyfields for the annotating runs and artifacts of anArtifactPR @falexwolf
Bug fixes:
🐛 Account for size 0 environments PR @falexwolf
Bionty:
🎨 Re-encode BioRecord uid to 14 chars PR @sunnyosun
🗃️ Migrations for bionty v2 PR @sunnyosun
♻️ Refactor require_organism PR @sunnyosun
🗃️ Migrations for LaminDB v2 PR @falexwolf
🔥 Remove deprecated
display_available_sourcesPR @falexwolf
Wetlab:
🗃️ Migrations for wetlab v2 PR @sunnyosun
🗃️ Migrations for LaminDB v2 PR @falexwolf
🗃️ Create a composite index for
artifact,perturbationtargetfields inArtifactPerturbationTargetPR @Koncopd🗃️ Create a composite index for
artifact,geneticperturbationfields inArtifactGeneticPerturbationPR @Koncopd
Docs:
📝 Improve the
Spacedocument PR @falexwolf📝 Improve the
Artifact.replace()docs PR @falexwolf📝 Improve FAQ doc on trashing and archiving PR @falexwolf
📝 Render return type annotations of
Artifact.open()in docs PR @falexwolf
Config:
🔧 Introduce
InstanceSettings.is_managed_by_hubPR @falexwolf🔧 Add
.vitessce.jsonto loaders PR @namsaraeva
Refactoring:
♻️ Refactor
require_organismPR @sunnyosun♻️ Better re-use Django’s
ObjectDoesNotExistandMultipleObjectsReturnedPR @falexwolf♻️ Return file size in
hash_file()PR @falexwolf♻️ Squash migrations and re-build SQLite init database PR @falexwolf
♻️ More verbose migration integrity check PR @falexwolf
♻️ Call
lamin migrate deployeven if initializing from pre-built sqlite file PR @falexwolf
Dependencies:
2026-01-11 hub 1.8.0¶
🐛 Fix special character handling in filters PR @chaichontat
🐛 Fix filtering state leakage across different pages PR @chaichontat
🐛 Fix feature hover card not functioning correctly PR @chaichontat
2026-01-03 hub 1.7.0¶
🚸 Infinite scroll for transform list PR @chaichontat
📝 Update data validation video PR @namsaraeva
📝 Improve language on landing page PR @falexwolf