{"id":47516123,"url":"https://github.com/isene/GiTerm","last_synced_at":"2026-04-01T07:00:44.056Z","repository":{"id":308377115,"uuid":"1032544745","full_name":"isene/GiTerm","owner":"isene","description":"Git(hub) TUI application","archived":false,"fork":false,"pushed_at":"2026-03-21T18:08:23.000Z","size":907,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-22T07:52:58.929Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isene.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-08-05T13:13:31.000Z","updated_at":"2026-03-21T18:08:26.000Z","dependencies_parsed_at":"2025-08-05T17:10:19.318Z","dependency_job_id":null,"html_url":"https://github.com/isene/GiTerm","commit_stats":null,"previous_names":["isene/giterm"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/isene/GiTerm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2FGiTerm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2FGiTerm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2FGiTerm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2FGiTerm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isene","download_url":"https://codeload.github.com/isene/GiTerm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isene%2FGiTerm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31269179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T06:57:45.811Z","status":"ssl_error","status_checked_at":"2026-04-01T06:57:42.389Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-03-27T13:00:30.247Z","updated_at":"2026-04-01T07:00:44.050Z","avatar_url":"https://github.com/isene.png","language":"Ruby","funding_links":[],"categories":["\u003ca name=\"git\"\u003e\u003c/a\u003eGit and accessories"],"sub_categories":[],"readme":"# GiTerm - Git \u0026amp; GitHub Terminal User Interface\n\n\u003cimg src=\"img/giterm_logo.svg\" align=\"left\" width=\"150\" height=\"150\"\u003e\n\u003cbr clear=\"left\"/\u003e\n\n[![License](https://img.shields.io/badge/License-Public%20Domain-brightgreen.svg)](https://unlicense.org/)\n[![GitHub stars](https://img.shields.io/github/stars/isene/GiTerm.svg)](https://github.com/isene/GiTerm/stargazers)\n[![Stay Amazing](https://img.shields.io/badge/Stay-Amazing-blue.svg)](https://isene.org)\n\n![Ruby](https://img.shields.io/badge/language-Ruby-red) [![Gem Version](https://badge.fury.io/rb/giterm.svg)](https://badge.fury.io/rb/giterm) ![License](https://img.shields.io/badge/license-Public_Domain-green)\n\nA powerful Git and GitHub Terminal User Interface (TUI) client written in Ruby using rcurses. Browse repositories, manage issues and pull requests, and perform Git operations - all from your terminal.\n\n## Key Features\n\n### 🔧 Git Operations\n- **Status View** (`s`) - View git status with colored file indicators\n- **Diff View** (`d`) - Show file diffs with syntax highlighting  \n- **Log View** (`l`) - Browse commit history with details\n- **Branch Management** (`b`) - List, switch, and manage branches\n- **Stage/Unstage** (`a`/`u`) - Stage or unstage files\n- **Commit** (`c`) - Commit changes with message editor\n- **Push/Pull** (`p`/`P`) - Sync with remote repositories\n- **Repository Switching** (`:cd`) - Change to different git repositories\n\n### 🌐 GitHub Integration  \n- **Repository Browser** (`TAB`) - Browse all your GitHub repositories with:\n  - Color-coded organizations for visual distinction\n  - Star/fork/issue counts\n  - Language indicators\n  - README preview with delayed fetching\n  - File tree exploration\n- **Issues** (`i`) - View repository issues\n- **Pull Requests** (`p` in GitHub mode) - View pull requests\n- **Search** (`/`) - Search across repositories\n- Automatic repository detection from git remote\n\n### 🎯 Enhanced Navigation\n- **List Navigation**\n  - `j`/`k` or `↓`/`↑` - Move up/down\n  - `PgUp`/`PgDn` - Page up/down\n  - `g`/`G` or `HOME`/`END` - Jump to top/bottom\n  - Smooth wrapping at list boundaries\n\n- **Right Pane Scrolling**\n  - `Shift-↓`/`Shift-↑` - Line down/up\n  - `Shift-→`/`Shift-←` - Page down/up\n  \n- **General**\n  - `TAB` - Toggle between Git/GitHub modes\n  - `h`/`←` - Go back/up one level\n  - `l`/`→` or `ENTER` - Enter/view details\n  - `?` - Show context-sensitive help\n  - `r` - Refresh current view\n  - `q` - Quit\n\n### Command Mode\n- `:` - Enter git command mode\n- `!` - Enter shell command mode\n\n## Screenshots\n\n### Git Repository Status View\nShows the enhanced status view with file changes and detailed diff information in the right pane:\n\n![Git Status View](screenshots/giterm_git_status.png)\n\n### Non-Git Directory Support\nNew in v1.1.0 - GiTerm now runs in non-git directories and offers GitHub integration:\n\n![Non-Git Directory](screenshots/giterm_non_git.png)\n\n### GitHub Repositories Mode\nBrowse all your GitHub repositories with detailed information and README preview:\n\n![GitHub Mode](screenshots/giterm_github_mode.png)\n\n### Help System\nComprehensive help showing all available keyboard shortcuts:\n\n![Help Screen](screenshots/giterm_help.png)\n\n## Requirements\n\n- Ruby 2.7 or higher\n- rcurses gem (will be installed automatically)\n- Git installed and configured\n- GitHub personal access token (for GitHub features)\n\n## Installation\n\n### Via RubyGems (Recommended)\n```bash\ngem install giterm\n```\n\n### Manual Installation\n```bash\n# Clone the repository\ngit clone https://github.com/isene/GiTerm.git\ncd GiTerm\n\n# Make executable\nchmod +x giterm\n\n# Install dependencies\ngem install rcurses\n```\n\n## Usage\n\nRun GiTerm from within any Git repository:\n\n```bash\ngiterm\n```\n\nOr if installed manually:\n```bash\n./giterm\n```\n\n### Interface Layout\n\nThe interface consists of four panes:\n- **Top Pane**: Current repository, branch, and mode indicator\n- **Left Pane**: List view (files, branches, repos, etc.)\n- **Right Pane**: Detail view with scrollable content\n- **Bottom Pane**: Command input and status messages\n\n### Performance Features\n- **Smart Fetching**: Extended content (README, file lists) fetches after 0.5s pause\n- **Efficient Updates**: Only changed content is redrawn\n- **Mode Memory**: Remembers your position when switching between modes\n\n## Configuration\n\n### GitHub Token Setup\n\nTo enable GitHub features, set up a personal access token:\n\n1. Create a token at: https://github.com/settings/tokens\n2. Required scopes: `repo`, `read:user`\n3. Set the environment variable:\n\n```bash\n# Add to your shell profile (.bashrc, .zshrc, etc.)\nexport GITHUB_TOKEN=ghp_your_token_here\n```\n\n### Custom Configuration\n\nGiTerm looks for configuration in the following order:\n1. Environment variable `GITHUB_TOKEN`\n2. Git config: `git config --global giterm.token YOUR_TOKEN`\n\n### Additional Commands\n\n**Command Mode** (`:`):\n- `:cd /path/to/repo` - Change to a different git repository\n- Any git command - Executes in current repository\n\n**Shell Mode** (`!`):\n- Execute any shell command from within GiTerm\n\n## What's New\n\n### Version 1.1.0\n- 🏠 **Non-Git Directory Support** - GiTerm now runs outside git repositories!\n- 📊 **Enhanced Local Repository Info** - Rich repository overview when working tree is clean\n- 🔧 **Smart Mode Switching** - Seamless switching between local Git and GitHub modes\n- 🎯 **Improved User Experience** - Better error handling and helpful guidance\n- 📸 **Updated Documentation** - New screenshots showing all major features\n\n### Version 1.0.0\n- 🎨 Organization color coding in GitHub mode\n- 📜 Right pane scrolling with Shift+Arrow keys\n- ⚡ Smart delayed fetching for smooth navigation\n- 🔄 Mode-specific index memory\n- 📁 Repository switching with `:cd` command\n- 🐛 Fixed display issues and improved performance\n\n## Design Philosophy\n\nGiTerm follows these principles:\n- **Single file implementation** - Easy to understand and modify\n- **Minimal dependencies** - Only requires rcurses\n- **Fast and responsive** - Optimized rendering and smart fetching\n- **Keyboard-driven** - No mouse required\n- **Clean Ruby code** - RuboCop compliant and well-documented\n\n## Contributing\n\nContributions are welcome! Please:\n1. Fork the repository\n2. Create your feature branch\n3. Run RuboCop to ensure code style\n4. Submit a pull request\n\n## Author\n\nCreated by Geir Isene ([@isene](https://github.com/isene))\n\n## License\n\nPublic Domain - Use freely for any purpose.\n\n## See Also\n\n- [RTFM](https://github.com/isene/RTFM) - Ruby Terminal File Manager\n- [rcurses](https://github.com/isene/rcurses) - Ruby curses library used by GiTerm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisene%2FGiTerm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisene%2FGiTerm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisene%2FGiTerm/lists"}