Skip to content

chore: bump version to 2.0.0-beta.6 - #48

Merged
percevalw merged 1 commit into
mainfrom
release/v2.0.0-beta.6
Nov 1, 2026
Merged

percevalw merged 1 commit into
mainfrom
release/v2.0.0-beta.6

Conversation

@percevalw

Copy link
Copy Markdown
Owner

Changelog

JupyterLab viewer

  • ++ctrl+z++ undoes a change made with a button that loses the focus, such as Delete in the span toolbar, and changes made after a click in Safari or Firefox on macOS, which do not focus clicked buttons: the shortcut then goes to the widget clicked last instead of being lost.
  • After the Metanno kernel is restarted from another JupyterLab window or by the server, the sidebar lists its sources again in a few seconds instead of waiting two minutes for the requests sent to the stopped kernel.
  • A table field that no row has yet, for instance a score no one has filled, shows its key as column name instead of an empty header.
  • Views always come from the nearest metanno-home above the kernel folder: annotation Stores no longer save its path, so a .pret file also reopens on another machine or account, and view_opener no longer takes config_path.
  • Query source shows the rows of its table as soon as its own query returns, while its related tables show Loading related data until theirs return, so a large related table (for instance the notes of selected entities) no longer hides the queried rows for minutes.
  • A related table without the column of its relation, for instance notes without note_id next to TNM entities, shows which column is missing instead of null literals require is_null or is_not_null.
  • Recipes, the Python files of views, now go in metanno-home/recipes, while saved views stay in metanno-home/views. Recipes already in views still load, but one of the same name in recipes replaces them.
  • The table recipe shows each table of a view or annotation in its own tab, with a form for the rows selected in the last table used. Since it is offered for any view or annotation with tables, it also shows the raw tables of a view built with another recipe.
  • A recipe can name the tables it reads by annotating the store parameter of its main with a TypedDict, whose keys can carry a description and keywords: notes: Annotated[DataFrame, RecipeTable("Clinical notes", keywords=["note", "doc"])]. Metanno then checks them before running the recipe, and the recipe shows in a new Recipes section of the sidebar.
  • Opening a recipe from the sidebar, or choosing in a tab a recipe that reads tables the view does not have, shows a table picker for each of them. Tables matching the keywords come first, then those next to the tables already chosen, e.g. xxx.note_tnm once xxx.note is chosen. The choices are the tables listed so far in the sidebar, and those listed later, for instance after a Trino login, join them without reopening the tab.
  • A RecipeTable can set max_rows, the rows loaded for its table instead of preview.rows, e.g. RecipeTable(max_rows=50) for the patients and RecipeTable(max_rows=5000) for their stays to show few patients with all their stays. A view or saved view that sets max_rows for a table keeps its own.
  • All, Patient and Stay above a related table, one per table above it with a selected row, choose whose rows it shows, e.g. the notes of the selected patient or of their selected stay, replacing the Selected ... only checkbox. While no stay is selected, only All and Patient show. Clicking a note selects and scrolls to its stay and its patient, even of another patient than the listed stays, while the notes shown stay until Stay is clicked. A text widget in "all" mode shows the documents of the nearest selected ancestor the same way. The names come from parent_row_name, e.g. "patient" given by the stays table.
  • Choosing a table in the pickers of a recipe fills the empty ones with the tables of the same database named as their key or one of its keywords, e.g. cse.visit_occurrence once person is cse.person. Picking another table moves the tables filled this way to its database.
  • The table pickers of a recipe also show a field for each parameter of its main, from its type, default and docstring description, checked with pydantic before the view opens. A parameter marked Annotated[str, Column("entities")] lists the columns of the table picked for entities. Switching a view to a recipe with a required parameter shows the same form.
  • Save view in the toolbar of a source tab saves the open view, its recipe, tables and parameters, as metanno-home/views/<name>.yml, which then shows under Explore.
  • The Connection selector of a tab also switches views with several tables: it offers the connections all their tables can use, e.g. Spark when DuckDB is too slow, and moves every table to the chosen one, since related tables are queried together. Save view then keeps that connection.
  • Annotation files show as an annotations source, read only: each file is a folder of its tables, e.g. doc_classif/doctor1/docs, to compare annotators or show annotations next to database tables. Their rows are copied into default_connection when a view opens, so views can relate them with the tables of DuckDB sources, or into an in-memory DuckDB without one.

Widgets

  • ++ctrl+y++ also redoes the last change undone in a view, like ++ctrl+shift+z++.
  • create_table_widget(default_sort=["note_id", "begin"]) orders the rows by these columns whenever the user has not sorted the table by a column header, e.g. the entities of each note in text order, or [("score", "desc")] for the highest scores of every row shown first. A header sort replaces it while active, and Clear sort brings it back.
  • Tables now show more of their column headers.

Pull Requests

Full Changelog: v2.0.0-beta.5...v2.0.0-beta.6

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Docs preview URL

https://metanno-release-v200-beta6.vercel.app/

@percevalw
percevalw force-pushed the release/v2.0.0-beta.6 branch from 6e05834 to cf535f8 Compare November 1, 2026 23:17
@percevalw
percevalw merged commit 6b59aac into main Nov 1, 2026
12 checks passed
@percevalw
percevalw deleted the release/v2.0.0-beta.6 branch November 1, 2026 23:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant