Docs for the latest release, v0.2.0.
Tiza GitHub

Start here

Release notes

For the notes of an earlier release, see Earlier releases.

Tiza v0.2.0

Draw on top of code in your terminal to explain, debug and teach.

This release adds enter effects, the scroll move and a better presentation mode. It also adds defaults and personal styles in the config file, and many images to the docs. A document of v0.1.2 opens in v0.2.0. See Before you update for one exception.

Tiza explains Rust ownership step by step

Report a bug that you can reproduce with the bug report form. Put feedback, ideas and terminal reports in Discussions.

What is new

  • Enter effects (experimental). An annotation can come in with an effect. draw draws the stroke of a box, a callout, an arrow, an underline, brackets or a strike, then its text comes in. fade fades the annotation in. On a spotlight, fade fades the dim in and out. Set "effect": "draw" or "effect": "fade" in the document, or add effect=draw at the end of an annotation command. The GIF, WebP, MP4 and WebM exports show the effects. See Enter effects.
  • The scroll move. A step can move the view to a line, a text or an annotation, before its annotations come in. Thus an effect never plays out of the view. A step with only a scroll move is a camera step. :scroll adds one at the step on screen. See Scroll.
  • Presentation mode.
    • The step counter has its own row, so it never covers the code.
    • When you go to a step, its new annotations come into the view.
    • With the live pointer off, j, k, J, K, g and G move the view, as in a web browser.
    • Tab goes through the annotations that the view shows, and the view does not move.
    • Each frame goes to the terminal in one update. In a terminal that supports it, a big move of the view never shows half of the old frame.
  • Defaults and personal styles. [defaults] in the config file sets the values that each session starts with, for example numbers, mouse, layout and the width of tiza render. [styles] holds your own mark styles for all your documents. tiza config shows the file, each value and its source. See Config file.
  • Follow mode pauses only at a step that applies a code.patch. The status bar shows ⟳ paused, and one message tells you the step that loads the change.
  • Files from a newer version open. Tiza skips a move or an effect that this version does not know, and tiza check names each one.
  • The docs show more. Real exports show the moves, the enter effects, the spotlights, the kinds and the colors. Images of the TUI show presentation mode, the live pointer, the panels, the status bar and a scroll move.
  • Exports use less memory. A GIF of 22 frames of a 300-line document uses 163 MB of memory, not 2.2 GB, and less than half of the time.

Changes and fixes

  • A spotlight with lines also dims the annotations that do not touch its lines. The annotations in ids, and the annotations on the lines of the live pointer, keep their colors.
  • A label of a highlight or a mark that goes under its line starts under its span. When the code column has room, the label of an arrow goes beside the code of the line that the arrow goes to.
  • brackets on a span of one column with no space on either side draws ⊔. Before, it looked the same as underline.
  • In a terminal that draws ⚠, ↪, ⏸ or ▶ two cells wide, the status bar fits its row. Tiza shows !, > or || in their place outside the code.
  • Without a width, tiza render of the live instance, :export and export_image draw at the width of the code area of the screen.
  • tiza check gives the warning clipped_code when a code line is cut at the width of the check, so tiza check --strict fails.
  • get_code names the characters that the screen does not show as they are, for example a zero-width space, with their column.
  • A position or a move with a key that Tiza does not know is an error over the socket and MCP. The message names the key that is near, for example Did you mean `col`?.

The CHANGELOG has the full list.

Install

On macOS, and on Linux x86_64 with glibc 2.35 or later, run this command:

curl -fsSL https://raw.githubusercontent.com/luiscarlosjayk/tiza/main/install.sh | sh

The script checks the SHA-256 checksum of the download. Then it puts tiza in ~/.local/bin. To update from an earlier version, run the same command.

To install an archive yourself, use the file for your system:

SystemFile
macOS, Apple Silicontiza-v0.2.0-aarch64-apple-darwin.tar.gz
macOS, Inteltiza-v0.2.0-x86_64-apple-darwin.tar.gz
Linux x86_64 (glibc 2.35 or later: Ubuntu 22.04, Debian 12, Fedora 36 or later)tiza-v0.2.0-x86_64-unknown-linux-gnu.tar.gz
  1. Download the file for your system and its .sha256 file.
  2. Check the file: shasum -a 256 -c tiza-v0.2.0-<target>.tar.gz.sha256. On Linux, you can use sha256sum -c.
  3. Extract the file: tar -xzf tiza-v0.2.0-<target>.tar.gz
  4. Make a folder in your PATH if you do not have one: mkdir -p ~/.local/bin
  5. Copy tiza to that folder: cp tiza-v0.2.0-<target>/tiza ~/.local/bin/

macOS: The binaries do not have an Apple Developer ID signature. If you download the file with a web browser, macOS stops Tiza the first time and shows "tiza" Not Opened. To fix this, run this command one time: xattr -d com.apple.quarantine ~/.local/bin/tiza. A download with curl or with the install script does not have this problem.

From source (Rust 1.88 or later): run cargo install tiza. The tiza binary contains libwebp, a C library, so cargo install also needs a C compiler. On macOS, install the Xcode Command Line Tools. On Debian and Ubuntu, install the build-essential package.

Tiza does not support Windows in version 0.x.

Before you update

  • A document that has a scroll move does not open in Tiza 0.1.2 or older.
  • A find of a select or a rebind is now an error when its text starts or ends inside a character (a grapheme). Then the document does not open, and tiza check names the move. Before, Tiza made a guess.
  • Tiza 0.1.2 and older open a document with an enter effect, but they show no effect and remove it when they save.

Known limits

  • Enter effects are an experiment. They can change or go away in a later version.
  • We tested Tiza on macOS in the Zed terminal and in Herdr. Other terminals with 24-bit color and box-drawing characters should work. We did not test tmux and other terminals (Terminal support).
  • Use find to target a code change in a step, not a line number. If you edit the file while Tiza is closed, a change by line number applies to the lines that are at that number now.

More information

To get a notice of new versions, watch the repository on GitHub (Watch → Custom → Releases).

Docs · README · Agent setup · CHANGELOG

Earlier releases