napari: a multi-dimensional image viewer for Python
Bibliographic record
Abstract
napari 0.6.5 ⚠️ Note: these release notes are still in draft while 0.6.5 is in release candidate testing. ⚠️ Fri, Sep 26, 2025 We're happy to announce the release of napari 0.6.5! napari is a fast, interactive, multi-dimensional image viewer for Python. It's designed for browsing, annotating, and analyzing large multi-dimensional images. It's built on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the scientific Python stack (numpy, scipy). For more information, examples, and documentation, please visit our website, https://napari.org. napari follows EffVer (Intended Effort Versioning); this is a Meso release containing awesome new features, but some effort may be needed when updating previous projects to use this version. Highlights Define a startup script for custom launch behaviour Do you have a code snippet that you always find yourself running after you launch napari? No more! You can now put this code in a script and set its path in the new startup script setting (#8188), and it will be executed every time napari opens. It's just a python script, so sky's the limit :) We found it particularly useful for adding custom colormaps, setting up the scale bar just right, or automatically launching our favourite plugin on startup. Automatically tiled overlays and ColorBar overlay Canvas overlays such as scale_bar, text_overlay, and colorbar overlay are now automatically tiling (#7836), preventing annoying overlap and making them easier to use without having to manage positioning. Wait, colorbar overlay you said? You heard it right! This is a new overlay (#7832)that shows a color bar legend, and it works with any layer which uses a colormap. All of this works seamlessly with multiple overlays and even grid mode: import napari viewer = napari.Viewer() # enable grid with stride 2 to get layers split two-by-two viewer.grid.enabled = True viewer.grid.stride = 2 # set the scale bar to gridded mode so it appears in each grid box viewer.scale_bar.visible = True viewer.scale_bar.gridded = True layers = viewer.open_sample('napari', 'lily') # enable color bars for layer in layers: layer.colorbar.visible = True Task manager will now try to prevent losing unfinished work We added a new task manager (#8211) which automatically registers any running thread_worker, showing a confirmation dialog if you attempt to close napari while a task is running. New remove() and pop() methods for Points and Shapes Points and Shapes can now be easily removed, not just added :P (#8031 and #8072). A new and updated guide on napari Preferences Our documentation on the napari Preferences has received a major overhaul! Check it out here! TODO: does this link work? Migrate non-user extras to dependency-groups (#8227) [maint] Drop alpha mentions (#8288) Auto generate release index with highlights and timeline (docs#838) New Features Add color bar overlay (#7832) Tiling canvas overlays (#7836) Add pop() for Points and Shapes (#8072) add option to define startup script in settings (#8188) use Selection class in shapes layer (#8297) Improvements Add remove() in Shapes and Points (#8031) Example from SciPy 2025 tutorial; image warping (#8111) Add a tasks manager status for plugins actions and napari processes (#8211) Use single settings path for all uv tool run (#8250) Add "Hide completed" checkbox to Tracks layer for improved visualization (#8253) Handle affine layer metadata when splitting RGB images (#8256) Update the Shapes select_all_shapes action to allow selection in all modes and add notification of number (#8292) Bug Fixes Layer controls widgets refactor (#7355) Fix effect of scaling when converting shapes to labels (#8098) Fix disappearing points (#8223) Fix shape position by using a stable algorithm for sorting z_position (#8232) Remove console print action shortcut to prevent collision with command palette shortcut (#8233) Do not update thumbnail on Labels empty slice (#8251) Handle affine layer metadata when splitting RGB images (#8256) fix slice_from_axis to wrap zarr in dask to keep lazy behavior (#8260) Add menu-xdg to XPRA containers (#8263) Check for zarr in images_to_stack and use da.stack instead of np.stack (#8267) Better handling of remote zarr (#8268) Use custom logger formatting to most of argument to string (#8305) Documentation Use EffVer (#8243) Use shared workflows for build docs (#8308) Bump napari-sphinx-theme in deps and constraints (#8315) Add funding information to the home page (docs#818) Update version switcher for 0.6.4 (docs#826) Fix version switcher URL to prevent problems with unversioned pages (docs#827) Update documentation for dependencies groups (docs#829) Update and restructure the preferences guide (docs#834) Fix @jaimergp's last name (docs#835) Auto generate release index with highlights and timeline (docs#838) Add EffVer to release guide and link to checklist template (docs#839) Enable dark mode for website (docs#840) Add draft of 0.6.5 release notes (docs#845) Add documentation for startup script. (docs#846) Add some info about running python scripts via cli (docs#847) Add note about workers registration as tasks and close confirmation dialog when closing napari GUI via close button (docs#851) Release notes v0.6.5 (docs#853) Other Pull Requests Improve workflow naming by prefixing triage- doc- make- (#8159) Move the test that requires make_napari_viewer from test_qt_viewer (#8176) Bump superqt min version (#8212) Change headless setup for Windows and Linux to pyvista/setup-headless-display-action (#8216) Update coverage, hypothesis, pint, pyopengl, virtualenv, xarray (#8221) [pre-commit.ci] pre-commit autoupdate (#8222) Use global register for units in ScaleBar (#8226) Wait until viewer show in the test in make_napari_viewer (#8228) Update Qt backends used in tests to test more on Qt6 than Qt5 (#8229) Change properties for features usage in the Vectors layer controls (#8231) Add cache for pooch on CI for Linux jobs (#8235) Temporary increase timeout of macOS jobs (#8237) Update coverage, hypothesis, ipython, matplotlib, pyside6, pytest-rerunfailures, tifffile (#8239) ci(dependabot): bump the actions group with 6 updates (#8240) Make connect_setattr handle value conversion for widgets like checkboxes (#8244) Update fsspec, hypothesis, pytest, pytest-rerunfailures, xarray (#8249) [pre-commit.ci] pre-commit autoupdate (#8252) Add typing to points mouse bindings (#8255) Use proper name for ruff pre-commit hook and reorder hooks (#8259) [maint] Revert back to windows-2022 for windows runners (#8265) Update dask, hypothesis, pydantic, qtconsole, scipy, tifffile (#8270) Add napari to trove classifiers to populate builtins on napari hub (#8277) Add release checklist template (#8295) Update coverage, dask, hypothesis, lxml, numpy, psutil, tensorstore, tifffile (#8296) Move Jaime Rodríguez-Guerra to core-team section of CITATION.cff (#8298) Do not use verbose mode for headless test (#8300) Migrate macos-13 to macos-15-intel runner (#8301) Update remove_ready_to_merge so it only sweeps on pushed and crons (#8302) [maint] Revert docs constraints changes from #8270 (#8307) Fix constraints generation (#8309) CI: Fix github.rest.issues.removeLabel call (#8311) Add pooch cache for build docs (docs#830) ci(dependabot): bump the github-actions group with 3 updates (docs#831) add docs/release/index.md to gitignore (docs#843) Add Jaime Rodríguez-Guerra to core-team (docs#844) Bump python to 3.12 for build docs workflows (docs#848) Use shared workflow for build docs (docs#850) 12 authors added to this release (alphabetical) (+) denotes first-time contributors 🥳 Daniel Althviz Moré (docs) - @dalthviz Grzegorz Bokota (docs) - @Czaki Jaime Rodríguez-Guerra (docs) - @jaimergp Johannes Soltwedel - @jo-mueller Juan Nunez-Iglesias - @jni Kanai Potts - @8bitbiscuit Lorenzo Gaifas (docs) - @brisvag Melissa Weber Mendonça - @melissawm Peter Sobolewski (docs) - @psobolewskiPhD Rahul Kumar - @rahul713rk rwkozar - @rwkozar Tim Monko (docs) - @TimMonko 15 reviewers added to this release (alphabetical) (+) denotes first-time contributors 🥳 Andrew Sweet - @andy-sweet Carol Willing - @willingc Daniel Althviz Moré (docs) - @dalthviz Davis Bennett - @d-v-b Draga Doncila Pop - @DragaDoncila Grzegorz Bokota (docs) - @Czaki Jaime Rodríguez-Guerra (docs) - @jaimergp Johannes Soltwedel - @jo-mueller Juan Nunez-Iglesias - @jni Lorenzo Gaifas (docs) - @brisvag Melissa Weber Mendonça - @melissawm Peter Sobolewski (docs) - @psobolewskiPhD Rahul Kumar - @rahul713rk rwkozar - @rwkozar Tim Monko (docs) - @TimMonko
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame distilled prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. Learned from the 10,348 direct Codex labels and 10,348 direct Gemma labels. Candidate is the union of thresholded teacher heads; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels or direct frontier model labels.
Codex and Gemma teacher scores by category
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.001 | 0.001 |
| Meta-epidemiology (narrow) | 0.000 | 0.000 |
| Meta-epidemiology (broad) | 0.000 | 0.000 |
| Bibliometrics | 0.001 | 0.000 |
| Science and technology studies | 0.001 | 0.000 |
| Scholarly communication | 0.000 | 0.000 |
| Open science | 0.001 | 0.001 |
| Research integrity | 0.000 | 0.000 |
| Insufficient payload (model declined to judge) | 0.045 | 0.017 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; both teacher heads agree on what is shown here.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".