Skip to content

Jeckerson/idea-orbitrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OrbiTrack

JetBrains plugin to aggregate GitHub issues and PRs across organizations and repositories into a single IDE-native interface with LLM context extraction.

License: Apache 2.0 JetBrains Plugin IntelliJ IDEA


Overview

OrbiTrack brings your GitHub issues and pull requests into your JetBrains IDE. Instead of switching between browser tabs, you can browse, filter, comment on, and manage issues and PRs from multiple repositories β€” all from a single tool window.

Key Features

  • πŸ” Unified View β€” See issues and PRs from all your tracked repositories in one list
  • πŸ”„ Incremental Sync β€” Fast delta updates via the GitHub Search API; full data on first load
  • πŸ’¬ Inline Comments β€” Read, create, edit, and delete comments without leaving the IDE
  • 🏷️ Rich Filtering β€” Filter by org, repo, type (issue/PR), and state (open/closed/merged)
  • πŸ“Š Grouping & Sorting β€” Group by org, repo, or type; sort by updated date, created date, or ID
  • πŸ”€ PR Management β€” View mergeability status, merge PRs (merge/squash/rebase), and checkout branches
  • πŸ€– LLM Context β€” One-click copy of structured issue context to clipboard for use with AI assistants
  • πŸ“ Markdown Rendering β€” Issue bodies and comments rendered as formatted HTML
  • ⏱️ Timeline β€” View issue/PR history (labels, assignments, closures, renames, merges)
  • πŸ†• Create Issues β€” Open new GitHub issues directly from the IDE
  • πŸ—‚οΈ Cache-first β€” Previously loaded data appears instantly on IDE restart
  • πŸ” Secure Auth β€” GitHub PAT stored in the IDE's native credential store

Screenshots


Installation

From JetBrains Marketplace

  1. Open your JetBrains IDE (IntelliJ IDEA, WebStorm, PyCharm, etc.)
  2. Go to Settings β†’ Plugins β†’ Marketplace
  3. Search for OrbiTrack
  4. Click Install and restart the IDE

From Disk

  1. Download the latest .zip from Releases
  2. Go to Settings β†’ Plugins β†’ βš™οΈ β†’ Install Plugin from Disk…
  3. Select the downloaded .zip file
  4. Restart the IDE

Setup

1. Generate a GitHub Personal Access Token

  1. Go to GitHub β†’ Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic)
  2. Click Generate new token (classic)
  3. Select scopes:
    • repo β€” Full control of private repositories (or public_repo for public only)
    • read:org β€” Read organization membership
  4. Copy the generated token

2. Configure OrbiTrack

  1. Go to Settings β†’ Tools β†’ OrbiTrack
  2. Paste your GitHub Personal Access Token
  3. Click Apply

3. Open the Tool Window

  1. Open a project that contains GitHub repositories
  2. Click the OrbiTrack tab on the right side of the IDE (or via View β†’ Tool Windows β†’ OrbiTrack)
  3. OrbiTrack will automatically detect GitHub repos from your project's .git/config and start syncing

Usage

Browsing Issues & PRs

The tool window is split into two panels:

  • Left panel β€” Filterable list of issues and PRs across all tracked repos
  • Right panel β€” Detail view for the selected item

Use the filter dropdowns to narrow by:

Filter Options
Org All Orgs, or a specific organization
Repo All Repos, or a specific repository
Type All Types, Issues, PRs
State Open, All States, Closed, Merged

Sorting & Grouping

  • Sort by Last Updated, Created Date, or ID (ascending/descending)
  • Group by any combination of Org, Repo, and Type for hierarchical views

Comments

  • Click + Add Comment to post a new comment
  • Your own comments show Edit and Delete buttons
  • Comments are rendered with full markdown support

Pull Request Actions

For open PRs, OrbiTrack shows:

  • βœ… Mergeability status (clean, conflicts, or checking)
  • Branch info (head β†’ base)
  • Merge PR button with method chooser (merge commit, squash, rebase)
  • Checkout Branch button to switch to the PR branch locally (supports fork PRs)

LLM Context Extraction

Click Copy LLM Context to copy a structured summary of the issue/PR to your clipboard, including:

  • Title, repo, state, labels, author, assignees
  • Full description
  • All comments with authors and timestamps
  • Metadata and GitHub URL

This is designed to be pasted into AI assistant conversations for context-aware help.

Creating Issues

Click the + button in the toolbar to create a new GitHub issue:

  • Select the target repository
  • Enter title, body (markdown), labels, and assignees
  • The issue is created via the GitHub API and immediately appears in your list

How It Works

Auto-Detection

On project open, OrbiTrack scans for GitHub repositories by:

  1. Reading .git/config from project content roots
  2. Checking the project base directory
  3. Scanning immediate subdirectories (supports monorepo/org-folder layouts)

Both HTTPS (https://github.com/org/repo.git) and SSH (git@github.com:org/repo.git) remotes are recognized.

Sync Strategy

  • First load β€” Fetches issues and PRs from each tracked repo via the GitHub REST API
  • Subsequent refreshes β€” Uses the GitHub Search API with updated:>timestamp for fast incremental updates
  • Delta merge β€” New and updated items are merged into the cache; stale items are pruned by state
  • Manual refresh β€” The toolbar Refresh button forces a full re-fetch

Caching

All data is cached in .idea/orbitrack-cache.json:

  • Items, tracked repos, filter state, and last refresh timestamp are persisted
  • On IDE restart, cached data is displayed immediately while a background sync runs
  • Cache is updated automatically on every data change and at project close

Tech Stack

Layer Technology
Language Kotlin 2.1.10
Build Gradle (Kotlin DSL) + IntelliJ Platform Plugin SDK v2
Platform IntelliJ IDEA 2025.1+ (Community & Ultimate)
GitHub API OkHttp 4.12 + kotlinx.serialization 1.6.3
Local Cache JSON file (.idea/orbitrack-cache.json)
Async Kotlin Coroutines (kotlinx.coroutines)
UI JetBrains Platform UI (Tool Window, JBList, JBSplitter, JEditorPane)
Auth GitHub PAT stored via IDE PasswordSafe
JVM Java 21

Building from Source

Prerequisites

  • JDK 21+
  • Gradle 9.4.1 (included via wrapper)

Build

./gradlew buildPlugin

The plugin distribution (.zip) will be in build/distributions/.

Run in Sandbox IDE

./gradlew runIde

Run Tests

./gradlew test

Project Structure

src/main/kotlin/io/orbitrack/idea/
β”œβ”€β”€ actions/          # Toolbar and context menu actions
β”‚   β”œβ”€β”€ RefreshAction.kt
β”‚   └── CreateIssueAction.kt
β”œβ”€β”€ api/              # GitHub REST API client layer
β”‚   β”œβ”€β”€ GitHubClient.kt          # Interface
β”‚   β”œβ”€β”€ OkHttpGitHubClient.kt    # OkHttp implementation
β”‚   └── GitHubModels.kt          # Serializable API response models
β”œβ”€β”€ cache/            # Local JSON cache
β”‚   └── OrbiCacheManager.kt
β”œβ”€β”€ llm/              # LLM integration (v2 β€” reserved)
β”œβ”€β”€ model/            # Core data models
β”‚   └── OrbiItem.kt
β”œβ”€β”€ services/         # IDE services
β”‚   β”œβ”€β”€ OrbiTrackAppService.kt       # App-level: PAT storage, client factory
β”‚   β”œβ”€β”€ OrbiTrackProjectService.kt   # Project-level: sync, data, actions
β”‚   └── GitRepoDetector.kt           # Auto-detect GitHub repos
β”œβ”€β”€ settings/         # Plugin settings UI
β”‚   └── OrbiTrackConfigurable.kt
β”œβ”€β”€ sync/             # Background sync engine (v2 β€” reserved)
└── ui/               # Tool window and panels
    β”œβ”€β”€ OrbiTrackToolWindowFactory.kt
    β”œβ”€β”€ OrbiTrackPanel.kt
    β”œβ”€β”€ FilterPanel.kt
    β”œβ”€β”€ ItemDetailPanel.kt
    β”œβ”€β”€ ItemCellRenderer.kt
    β”œβ”€β”€ ListEntry.kt
    └── MarkdownRenderer.kt

License

This project is licensed under the Apache License 2.0 β€” see the LICENSE file for details.

About

JetBrains plugin to aggregate GitHub issues and PRs across organizations and repositories into a single IDE-native interface with LLM context extraction.

Resources

License

Stars

Watchers

Forks

Contributors

Languages