📈 GH Trending Explorer 🎲 Surprise me

← all repos

milanofthe / sanity

git clone https://github.com/milanofthe/sanity.git v1.13.4 · 17d ago

Structural overview of a repository: every non-ignored file as a read-only panel on a zoomable canvas

+0
stars, 24h · #35,405
+~0
stars, 7 days · #41,029
+~0
stars, 30 days · #44,657
83
★ total
4
forks · 10 open issues

Star history (as recorded here)

2026-10-20 · 83 ★ 2026-10-23 · 83 ★
LanguageTypeScript
LicenseMIT
Created2026-09-21 (1mo ago)
Last push17d ago
Watchers0
OwnerUser

GitHub topics

Links

README excerpt
sanity opens a folder and shows every file in it at once, as read-only panels
on one zoomable canvas, grouped by directory. Zoomed out you see the structure
of the project, zoomed in you read the code. When a file changes on disk, its
panel flashes and the changed lines are marked.
It is a monitor. It runs next to the agent interface while coding agents work
in a repository, so you can see which files they touch, where those sit in the
tree, and zoom in to read what changed. It also plays the repository's git
history the same way, one commit at a time.
Try it in the browser with a few public repositories, no install:
sanity.milanrother.com
## Install
Releases have a `.dmg` for
macOS (Intel and Apple Silicon), an installer for Windows and an `.AppImage`
for Linux. The builds are not signed yet. On macOS, right click the app and
choose Open the first time. On Windows, click More info, then Run anyway. On
Linux, `chmod +x` the file and run it; if it refuses to start, the system has
no `libfuse2` and `./sanity.AppImage --appimage-extract-and-run` runs it
without one.
If the window opens at the right size and stays blank on Linux, WebKitGTK
could not allocate its buffer through your driver. Start it with
`WEBKIT_DISABLE_DMABUF_RENDERER=1` in the environment, which is what the app
already does for itself on NVIDIA; virtual machines, software rendering and
remote sessions hit the same thing and have to be told.
## Usage
 [code] 
Or open a folder from the Project menu.
- Space or `f` fits the whole project, a double click fits a panel.
- `/` jumps to search, over file names and contents. Enter goes to the next
 hit, Escape clears.
- The left and right arrow keys, or `[` and `]`, step through the git history.
- Clicking a panel header opens the file in `$SANITY_EDITOR`, `$VISUAL`,
 `$EDITOR` or the system default.
- Right click exports the view or the whole project as a 4K PNG, and on a
 panel shows the file in its folder.
- The Files menu sets which file types are shown and whether files ignored by
 git are listed. The View menu sets whether files are coloured by language,
 whether directories are named over the canvas, whether documents show all
 their pages, and whether each step through the history fits the whole
 project. The Theme menu has eight themes.
## Watching changes
The folder is watched while it is open. When a file is saved, its panel
flashes, the lines that were removed flash red and disappear, and the lines
that were added come in green. A new file fades in where the layout puts it,
and a deleted one fades out in red. When several files change at once, a
commit, a formatter or a save of all open files, they start one after another
across the canvas, so you can follow where it went.
The bands are drawn at every zoom level, so even with the whole project on
screen you can see where in a file the change was. A file that is rewritten
with the same content, by `touch` or a formatter with nothing to do, does not
flash. Moving or renaming a dire