id = "gitlogue"
name = "Gitlogue"
homepage = "https://github.com/unhappychoice/gitlogue"
description = "Git repository history viewer."
executables = ["gitlogue"]
platforms = ["macos", "linux"]
[dotfiles]
paths = ["~/.config/gitlogue/config.toml"]
exclude = []
secret = []
[commands]
format = 1
label = "Replay git history"
description = "Replay commits of the current repository as a terminal typing animation. Staged/unstaged diff mode, theme subcommands and speed rules are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "help"
url = "https://github.com/unhappychoice/gitlogue/blob/main/README.md"
revision = "main 2026-10-27"
evidence = """
gitlogue --commit abc123
gitlogue --commit HEAD~5..HEAD
gitlogue --order asc
gitlogue --commit abc123 --loop
gitlogue --watch
gitlogue --author "john"
gitlogue --after "2024-01-01"
gitlogue --before "1 week ago"
gitlogue --theme dracula
gitlogue --speed 20
gitlogue --ignore "*.ipynb" --ignore "poetry.lock"
gitlogue --ignore-file .gitlogue-ignore
"""
[[commands.field]]
id = "commit"
label = "Commit or range"
description = "A commit hash or a range such as HEAD~5..HEAD."
type = "string"
option = ["--commit"]
sources = ["readme"]
[[commands.field]]
id = "order"
label = "Order"
description = "asc replays oldest first."
type = "string"
option = ["--order"]
suggestions = [{ value = "asc", label = "Oldest first" }]
sources = ["readme"]
[[commands.field]]
id = "loop"
label = "Loop continuously"
type = "boolean"
option = ["--loop"]
sources = ["readme"]
[[commands.field]]
id = "watch"
label = "Watch for new commits"
type = "boolean"
option = ["--watch"]
sources = ["readme"]
[[commands.field]]
id = "author"
label = "Author"
type = "string"
option = ["--author"]
sources = ["readme"]
[[commands.field]]
id = "after"
label = "After date"
type = "string"
option = ["--after"]
sources = ["readme"]
[[commands.field]]
id = "before"
label = "Before date"
type = "string"
option = ["--before"]
sources = ["readme"]
[[commands.field]]
id = "theme"
label = "Theme"
type = "string"
option = ["--theme"]
suggestions = [{ value = "dracula", label = "Dracula" }, { value = "nord", label = "Nord" }]
sources = ["readme"]
[[commands.field]]
id = "speed"
label = "Typing speed"
type = "integer"
option = ["--speed"]
sources = ["readme"]
[[commands.field]]
id = "ignore"
label = "Ignore patterns"
type = "string"
option = ["--ignore"]
multiple = true
sources = ["readme"]
[[commands.field]]
id = "ignore_file"
label = "Ignore file"
type = "path"
option = ["--ignore-file"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["readme"]
[[commands.task]]
id = "replay"
label = "Replay a commit or range"
fields = ["commit", "loop", "theme", "speed"]
required = ["commit"]
[[commands.task]]
id = "watch"
label = "Watch repository"
fields = ["watch", "theme", "speed"]
required = ["watch"]
set = { watch = [true] }
lock = ["watch"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["commit", "order", "loop", "watch", "theme", "speed"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["author", "after", "before", "ignore", "ignore_file"]