Skip to content

Releases: nkapila6/jupytui

v0.4.0

Choose a tag to compare

@nkapila6 nkapila6 released this 02 Oct 18:18
5128da3

A big one: data tools, kernels that outlive the UI, remote kernels, git support and marimo.

Data

  • :vars lists the kernel's variables with type, shape and memory. enter on a pandas/polars DataFrame or numpy array opens a full-screen viewer that sorts, filters and pages inside the kernel, so huge frames stay fast.

Stale cells and reactive mode

  • Cells you edited show ~, cells whose inputs changed show ! (dependencies come from parsing each cell with Python's ast). :runstale reruns them; :set reactive reruns dependents automatically, like marimo.

Kernels

  • :detach quits but keeps the kernel and running cells going; reopen the notebook to pick it back up. jupytui sessions lists them.
  • :remote host[:dir] (or an ssh host in :env) runs the kernel on another machine over ssh and tunnels it back.

Git

  • jupytui diff a.ipynb b.ipynb diffs cell by cell. jupytui git setup makes git diff readable and git merge merge notebooks cell by cell (conflicts are marked inside the cell). --strip-outputs commits without outputs; jupytui clean strips them by hand.

marimo

  • Open, run and save marimo .py notebooks directly; jupytui convert goes between .ipynb and marimo.

Editing

  • / n N * search across cells, :s and :%s substitute, za folds output, gO shows an outline, and input() / getpass() work.

Install

  • curl -fsSL https://raw.githubusercontent.com/nkapila6/jupytui/main/install.sh | sh (checks the release checksum, installs to ~/.local/bin, no sudo).

Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.

v0.3.0

Choose a tag to compare

@nkapila6 nkapila6 released this 02 Oct 17:26
89ec41f

Plots show up as real images now.

Images

  • kitty and Ghostty draw plots at full resolution with the kitty graphics protocol; WezTerm, iTerm2 and foot use sixel.
  • Plots are sized like they would be in Jupyter, retina screens included.
  • Everywhere else (and inside nvim's terminal or tmux, which don't pass images through) it's still half blocks. Force a mode with JUPYTUI_IMAGES=kitty|sixel|blocks or :set images=....

Fixes

  • Diagnostics wait until you leave insert mode instead of flagging half-typed code.
  • The :env picker highlights the whole selected row.

Other

  • README has a kitty recording at the top; make demo-kitty re-records it, make demos the VHS ones. make help lists the targets.

Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.

v0.2.0

Choose a tag to compare

@nkapila6 nkapila6 released this 02 Oct 16:34
c5b9fa4

Editing got a lot more vim, plus completions, an env picker and proper outputs.

Editing

  • Vim inside cells: motions, operators with counts, text objects, visual mode, undo/redo, . repeat. enter goes into a cell, esc comes back out.
  • One line numbering for the whole notebook, relative by default. 5j moves exactly what's shown, across cells, from inside a cell or from the notebook view. :42 / 42G go to line 42.
  • Flash-style s jump: type a few characters, then the label.
  • Code is highlighted while you edit it.

Completions and LSP

  • Completions from the running kernel (knows live objects, so df. shows your columns) and from basedpyright, run through uvx.
  • basedpyright diagnostics, K hover, gd go to definition, signature help, ]d / [d.

Kernels

  • :env picks the Python env: project, nearby venvs, conda, uv-installed pythons. ipykernel is layered on by uv, nothing gets installed into the env. The choice is saved in the notebook.

Outputs

  • pandas and polars DataFrames drawn as real tables.
  • Plots and images drawn inline with half blocks; gx opens the full image.
  • Other HTML shows as text.

Export

  • jupytui export nb.ipynb or :export writes a # %% percent-format .py that jupytext reads back to the same cells.

Static binaries for macOS and Linux on arm64 and amd64. You need uv on your PATH.

v0.1.0

Choose a tag to compare

@nkapila6 nkapila6 released this 02 Oct 15:17
e639fef

First release. Open a notebook, run cells against an ipykernel started through uv, edit with vim-style keys or in your own nvim, save in Jupyter's format.

Static binaries for macOS and Linux on arm64 and amd64. Untar, put jupytui on your PATH, and make sure uv is installed.

Known gaps: images and HTML outputs show as placeholders, input() isn't supported, Python kernels only.