documentation/TUI-DIAGRAMS.md · main · 2026-10-13

TUI View Diagrams

Each TUI list and detail view has one layout, which the diagrams draw with the example data from the protocol specs.

Layout · List views · Detail views · Routes

Layout

Each structured detail view has these parts, from top to bottom:

The keys of each view are in TUI-KEYS.md; the diagrams do not show the footer.

╭─ ICON[⇡]  Subject (40ch) · Author · FormatTime · [repo]#hash ───────────╮
│                                                                         │
│ ▏Subject (bold)                                                         │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏State         value             RowStylesWithWidths(14, 0)             │
│ ▏Field         value                                                    │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Body (markdown)                                                        │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Section (count)                                                        │
│  ─────────────────────────────────────────────────────────────          │
│  ... items ...                                                          │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (count)                                                       │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  [comment card]                                                         │
│                                                                         │
│ key:label  key:label  /:search  X:retract                               │
╰─────────────────────────────────────────────────────────────────────────╯

; and , move between the links of the selected card, enter follows the focused one, and a click hits a link. The n-th link a render marks is the n-th entry of the card's Links(); anchors_test.go checks each detail view.

TextTarget
#commit: ref in a subject or bodythe item, else the post of a cached commit, else the commit diff
#branch:, #file:, #list: refthe Repository view on the branch, the Code view at the path and lines, the list
#tag: refthe release that names the tag, else the diff of the tagged commit
ref of a repository the cache does not hold, or a url that carries oneoutside, at the url
@user@host in a subject or bodythe author: search
Author, Merged by, Closed by, Signed bythe author: search, when the row carries an email
Assignees, Reviewers, Labelsthe assignee:, reviewer: and label: search
Referenced bythe citing commit, resolved as a #commit: ref
Base, Head, a stack row, a card's branch pairthe Repository view on the branch
the tip after Base or Headthe commit it records
Depends on, stacked on a cardthe pull request it builds on
Tag of a releasethe Tags view at the tag
file:line on feedbackthe Code view at the lines: the head for a new line, the base for an old one, at the recorded tip
Adopted from, on the card and the rowthe original item
the repository of a notification cardthe Repository view
Source URL, artifacts, markdown links and urlsoutside

List views

Each list view except List repositories is a CardList: one card per item, a ▏ bar on the selected card, and a separator between cards. MaxLines is the height of the card body.

Timeline

Timeline cards have MaxLines 5 and show interaction counts.

╭─ Timeline ──────────────────────────────────────────────────────────────╮
│                                                                         │
│ ▏•  Alice · 2h ago · #abc123456789                                      │
│ ▏Hello world!                                                           │
│ ▏↩ 2  ↻ 1                                                               │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Bob · 5h ago · #def456789abc                                        │
│  Great idea! I especially like the part about...                        │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↻  Alice · 1d ago · #bcd234567890                                      │
│  ┊ Bob · Great idea!                                                    │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Repository

The title carries the follow state: workspace, followed, mutual or unfollowed.

╭─ ⊡  ✓ user/repo · 1/5 ─────────────────────────────────────────────────╮
│                                                                         │
│ ▏•  Alice · 2h ago · #abc123456789                                      │
│ ▏Hello world!                                                           │
│ ▏↩ 2                                                                    │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  •  Alice · 1d ago · #def456789abc                                      │
│  Add dark mode support                                                  │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Branches

My Branches in the navigation, or b on a repository, opens its branches. The first row reads every branch, and a feature branch of the workspace counts only the commits ahead of the default branch.

╭─ ⎇  user/repo branches ────────────────────────────────────────────────╮
│                                                                         │
│  ▸ All branches · 16 commits                                            │
│    feature/dark · 3 ahead · 1h ago                                      │
│    main · 12 commits · 1d ago · default                                 │
│    gitmsg/social · 1 commit · 2d ago                                    │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Tags

My Tags in the navigation, or t on a repository or on a branch, opens the tags of the local clone, highest version first. A row shows the commits since the previous tag, the date and the author, and a release mark when a release names the tag. Enter opens that release, else the diff of the tagged commit; c opens the code at the tag.

╭─ ⌂  user/repo tags ────────────────────────────────────────────────────╮
│                                                                         │
│  ▸ v1.0.0 · 4 commits since v0.9.0 · 1h ago · Alice · release           │
│    v0.9.0 · 12 commits · 1d ago · Bob                                   │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Changes

w on My Repository opens the working tree of the workspace: one row per changed or untracked file with the two columns of git status --short, and under the list the diff of the selected file, the staged diff before the unstaged one. s and u stage and unstage the selected file, S and U every file. C opens the commit form when the index holds a change; the commit is the index, through git commit, so the hooks and the signing of the repository run as from the shell.

╭─ ±  Changes · 3 files · 2 staged ──────────────────────────────────────╮
│                                                                         │
│  ▸ A  added.txt · staged                                                │
│    MM both.txt · staged, then changed again                             │
│    ?? new.txt · untracked                                               │
│                                                                         │
│  ▌ staged: added.txt  +2                                                │
│       1 + one                                                           │
│       2 + two                                                           │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Code

c on a repository or on a branch opens the tree of the branch; with no branch picked, the default branch. Enter descends into a directory or opens a file, and backspace goes up. A file shows line numbers and syntax color; a line range named by a reference is selected and scrolled into view. A binary file and a Git LFS pointer show their size only. The view reads the workspace or the local clone of a followed repository, and is read-only.

╭─ ▤  user/repo · main · src ────────────────────────────────────────────╮
│                                                                         │
│  ▸ ..                                                                   │
│    lib/                                                                 │
│    main.go · 2.0KB                                                      │
│    vendor · submodule                                                   │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

╭─ ▤  user/repo · main · src/main.go ────────────────────────────────────╮
│                                                                         │
│   1  package main                                                       │
│   2                                                                     │
│   3  func main() {                                                      │
│   4      run()                                                          │
│   5  }                                                                  │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

List repositories

The view is a text list, with an input field for a local list.

╭─ ☷  My List ───────────────────────────────────────────────────────────╮
│                                                                         │
│  + |                                                                    │
│    url [branch | *]                                                     │
│                                                                         │
│  ▸ user/repo            ✓ followed  · https://github.com/user/repo      │
│    bob/repo             ✓ mutual    · https://github.com/bob/repo       │
│    alice/repo                       · https://gitlab.com/alice/repo     │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

List posts

The view shows the posts from each repository in a list.

╭─ ☷  My List ───────────────────────────────────────────────────────────╮
│                                                                         │
│ ▏•  Alice · 2h ago · user/repo#abc123456789                             │
│ ▏Hello world!                                                           │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  •  Bob · 5h ago · bob/repo#def456789abc                                │
│  Great idea!                                                            │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Issues

Issue cards have MaxLines 1. n opens the issue form.

╭─ ○  Open Issues · (3) ─────────────────────────────────────────────────╮
│                                                                        │
│ ▏○  Add dark mode support · Alice · 2h ago · kind/feature              │
│  ─────────────────────────────────────────────────────────────         │
│  ○  Add dashboard analytics · Bob · 1d ago · kind/feature              │
│  ─────────────────────────────────────────────────────────────         │
│  ●  Add keyboard shortcuts · Alice · 3d ago · kind/task                │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯

Milestones

╭─ ◇  Open Milestones · (2) ─────────────────────────────────────────────╮
│                                                                        │
│ ▏◇  Release v2.0 · Alice · due Mar 15 · ████████░░░░  3/5              │
│  ─────────────────────────────────────────────────────────────         │
│  ◇  Design System Epic · Bob · due Feb 15 · ░░░░░░░░░░░░  0/4          │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯

Sprints

╭─ ◷  Active Sprints · (2) ──────────────────────────────────────────────╮
│                                                                        │
│ ▏◷  Sprint 23: UX Polish · Alice · Feb 1-14 · ████░░░░  2/5 · 8d       │
│  ─────────────────────────────────────────────────────────────         │
│  ◷  Sprint 24 · Bob · Feb 14-28 · ░░░░░░░░░░░░  0/3 · planned          │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯

Releases

Release cards have MaxLines 2.

╭─ ⏏  Releases (2) ──────────────────────────────────────────────────────╮
│                                                                        │
│ ▏⏏  Release v1.0.0 · Alice · 2d ago                                    │
│ ▏   Pre-built binaries for Linux, macOS, and Windows.                  │
│                                                                        │
│  ─────────────────────────────────────────────────────────────         │
│                                                                        │
│  ⏏  Release v2.0.0-beta.1 · Alice · 2w ago                             │
│     Implements dark mode support.                                      │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯

Pull requests

Pull request cards have MaxLines 2.

╭─ ⑂  Pull Requests (2) ─────────────────────────────────────────────────╮
│                                                                        │
│ ▏⑂  Add dark mode support · Alice · 3h ago · open                      │
│ ▏   main ← dark-mode · ✓1 ✗0 · +120 -45                                │
│                                                                        │
│  ─────────────────────────────────────────────────────────────         │
│                                                                        │
│  ⑂  Add keyboard shortcuts · Bob · 1d ago · open                       │
│     main ← feature/shortcuts · +42 -8                                  │
│                                                                        │
╰────────────────────────────────────────────────────────────────────────╯

The input is at the top, and the results are cards under it, with the matches highlighted.

╭─ Search ────────────────────────────────────────────────────────────────╮
│                                                                         │
│  > dark mode█                                                           │
│                                                                         │
│  •  Alice · 2h ago · #abc123456789                                      │
│  Add [dark] [mode] support                                              │
│  ↩ 2                                                                    │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ○  Add [dark] [mode] support · Alice · 3d ago · kind/feature           │
│  Users can toggle between light and [dark] themes...                    │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Notifications

Read items are dimmed.

╭─ Notifications ─────────────────────────────────────────────────────────╮
│                                                                         │
│ ▏•  Bob mentioned you · 1h ago                                          │
│ ▏Hey @[email protected], thoughts on this approach?                     │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Alice commented · 3h ago                        (dimmed = read)     │
│  Love this idea, I'll start on it.                                      │
│                                                                         │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ⎇  Bob started following · 1d ago                  (dimmed = read)    │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Detail views

Post detail

The view shows a thread: the parent (dimmed), the post, then the replies, indented by depth.

╭─ •  Alice <[email protected]> · Jan 6, 2025 10:30 UTC · #abc1234 ───────╮
│                                                                         │
│  [parent - dimmed, max 5 lines]                                         │
│  Alice · 2h ago                                                         │
│  Original post content...                                               │
│                                                                         │
│  ────────────────────────────────────────────────────────  (white)      │
│                                                                         │
│ ▏Alice · 2h ago · #abc123456789                                         │
│ ▏Hello world!                                                           │
│ ▏↩ 2  ↻ 1                                                               │
│                                                                         │
│  ────────────────────────────────────────────────────────  (white)      │
│                                                                         │
│  ↩  Bob · 1h ago · #def456789abc                                        │
│  Great idea!                                                            │
│                                                                         │
│  ─────────────────────────────────────────────────────────  (dim)       │
│                                                                         │
│      ↩  Alice · 30m ago                                                 │
│      I agree!                                                           │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Issue detail

╭─ ○  Add dark mode support · Alice · 2h ago · #abc123456789 ─────────────╮
│                                                                         │
│ ▏Add dark mode support                                                  │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏State         open                                                     │
│ ▏Assignees     [email protected]                                        │
│ ▏Due           Feb 15, 2025                                             │
│ ▏Milestone     Release v2.0  due Mar 15                                 │
│ ▏Sprint        Sprint 23: UX Polish  Feb 1 - Feb 14                     │
│ ▏Labels        kind/feature, priority/high                              │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Users can toggle between light and dark themes in settings.            │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (2)                                                           │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Bob · 1h ago                                                        │
│  Love this idea, I'll start on it.                                      │
│                                                                         │
│  ─────────────────────────────────────────────────────────────  (dim)   │
│                                                                         │
│  ↩  Alice · 30m ago                                                     │
│  Adding real-time collaboration to the scope.                           │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Milestone detail

╭─ ◇  Release v2.0 · Alice · 5d ago · #def456789012 ──────────────────────╮
│                                                                         │
│ ▏Release v2.0                                                           │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏State         open                                                     │
│ ▏Due           Mar 15, 2025                                             │
│ ▏Progress      ████████░░░░░░░░  3/5 (60%)                              │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Dark mode and dashboard analytics.                                     │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Linked Issues (3)                                                      │
│  ─────────────────────────────────────────────────────────────          │
│ ▏○  Add dark mode support  kind/feature                                 │
│  ○  Add dashboard analytics  kind/feature                               │
│  ●  Add keyboard shortcuts  kind/task                                   │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (1)                                                           │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Bob · 3d ago                                                        │
│  Adding real-time collaboration to the scope, extending due date.       │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Sprint detail

╭─ ◷  Sprint 23: UX Polish · Alice · 5d ago · #abc123456789 ──────────────╮
│                                                                         │
│ ▏Sprint 23: UX Polish                                                   │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏State         active                                                   │
│ ▏Progress      ████░░░░░░░░░░░░  2/5 (40%)                              │
│ ▏Days left     8                                                        │
│ ▏Dates         Feb 1 - Feb 14, 2025                                     │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Two-week sprint for user experience improvements.                      │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Sprint Backlog (3)                                                     │
│  ─────────────────────────────────────────────────────────────          │
│  ○  Add dark mode support  kind/feature                                 │
│  ●  Add keyboard shortcuts  kind/task                                   │
│  ○  Add dashboard analytics  kind/feature                               │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (1)                                                           │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Alice · 2d ago                                                      │
│  Retrospective: Good velocity this sprint.                              │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Release detail

s opens the SBOM view.

╭─ ⏏  Release v1.0.0 · Alice · 2d ago · #abc123456789 ────────────────────╮
│                                                                         │
│ ▏Release v1.0.0                                                         │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Version       1.0.0                                                    │
│ ▏Tag           v1.0.0                                                   │
│ ▏Artifacts     app-linux-x64.tar.gz, app-darwin-arm64.tar.gz            │
│ ▏Artifact URL  refs/gitmsg/release/v1.0.0/artifacts/                    │
│ ▏Checksums     sha256:abc123def456...                                   │
│ ▏Signed by     SHA256:abc123...                                         │
│ ▏SBOM          sbom.spdx.json (SPDX) · 127 packages  [s]                │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Pre-built binaries for Linux, macOS, and Windows.                      │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (1)                                                           │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Bob · 1d ago                                                        │
│  Implements dark mode support.                                          │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Release SBOM

╭─ ⏏  SBOM · Release v1.0.0 ────────────────────────────────────────────╮
│                                                                         │
│ ▏Format        SPDX-2.3                                                │
│ ▏Packages      127                                                      │
│ ▏Generator     syft-1.0.0                                               │
│ ▏Licenses      MIT (42)                                                 │
│ ▏               Apache-2.0 (15)                                         │
│ ▏               BSD-3-Clause (8)                                        │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Packages (127)                                                         │
│  ─────────────────────────────────────────────────────────────          │
│ ▏github.com/pkg/errors          v0.9.1        MIT                       │
│  golang.org/x/sys               v0.15.0       BSD-3-Clause              │
│  github.com/mattn/go-sqlite3    v1.14.22      MIT                       │
│  ...                                                                    │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Pull request detail

d opens the diff, and i opens the interdiff between versions.

╭─ ⑂  Add dark mode support · Alice · 3h ago · #abc123456789 ─────────────╮
│                                                                         │
│ ▏Add dark mode support                                                  │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏State         open                                                     │
│ ▏Base          main                                                     │
│ ▏Head          dark-mode                                                │
│ ▏Behind        3 commits behind main                                    │
│ ▏Reviewers     [email protected]                                          │
│ ▏Closes        #commit:def456789012                                     │
│ ▏Files         3 changed  +120 -45  [d]                                 │
│ ▏Reviews       1 approved, 0 changes req, 0 pending                     │
│ ▏Status        Ready to merge                                           │
│ ▏─────────────────────────────────────────────────────────────          │
│                                                                         │
│  Commits (2)                                                            │
│  ─────────────────────────────────────────────────────────────          │
│  abc1234  Dark mode theme engine  Alice · 3h ago                        │
│  def4567  Add theme toggle component  Alice · 2h ago                    │
│                                                                         │
│ ▏─────────────────────────────────────────────────────────────          │
│ ▏Users can toggle between light and dark themes in settings.            │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Reviews (2)                                                            │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ✓  Bob · approved · 1h ago · reviewed v2, no code changes              │
│     LGTM!                                                               │
│                                                                         │
│  ─────────────────────────────────────────────────────────────  (dim)   │
│                                                                         │
│  ✗  Carol · changes requested · 2d ago · reviewed v1 [stale]            │
│     The transition timing needs work                                    │
│                                                                         │
│  ─────────────────────────────────────────────────────────────  (dim)   │
│                                                                         │
│  ↩  Bob · 2h ago · src/theme.js:42                                      │
│     Consider caching this value                                         │
│       40 function getTheme() {                                          │
│       41   const stored = localStorage.getItem('theme');                │
│     > 42   return stored || detectSystemTheme();                        │
│       43 }                                                              │
│                                                                         │
│ ═══════════════════════════════════════════════════════════             │
│                                                                         │
│  Comments (1)                                                           │
│  ─────────────────────────────────────────────────────────────          │
│                                                                         │
│  ↩  Alice · 30m ago                                                     │
│  Clean separation of theme variables.                                   │
│                                                                         │
╰─────────────────────────────────────────────────────────────────────────╯

Routes

Each view has a route; a view with no diagram uses the list or the detail layout.

SectionRoutes
Social/social/timeline, /social/my-repository, /social/repository, /social/repository/lists, /social/repository/branches, /social/repository/tags, /social/repository/code, /social/changes, /social/commit-form, /social/list, /social/list/repos, /social/detail, /social/thread, /social/post-form, /social/history, /social/history/diff, /social/explore, /social/followers
PM/pm/board, /pm/issues, /pm/issue, /pm/new-issue, /pm/edit-issue, /pm/milestones, /pm/milestone, /pm/new-milestone, /pm/edit-milestone, /pm/sprints, /pm/sprint, /pm/new-sprint, /pm/edit-sprint, /pm/config, and /pm/<item>/history with /history/diff for each item type
Review/review/prs, /review/pr, /review/new-pr, /review/edit-pr, /review/feedback, /review/diff, /review/pr/interdiff, /review/pr/history, /review/pr/history/diff
Release/release/list, /release/detail, /release/new, /release/edit, /release/sbom, /release/history, /release/history/diff, /export-artifact
Memo/memo/list, /memo/project, /memo/personal, /memo/inherited, /memo/inherits, /memo/session, /memo/session/items, /memo/detail, /memo/new, /memo/edit, /memo/history, /memo/history/diff
Core/search, /search/help, /notifications, /lists, /analytics, /diff, /settings, /config, /config/forks, /config/identity, /config/site, /cache, /errorlog, /help