{"id":31644549,"url":"https://github.com/dinodanic/diny","last_synced_at":"2026-04-19T08:03:01.974Z","repository":{"id":316296738,"uuid":"1062565899","full_name":"dinoDanic/diny","owner":"dinoDanic","description":"🦕 diny — from git diff to clean commits","archived":false,"fork":false,"pushed_at":"2025-09-30T21:11:40.000Z","size":15044,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-30T21:29:05.384Z","etag":null,"topics":["ai-tool","automation","cli","cobra-cli","commit-message","developer-tools","git","git-commit-messages","git-diff","go","ollama","opensource","plug-and-play"],"latest_commit_sha":null,"homepage":"https://diny-cli.vercel.app/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dinoDanic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T12:30:43.000Z","updated_at":"2025-09-30T21:11:44.000Z","dependencies_parsed_at":"2025-09-23T20:33:22.511Z","dependency_job_id":null,"html_url":"https://github.com/dinoDanic/diny","commit_stats":null,"previous_names":["dinodanic/diny"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/dinoDanic/diny","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinoDanic%2Fdiny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinoDanic%2Fdiny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinoDanic%2Fdiny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinoDanic%2Fdiny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dinoDanic","download_url":"https://codeload.github.com/dinoDanic/diny/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dinoDanic%2Fdiny/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278722768,"owners_count":26034461,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ai-tool","automation","cli","cobra-cli","commit-message","developer-tools","git","git-commit-messages","git-diff","go","ollama","opensource","plug-and-play"],"created_at":"2025-10-07T04:53:52.855Z","updated_at":"2026-04-19T08:03:01.530Z","avatar_url":"https://github.com/dinoDanic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://diny.run/diny-v2-200-light.png\" alt=\"diny logo\" width=\"200\"/\u003e\n\n# diny\n\n**Free AI git commit messages. No API key. No signup.**\n\n\u003c/div\u003e\n\nOpen-source CLI that turns staged diffs into clean commits in one command.\n\n---\n\n## Features\n\n- Interactive TUI for commit, config, changelog, timeline, and yolo\n- Reads staged changes with `git diff` and filters out noise (lockfiles, binaries, build artifacts)\n- Generates 3 message variants; inline editing or open in `$EDITOR`\n- File picker to stage/unstage without leaving diny\n- Timeline analysis with date presets or custom ranges\n- AI-powered changelog generation between tags or commits\n- Three-tier config system (global, project-shared, project-private)\n- 10+ dark and light themes\n- No API key required\n\n## Install\n\n### macOS / Linux\n\n```bash\nbrew install dinoDanic/tap/diny\n```\n\n### Windows (Scoop)\n\n```powershell\nscoop bucket add dinodanic https://github.com/dinoDanic/scoop-bucket\nscoop install diny\n```\n\n### Manual\n\nDownload pre-built binaries from [GitHub Releases](https://github.com/dinoDanic/diny/releases).\n\n## Usage\n\nStage your changes, then run:\n\n```bash\ngit add .\ndiny commit\n```\n\nThis launches the interactive TUI — generate, review, and commit without leaving the terminal.\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `diny commit` | Launch the interactive TUI |\n| `diny yolo` | Stage all changes, generate a commit, and push |\n| `diny changelog` | Generate an AI-powered changelog between tags or commits |\n| `diny timeline` | Summarize and analyze your commit history |\n| `diny config` | Interactive TUI config editor |\n| `diny theme` | List available UI themes |\n| `diny auto` | Set up a `git auto` alias |\n| `diny link lazygit` | Integrate diny with LazyGit |\n| `diny update` | Update diny to the latest version |\n\n## Integrations\n\n### Git alias (`git auto`)\n\n```bash\ndiny auto          # install\ndiny auto remove   # uninstall\n```\n\nThen use `git auto` anywhere you'd use `git commit`.\n\n### LazyGit\n\n```bash\ndiny link lazygit\n```\n\nAdds a custom command to [LazyGit](https://github.com/jesseduffield/lazygit) so you can generate commit messages from its UI.\n\n## Configuration\n\nRun `diny config` to open a TUI for browsing and editing all settings.\n\ndiny supports a three-tier configuration system:\n\n| Level | Location | Description | Committed |\n|-------|----------|-------------|-----------|\n| Global | `~/.config/diny/config.yaml` | Your defaults for all projects | No |\n| Project (versioned) | `.diny.yaml` | Team-shared settings for this project | Yes |\n| Project (local) | `\u003cgitdir\u003e/diny/config.yaml` | Your personal per-project overrides | No |\n\n**Priority:** local \u003e versioned \u003e global. Project configs only need to specify the values they override.\n\nOutside a git repository, only global config is available.\n\n### Options\n\n| Option | Description | Values |\n|--------|-------------|--------|\n| `theme` | UI color theme | see [Themes](#themes) |\n| `commit.conventional` | Use conventional commit format | `true` / `false` |\n| `commit.emoji` | Prefix commits with emoji | `true` / `false` |\n| `commit.tone` | Message tone | `professional` / `casual` / `friendly` |\n| `commit.length` | Message length | `short` / `normal` / `long` |\n| `commit.custom_instructions` | Extra guidance for the AI | free text |\n| `commit.hash_after_commit` | Show and copy commit hash after committing | `true` / `false` |\n\n### Themes\n\n- **Dark:** `catppuccin`, `tokyo`, `nord`, `dracula`, `gruvbox-dark`, `onedark`, `monokai`, `solarized-dark`, `everforest-dark`, `flexoki-dark`\n- **Light:** `solarized-light`, `github-light`, `gruvbox-light`, `flexoki-light`\n\nRun `diny theme` to preview them all.\n\n### Example\n\n```yaml\ntheme: tokyo\n\ncommit:\n  conventional: true\n  emoji: true\n  tone: casual\n  length: short\n  custom_instructions: \"Include JIRA ticket from branch name\"\n  hash_after_commit: true\n```\n\n## Update\n\n```bash\ndiny update                                     # built-in updater\nbrew update \u0026\u0026 brew upgrade dinoDanic/tap/diny  # macOS / Linux\nscoop update diny                               # Windows\n```\n\n## Why diny\n\nI'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.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinodanic%2Fdiny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdinodanic%2Fdiny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinodanic%2Fdiny/lists"}