← Changelog
nteract 2.6

Table of Contents, Package Management, Widget State

The nteract 2.6 draft focuses the notebook workspace: a table of contents for long notebooks, package management in the rail, widget state that survives more of your work, and Markdown improvements including bare TeX rendering.

  • notebook
  • packages
  • widgets
  • markdown

Highlights

  • Long notebooks now get an outline / table of contents
  • Widget state is saved and restored more reliably across notebook sessions
  • Markdown rendering is backed by the Rust engine and now handles bare TeX environments

2.6 is the release where the notebook gets more shape around the work you are already doing.

2.5 made outputs feel richer: navigable tracebacks, explorable DataFrames, and secrets that stay out of notebook output. 2.6 is quieter, but it is the kind of quiet that matters after a few hours in the same notebook. Navigation moves closer. Packages stop competing with the page. Widgets remember more. Markdown behaves more like a document.

This is a notebook ergonomics release.

Table of Contents

Long notebooks now get an outline in the left rail.

That sounds small until every heading has become a landmark. Instead of scrolling by vibes, you can skim the document structure, jump between sections, and keep the notebook body focused on the cells themselves.

The rail also gives package management a better home. Package state belongs near the notebook, but it does not need to live in the notebook body. Moving package management into the rail makes the environment feel attached to the work without turning dependency management into another cell-shaped distraction.

I like this direction because it makes nteract feel less like an editor with a notebook inside it and more like a notebook with the right surrounding instruments.

Package management moved out of the way

Managing packages is part of notebook work. It is also not the notebook itself.

The 2.6 rail work makes package panels and summaries feel like part of the workspace chrome instead of a one-off interruption. You can keep track of the environment, see what the notebook depends on, and get back to the cells faster.

This is the same philosophy behind the rest of the rail: outline, packages, runtime, search, and other notebook-adjacent tools should be available without taking over the notebook.

Widgets remember more

Widget state is the sleeper feature in this release.

Some of the pressure for this came from work on hosted notebooks, but the feature matters on the desktop too. Once a widget becomes part of how you explore a notebook, it is not enough to replay the code and hope the UI lands in the same place. Sliders, progress, controls, and comm-backed state need to survive more of the notebook's real life.

2.6 saves live widget state metadata more reliably and moves widget comm state into a clearer document path. The user-facing version is simple: widgets should feel less temporary.

Bare TeX works

Markdown got more serious in 2.6.

Bare TeX environments now project as math instead of sitting there like slightly suspicious plain text. If you write a notebook as a document, not just as a pile of code cells, that matters. Equations should read as equations.

The Markdown path is also moving through the Rust/WASM markdown engine. Users probably do not need to care about the engine by name, but they should care about what it unlocks: steadier parsing, shared behavior, better anchors for outlines, and a Markdown cell that can carry more of the document experience without special cases.

A better notebook shell

A lot of the 2.6 work sits just below the surface: shared rail pieces, shell capabilities, quieter execution affordances, better hidden-cell language, shared package summaries, and a more consistent NotebookView.

That may sound like internal plumbing, but it shows up in the app as fewer weird edges. Read-only markdown still navigates. Structure edits gate themselves on host support. The rail can carry more responsibility. The notebook body gets to stay the notebook body.

Things to finish before publishing

  • Replace the draft date with the final release date.
  • Replace coversVersions with the actual 2.6 stable and patch versions.
  • Add the final githubReleaseUrl.
  • Add the 2.6 hero image and any demo videos.
  • Refresh the commit range comment against the final stable tag.
  • Regenerate or paste the final technical changelog.
  • Trim any sections that still read too implementation-heavy after the release shape is final.

Working technical changelog

Current draft range summary

This section is a prep scaffold, not the final generated changelog.

Current source range:

4867b005ac89d1ce28775c27a33f379da0d0f50e..f6fba37ee12c414937859760b7fb59b2a4db7469

The range currently contains 441 first-parent commits and 666 total commits since v2.5.1-stable.202605261941.

Rail, outline, and packages

  • add contextual outline tree (db4b61a)
  • add left rail panels (f07b528)
  • add shared notebook rail shell (5b365b8)
  • polish notebook rail outline and packages (c350f5c)
  • split package manager panels (aaa65fd)
  • share package summary surfaces (b41296c)
  • document package manager surfaces (163f447)

Widget state

  • save live widget state metadata (644933e)
  • split widget comm state into CommsDoc (13a5fe2)
  • project CommsDoc widget state to Python (54339c1)
  • hydrate widget progress views (f640db7)
  • resolve widget comm blobs (d50887c)
  • show stale widget snapshots (a9bbc54)

Markdown and TeX

  • project Markdown through Rust WASM (5d4682e)
  • project bare TeX environments as math (70d1006)
  • restore preview double-click editing (5d337e7)
  • keep document frames selectable (449315f)
  • use markdown engine anchors for notebook outline (9344e01)
  • refine document typography (e113ccb)

Notebook shell and ergonomics

  • add capability-scoped document header (fdf13aa)
  • drive NotebookView from shell capabilities (8af8135)
  • gate run controls on host-neutral runtime availability (4cb2b76)
  • refine hidden and output surfaces (5b5fda8)
  • soften hidden cell reveal rows (5477469)
  • quiet completed cell status (335f0ab)
  • keep hidden cell keyboard navigation moving (f2555da)