{"id":13598675,"url":"https://github.com/lusingander/serie","last_synced_at":"2026-04-11T02:27:48.326Z","repository":{"id":250533858,"uuid":"834730157","full_name":"lusingander/serie","owner":"lusingander","description":"A rich git commit graph in your terminal, like magic 📚","archived":false,"fork":false,"pushed_at":"2025-03-08T04:56:34.000Z","size":11906,"stargazers_count":792,"open_issues_count":14,"forks_count":18,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T05:03:26.922Z","etag":null,"topics":["cli","git","git-client","git-graph","git-log","git-tools","ratatui","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lusingander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-28T07:22:08.000Z","updated_at":"2025-04-05T21:58:17.000Z","dependencies_parsed_at":"2024-07-28T08:48:34.289Z","dependency_job_id":"de234c9e-04dd-4d28-a232-b02f1b89b8c5","html_url":"https://github.com/lusingander/serie","commit_stats":{"total_commits":55,"total_committers":7,"mean_commits":7.857142857142857,"dds":"0.18181818181818177","last_synced_commit":"ca2d15d101b37d1f8eb2860a5b710916f7efb69a"},"previous_names":["lusingander/serie"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fserie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fserie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fserie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fserie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lusingander","download_url":"https://codeload.github.com/lusingander/serie/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248661713,"owners_count":21141450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","git","git-client","git-graph","git-log","git-tools","ratatui","terminal","tui"],"created_at":"2024-08-01T17:00:54.906Z","updated_at":"2026-04-11T02:27:48.320Z","avatar_url":"https://github.com/lusingander.png","language":"Rust","readme":"# Serie\n\n[![Crate Status](https://img.shields.io/crates/v/serie.svg)](https://crates.io/crates/serie)\n[![Built With Ratatui](https://img.shields.io/badge/Built_With-Ratatui-000?logo=ratatui\u0026logoColor=fff\u0026labelColor=000\u0026color=fff)](https://ratatui.rs)\n\nA rich git commit graph in your terminal, like magic 📚\n\n\u003cimg src=\"./img/demo.gif\"\u003e\n\n(This demo shows [Ratatui](https://github.com/ratatui/ratatui) repository!)\n\n## About\n\nSerie ([`/zéːriə/`](https://lusingander.github.io/serie/faq/index.html#how-do-i-pronounce-serie)) is a TUI application that uses the terminal emulators' image display protocol to render commit graphs like `git log --graph --all`.\n\n### Why?\n\nWhile some users prefer to use Git via CLI, they often rely on a GUI or feature-rich TUI to view commit logs. Others may find `git log --graph` sufficient.\n\nPersonally, I found the output from `git log --graph` difficult to read, even with additional options. Learning complex tools just to view logs seemed cumbersome.\n\n### Goals\n\n- Provide a rich `git log --graph` experience in the terminal.\n- Offer commit graph-centric browsing of Git repositories.\n\n### Non-Goals\n\n- Implement a fully-featured Git client.\n- Create a TUI application with a complex UI.\n- Works in any terminal environment.\n\n## Documentation\n\nFor detailed usage, configuration, and advanced features, see [the full documentation](https://lusingander.github.io/serie/).\n\n## Requirements\n\n- Git\n- Supported terminal emulator\n  - Refer to [Compatibility](https://lusingander.github.io/serie/getting-started/compatibility.html) for details.\n\n## Installation\n\nIf you're using Cargo:\n\n```\n$ cargo install --locked serie\n```\n\nFor other download options, see [Installation](https://lusingander.github.io/serie/getting-started/installation.html).\n\n## Usage\n\n### Basic\n\nRun `serie` in the directory where your git repository exists.\n\n```\n$ cd \u003cyour git repository\u003e\n$ serie\n```\n\n### Options\n\n```\nSerie - A rich git commit graph in your terminal, like magic 📚\n\nUsage: serie [OPTIONS]\n\nOptions:\n  -n, --max-count \u003cNUMBER\u003e        Maximum number of commits to render\n  -p, --protocol \u003cTYPE\u003e           Image protocol to render graph [default: auto] [possible values: auto, iterm, kitty]\n  -o, --order \u003cTYPE\u003e              Commit ordering algorithm [default: chrono] [possible values: chrono, topo]\n  -g, --graph-width \u003cTYPE\u003e        Commit graph image cell width [default: auto] [possible values: auto, double, single]\n  -s, --graph-style \u003cTYPE\u003e        Commit graph image edge style [default: rounded] [possible values: rounded, angular]\n  -i, --initial-selection \u003cTYPE\u003e  Initial selection of commit [default: latest] [possible values: latest, head]\n  -h, --help                      Print help\n  -V, --version                   Print version\n```\n\nFor details on each option, see [Command Line Options](https://lusingander.github.io/serie/getting-started/command-line-options.html).\n\n### Keybindings\n\nYou can see the keybindings by pressing the `?` key.\n\nThe [default key bindings](https://lusingander.github.io/serie/keybindings/index.html) can be overridden. See [Custom Keybindings](https://lusingander.github.io/serie/keybindings/custom-keybindings.html) for more information.\n\n### Config\n\nConfig files are loaded in the following order of priority:\n\n- `$SERIE_CONFIG_FILE`\n  - If `$SERIE_CONFIG_FILE` is set but the file does not exist, an error occurs.\n- `$XDG_CONFIG_HOME/serie/config.toml`\n  - If `$XDG_CONFIG_HOME` is not set, `~/.config/` will be used instead.\n\nIf the config file does not exist, the default values will be used for all items.\nIf the config file exists but some items are not set, the default values will be used for those unset items.\n\nFor detailed information about the config file format, see [Config File Format](https://lusingander.github.io/serie/configurations/config-file-format.html).\n\n### User command\n\nThe User command feature allows you to execute custom external commands.\nYou can display the output of commands like `git diff` in a dedicated view, execute commands like branch deletion in the background, or run interactive commands like `vim` by suspending the application.\n\nFor details on how to set commands, see [User Command](https://lusingander.github.io/serie/features/user-command.html).\n\n## Compatibility\n\n### Supported terminals\n\nThese image protocols are supported:\n\n- [Inline Images Protocol (iTerm2)](https://iterm2.com/documentation-images.html)\n- [Terminal graphics protocol (kitty)](https://sw.kovidgoyal.net/kitty/graphics-protocol/)\n\nFor more information, see [Compatibility](https://lusingander.github.io/serie/getting-started/compatibility.html).\n\n### Unsupported environments\n\n- Sixel graphics is not supported.\n- Terminal multiplexers (screen, tmux, Zellij, etc.) are not supported.\n\n## Screenshots\n\n\u003cimg src=\"./img/list.png\" width=600\u003e\n\u003cimg src=\"./img/detail.png\" width=600\u003e\n\u003cimg src=\"./img/refs.png\" width=600\u003e\n\u003cimg src=\"./img/searching.png\" width=600\u003e\n\u003cimg src=\"./img/applied.png\" width=600\u003e\n\u003cimg src=\"./img/diff_git.png\" width=600\u003e\n\u003cimg src=\"./img/diff_difft.png\" width=600\u003e\n\nThe following repositories are used as these examples:\n\n- [ratatui/ratatui](https://github.com/ratatui/ratatui)\n- [charmbracelet/vhs](https://github.com/charmbracelet/vhs)\n- [lusingander/stu](https://github.com/lusingander/stu)\n\n## Contributing\n\nTo get started with contributing, please review [CONTRIBUTING.md](CONTRIBUTING.md).\n\nContributions that do not follow these guidelines may not be accepted.\n\n## License\n\nMIT\n","funding_links":[],"categories":["Rust","cli","terminal","💻 Apps","剪贴板工具","Table of Contents"],"sub_categories":["⌨️ Development Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fserie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flusingander%2Fserie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fserie/lists"}