We’re happy to announce the release of napari 0.4.9! 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://github.com/napari/napari

Highlights

This release adds a couple nice new features like additional shading modes for our surface layer (#2972) and the ability to copy a screenshot directly to the clipboard (#2721). It also contains a variety of bug fixes and improvements.

New Features

  • Add tooltip for labels (#2658)

  • Added copy-to-clipboard functionality (#2721)

  • Add make watch command for hot reload (#2763)

  • Expose alternative shading modes for surfaces (#2792)

Improvements

  • Global plugin setting (#2565)

  • Provide interface for progress bars in @thread_workers (#2655)

  • Delay all imports in napari.__init__ behind module level napari.__getattr__ (#2662)

  • Add block to viewer.show (#2669)

  • New type stubs PR, and simpler napari.view_layers module (#2675)

  • Extend the action manager to work with layer. (#2677)

  • Add MultiScaleData wrapper to give multiscale data a consistent API (#2683)

  • Revert “add MultiScaleData wrapper to give multiscale data a consistent API (#2683)” (#2807)

  • Add repr-html to nbscreenshot (#2740)

  • Set default highlight thickness to 2 (#2746)

  • Save shortcuts in settings (#2754)

  • Enable correct loading of settings from environment variables (#2759)

  • Add tooltips to widgets in preferences (#2762)

  • Improve colormap error message, when using display names or wrong colormap names (#2769)

  • Add parent to console and dockwidgets in a separate private attribute. (#2773)

  • Improve error message when legacy Qt installed from conda over pip (#2776)

  • Add octree and async to preferences (#2783)

  • Change remove to uninstall in plugin dialog (#2787)

  • Update typing and checks with mypy for settings module (#2795)

  • Do not write settings loaded from environment values (#2797)

  • Update settings descriptions (#2812)

  • Extend the action manager to support multiple shortcuts (#2830)

  • Adds notes about multiscale only being 2D to docs (#2833)

  • Set upper limit of Vectors spinboxes to infinity (#2842)

  • Plugin dock widgets menu (#2843)

  • Update to openGL max texture size (#2845)

  • Followup to #2485 to add opengl context (#2846)

  • Do not store default values in preference files (#2848)

Bug Fixes

  • Fix Labels and Points properties set (#2657)

  • Fixing add_dock_widget compatibility with magicgui v0.2 (#2734)

  • Shortcuts: Render properly shortcuts with minus and space. (#2735)

  • Fix runtime error when running doc tests on napari site (#2738)

  • Fix play button with dask/zarr (#2741)

  • Ignore opening 1D image layers in the viewer model. (#2743)

  • Fix custom layer subclasses (don’t require layer icon) (#2758)

  • Add temporal fix for handling enums in qt_json_form (#2761)

  • Use slicing rather than np.take in add_image (#2780)

  • Fix paint cursor size for layer with negative scale (#2788)

  • track_id dtype change. from uint16 to uint32 (#2789)

  • Ensure aborted workers don’t emit returned signal (#2796)

  • Connect axes visual to dims range change (#2802)

  • Add fix for large labels in new slices (#2804)

  • Fix zoom for non square image (#2805)

  • Implement lazy module importing for all public submodules (#2816)

  • Coerce surface vertex data to float32 (#2820)

  • Vendor shading filter from vispy (#2821)

  • Small doc fixes (#2822)

  • Fix key bindings display dialog (#2824)

  • Work around numpy’s string casting deprecation (#2825)

  • Update translation strings (#2827)

  • Fix keypress skipping layers in layerlist (#2837)

  • Fix octree imports (#2838)

  • Remove opacity from plugin sorter widget (#2840)

  • Fix Labels.fill for tensorstore data (#2856)

  • Be more robust for non-existant keybindings in settings (#2861)

  • trans NameError bugfix (#2865)

Tasks

  • Add imports linting (#2659)

  • Pre-commit update (#2728)

  • Remove linenos option from code-blocks and line references (#2739)

  • Remove qt from _qt import linter rule (#2774)

  • Add PR labeler and update templates (#2775)

  • Add pytest-order and move threading tests to the top of the suite (#2779)

  • Auto assign PR to author (#2794)

  • Typo in PR template (#2831)

12 authors added to this release (alphabetical)

10 reviewers added to this release (alphabetical)