MCPcopy Index your code
hub / github.com/dinoDanic/diny

github.com/dinoDanic/diny @v0.7.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.7.8 ↗ · + Follow
526 symbols 1,558 edges 101 files 52 documented · 10%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

diny logo

diny

Free AI git commit messages. No API key. No signup.

Open-source CLI that turns staged diffs into clean commits in one command.


Features

  • Interactive TUI for commit, config, changelog, timeline, and yolo
  • Reads staged changes with git diff and filters out noise (lockfiles, binaries, build artifacts)
  • Generates 3 message variants; inline editing or open in $EDITOR
  • Split staged changes into multiple commits grouped by concern
  • File picker to stage/unstage without leaving diny
  • Timeline analysis with date presets or custom ranges
  • AI-powered changelog generation between tags or commits
  • Three-tier config system (global, project-shared, project-private)
  • 10+ dark and light themes
  • No API key required

Install

macOS / Linux

brew install dinoDanic/tap/diny

Windows (Scoop)

scoop bucket add dinodanic https://github.com/dinoDanic/scoop-bucket
scoop install diny

Manual

Download pre-built binaries from GitHub Releases.

Usage

Stage your changes, then run:

git add .
diny commit

This launches the interactive TUI — generate, review, and commit without leaving the terminal.

Staged too much at once? Press S on the ready screen to split the diff into multiple commits grouped by concern — edit, reassign files, regenerate, then commit them in order.

Commands

Command Description
diny commit Launch the interactive TUI
diny yolo Stage all changes, generate a commit, and push
diny changelog Generate an AI-powered changelog between tags or commits
diny timeline Summarize and analyze your commit history
diny config Interactive TUI config editor
diny theme List available UI themes
diny auto Set up a git auto alias
diny link lazygit Integrate diny with LazyGit
diny update Update diny to the latest version

Integrations

Git alias (git auto)

diny auto          # install
diny auto remove   # uninstall

Then use git auto anywhere you'd use git commit.

LazyGit

diny link lazygit

Adds a custom command to LazyGit so you can generate commit messages from its UI.

Configuration

Run diny config to open a TUI for browsing and editing all settings.

diny supports a three-tier configuration system:

Level Location Description Committed
Global ~/.config/diny/config.yaml Your defaults for all projects No
Project (versioned) .diny.yaml Team-shared settings for this project Yes
Project (local) <gitdir>/diny/config.yaml Your personal per-project overrides No

Priority: local > versioned > global. Project configs only need to specify the values they override.

Outside a git repository, only global config is available.

Options

Option Description Values
theme UI color theme see Themes
commit.conventional Use conventional commit format true / false
commit.emoji Prefix commits with emoji true / false
commit.tone Message tone professional / casual / friendly
commit.length Message length short / normal / long
commit.custom_instructions Extra guidance for the AI free text
commit.hash_after_commit Show and copy commit hash after committing true / false

Themes

  • Dark: catppuccin, tokyo, nord, dracula, gruvbox-dark, onedark, monokai, solarized-dark, everforest-dark, flexoki-dark
  • Light: solarized-light, github-light, gruvbox-light, flexoki-light

Run diny theme to preview them all.

Example

theme: tokyo

commit:
  conventional: true
  emoji: true
  tone: casual
  length: short
  custom_instructions: "Include JIRA ticket from branch name"
  hash_after_commit: true

Update

diny update                                     # built-in updater
brew update && brew upgrade dinoDanic/tap/diny  # macOS / Linux
scoop update diny                               # Windows

Why diny

I'm terrible at commit messages — I type fast, make mistakes, and my history ends up full of "fix stuff" and "ui thing." diny reads your changes, writes a decent message, and summarizes your day when you need to remember what you worked on. It's AI doing what it's actually good at: the repetitive stuff.

License

MIT

Core symbols most depended-on inside this repo

GetCurrentTheme
called by 69
ui/theme.go
New
called by 30
tui/loader/loader.go
indentStyle
called by 25
tui/app/styles.go
metaStyle
called by 22
tui/app/styles.go
sectionTitleStyle
called by 22
tui/app/styles.go
footerKeyStyle
called by 20
tui/timeline/styles.go
footerDescStyle
called by 19
tui/timeline/styles.go
footerKeyStyle
called by 16
tui/changelog/styles.go

Shape

Function 290
Method 131
Struct 96
TypeAlias 9

Languages

Go100%

Modules by API surface

tui/app/view.go27 symbols
config/config.go27 symbols
tui/app/update.go26 symbols
tui/app/commands.go23 symbols
tui/app/styles.go21 symbols
tui/app/model.go21 symbols
ui/ui.go19 symbols
tui/yolo/styles.go14 symbols
tui/config/model.go13 symbols
update/update.go12 symbols
tui/timeline/styles.go11 symbols
prompts/state.go11 symbols

For agents

$ claude mcp add diny \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact