{"id":29821037,"url":"https://github.com/cod-e-codes/forger","last_synced_at":"2025-07-28T23:39:12.109Z","repository":{"id":307001480,"uuid":"1027499562","full_name":"Cod-e-Codes/forger","owner":"Cod-e-Codes","description":"Forger is a terminal-native developer dashboard that unifies CLI tools into a fast, extensible TUI. Built with Go, it offers plugin-based static analysis, code navigation, and Git-aware workflows — all from one keyboard-driven interface.","archived":false,"fork":false,"pushed_at":"2025-07-28T22:42:41.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-28T23:26:15.521Z","etag":null,"topics":["bubbletea","cli","code-navigation","code-visualization","dashboard","developer-tools","git-tools","go","lipgloss","open-source","plugin-architecture","productivity","static-analysis","terminal","tui"],"latest_commit_sha":null,"homepage":"https://github.com/Cod-e-Codes/forger","language":"Go","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/Cod-e-Codes.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}},"created_at":"2025-07-28T05:32:57.000Z","updated_at":"2025-07-28T22:42:45.000Z","dependencies_parsed_at":"2025-07-28T23:26:17.518Z","dependency_job_id":"a0cd0e29-0cec-4c06-a77e-a3557165056a","html_url":"https://github.com/Cod-e-Codes/forger","commit_stats":null,"previous_names":["cod-e-codes/forger"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Cod-e-Codes/forger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod-e-Codes%2Fforger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod-e-Codes%2Fforger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod-e-Codes%2Fforger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod-e-Codes%2Fforger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cod-e-Codes","download_url":"https://codeload.github.com/Cod-e-Codes/forger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod-e-Codes%2Fforger/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267604758,"owners_count":24114549,"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-07-28T02:00:09.689Z","response_time":68,"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":["bubbletea","cli","code-navigation","code-visualization","dashboard","developer-tools","git-tools","go","lipgloss","open-source","plugin-architecture","productivity","static-analysis","terminal","tui"],"created_at":"2025-07-28T23:39:07.299Z","updated_at":"2025-07-28T23:39:12.101Z","avatar_url":"https://github.com/Cod-e-Codes.png","language":"Go","readme":"# Forger\n\n[![Go](https://img.shields.io/badge/go-1.21%2B-blue)](https://go.dev) [![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\nForger is a terminal-native developer dashboard built with Go, [Bubble Tea](https://github.com/charmbracelet/bubbletea), and [Lip Gloss](https://github.com/charmbracelet/lipgloss). It integrates your favorite CLI tools into a unified TUI for static analysis, code navigation, environment inspection, and more.\n\n## What is Forger?\n\nForger is a **terminal-native developer toolkit** that provides a unified interface for multiple development tools. Think of it as a dashboard for your CLI tools - instead of switching between different terminal windows or running commands separately, Forger brings everything together in one interactive terminal interface.\n\n## Features\n\n- **Plugin Architecture**: Each tool is implemented as a plugin with a consistent interface\n- **Terminal-First UX**: Built entirely for the terminal using Bubble Tea and Lip Gloss\n- **Keyboard-Driven**: Navigate between plugins using arrow keys and keyboard shortcuts\n- **Extensible**: Easy to add new plugins or modify existing ones\n- **Fast \u0026 Lightweight**: No GUI frameworks or heavy dependencies\n- **Real Tool Integration**: Connects to actual CLI tools (marchat, ignoregrets, codesleuth)\n\n## Current Plugins\n\n### IgnoreGrets ✅ **Fully Integrated**\n- **Purpose**: Snapshot management and Git workflow tools\n- **Features**: Create, list, restore, and delete snapshots\n- **Integration**: Direct CLI wrapper with real ignoregrets commands\n- **Use Case**: Managing code states and quick rollbacks\n- **Status**: ✅ **Working** - Available and functional\n\n### CodeSleuth ✅ **Fully Integrated**  \n- **Purpose**: Static code analysis and IR visualization\n- **Features**: Analyze files, show IR diagrams, find references, call graphs\n- **Integration**: CLI wrapper with JSON output parsing\n- **Use Case**: Understanding code structure and dependencies\n- **Status**: ✅ **Working** - Available and functional (COBOL files only)\n\n### MarChat ⚠️ **Partially Integrated**\n- **Purpose**: Terminal-based chat interface\n- **Features**: Send messages, save/load chat history, clear conversations\n- **Integration**: Direct integration with marchat server/client\n- **Use Case**: Developer communication and note-taking\n- **Status**: ⚠️ **Server Configuration Required** - Server starts but client connection needs manual setup\n- **Note**: Requires `server_config.json` file with admin credentials\n\n## Quick Start\n\n### 1. Build Forger\n```bash\ngo build ./cmd/forger\n```\n\n### 2. Install Required CLI Tools\n\n**Important**: These tools must be installed and available in your `GOPATH/bin` directory for Forger to detect them properly.\n\n#### Install MarChat\n```bash\n# Clone the repository\ngit clone https://github.com/Cod-e-Codes/marchat.git temp-marchat\ncd temp-marchat\n\n# Build the client and server\ngo build ./client\ngo build ./server\n\n# Copy executables to GOPATH/bin\ncopy client.exe $env:GOPATH\\bin\\marchat-client.exe\ncopy server.exe $env:GOPATH\\bin\\marchat-server.exe\n\n# Clean up\ncd ..\nRemove-Item -Recurse -Force temp-marchat\n```\n\n#### Install IgnoreGrets\n```bash\n# Clone the repository\ngit clone https://github.com/Cod-e-Codes/ignoregrets.git temp-ignoregrets\ncd temp-ignoregrets\n\n# Build the executable\ngo build .\n\n# Copy executable to GOPATH/bin\ncopy ignoregrets.exe $env:GOPATH\\bin\\ignoregrets.exe\n\n# Clean up\ncd ..\nRemove-Item -Recurse -Force temp-ignoregrets\n```\n\n#### Install CodeSleuth\n```bash\n# Clone the repository\ngit clone https://github.com/Cod-e-Codes/codesleuth.git temp-codesleuth\ncd temp-codesleuth\n\n# Build the executable\ngo build ./cmd\n\n# Copy executable to GOPATH/bin\ncopy cmd.exe $env:GOPATH\\bin\\codesleuth.exe\n\n# Clean up\ncd ..\nRemove-Item -Recurse -Force temp-codesleuth\n```\n\n### 3. Configure MarChat (Required)\n\nCreate a `server_config.json` file in the Forger directory:\n\n```json\n{\n  \"port\": 9090,\n  \"admin_key\": \"forger-admin-key\",\n  \"theme\": \"patriot\",\n  \"admins\": [\"ForgerUser\"]\n}\n```\n\n### 4. Verify Installation\n```bash\n# Test that all executables are available\n\u0026 \"$env:GOPATH\\bin\\marchat-client.exe\" --help\n\u0026 \"$env:GOPATH\\bin\\ignoregrets.exe\" --help\n\u0026 \"$env:GOPATH\\bin\\codesleuth.exe\" --help\n```\n\n### 5. Run Forger\n```bash\n./forger\n```\n\n### 6. Navigate the Interface\n- Use **Tab** to switch between plugins\n- Use **Shift+Tab** to switch backwards between plugins\n- Press **'c'** to open MarChat overlay\n- Press **'q'** or **Ctrl+C** to quit\n- Press **'esc'** to close overlays\n\n## Plugin-Specific Controls\n\n### IgnoreGrets\n- **S**: Create snapshot\n- **R**: Restore snapshot (preview)\n- **D**: Delete old snapshots\n- **L**: Refresh list\n- **↑/↓**: Navigate snapshots (when plugin is active)\n- **Enter**: Restore selected snapshot\n\n### CodeSleuth\n- **A**: Analyze current directory (COBOL files only)\n- **I**: Show IR diagram\n- **R**: Find references\n- **G**: Show call graph\n- **↑/↓**: Navigate files (when plugin is active)\n- **Enter**: Analyze selected file\n\n### MarChat\n- **Enter**: Send message\n- **Backspace**: Edit message\n- **Ctrl+C**: Quit\n\n## Configuration\n\nForger uses `forger.json` for configuration:\n\n```json\n{\n  \"default\": \"ignoregrets\",\n  \"enabled\": [\n    \"ignoregrets\",\n    \"codesleuth\", \n    \"marchat\"\n  ]\n}\n```\n\n- `default`: The plugin to show when Forger starts\n- `enabled`: List of plugins to load\n\n## Troubleshooting\n\n### Plugins Not Available\nIf plugins show as \"Not Available\":\n\n1. **Check GOPATH**: Ensure your `GOPATH` is set correctly\n   ```bash\n   echo $env:GOPATH\n   # Should show: C:\\Users\\codyl\\go\n   ```\n\n2. **Verify Executables**: Check that executables exist in `GOPATH/bin`\n   ```bash\n   Test-Path \"$env:GOPATH\\bin\\marchat-client.exe\"\n   Test-Path \"$env:GOPATH\\bin\\ignoregrets.exe\"\n   Test-Path \"$env:GOPATH\\bin\\codesleuth.exe\"\n   ```\n\n3. **Test Executables**: Try running them directly\n   ```bash\n   \u0026 \"$env:GOPATH\\bin\\marchat-client.exe\" --help\n   \u0026 \"$env:GOPATH\\bin\\ignoregrets.exe\" --help\n   \u0026 \"$env:GOPATH\\bin\\codesleuth.exe\" --help\n   ```\n\n4. **Rebuild Forger**: After installing tools, rebuild Forger\n   ```bash\n   go build ./cmd/forger\n   ```\n\n### MarChat Issues\n- **Server won't start**: Ensure `server_config.json` exists with proper admin configuration\n- **Client can't connect**: Verify server is running on port 9090\n- **Admin authentication**: Use `ForgerUser` as username with admin key `forger-admin-key`\n\n### Common Issues\n\n- **\"Plugin not found\"**: Ensure the plugin is listed in `forger.json` under `enabled`\n- **\"Executable not found\"**: Verify the tool was built and copied to `GOPATH/bin` correctly\n- **\"Permission denied\"**: Run PowerShell as Administrator if needed\n- **CodeSleuth errors**: Remember that CodeSleuth only supports COBOL files currently\n\n## Architecture\n\n```\nforger/\n├── cmd/forger/          # Main application entry point\n├── internal/\n│   ├── core/           # Core runtime and plugin management\n│   ├── types/          # Shared interfaces and types\n│   └── plugins/        # Individual plugin implementations\n│       ├── ignoregrets/ # Git snapshot management\n│       ├── codesleuth/  # Code analysis\n│       └── marchat/     # Terminal chat\n├── forger.json         # Configuration file\n└── server_config.json  # MarChat server configuration\n```\n\n## Development\n\n### Adding a New Plugin\n\n1. Create a new directory in `internal/plugins/`\n2. Implement the `Plugin` interface:\n   ```go\n   type Plugin interface {\n       Init() tea.Cmd\n       Update(msg tea.Msg) (Plugin, tea.Cmd)\n       View() string\n       Name() string\n   }\n   ```\n3. Add the plugin to the registry in `internal/core/registry.go`\n4. Update `forger.json` to enable the plugin\n\n### Building\n\n```bash\ngo build ./cmd/forger\n```\n\n## Status\n\nThis is a **working release** with real integrations:\n\n- ✅ **IgnoreGrets**: Full CLI integration with snapshot management\n- ✅ **CodeSleuth**: Code analysis with JSON output parsing (COBOL files only)\n- ⚠️ **MarChat**: Chat interface with server auto-start (requires manual client setup)\n- 🔄 **Future**: Additional plugins (ascii-colorizer, parsec, etc.)\n\n## Tool Dependencies\n\nFor full functionality, these tools must be installed in `GOPATH/bin`:\n\n- **MarChat**: `marchat-client.exe` and `marchat-server.exe` (requires `server_config.json`)\n- **IgnoreGrets**: `ignoregrets.exe`\n- **CodeSleuth**: `codesleuth.exe`\n\n## Future Enhancements\n\n- Integration with additional tools (ascii-colorizer, parsec, etc.)\n- Plugin registry and installation system\n- Git-aware workspace detection\n- Custom dashboards and layouts\n- Real-time updates and notifications\n- Plugin configuration management\n- Improved MarChat integration with automatic client connection\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcod-e-codes%2Fforger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcod-e-codes%2Fforger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcod-e-codes%2Fforger/lists"}