A JetBrains IDE plugin that fights context-switching fatigue by keeping you focused while automatically summarizing what you missed.
Modern software development is fragmented. You're deep in a debugging session when Slack pings. You finish a feature, push a commit, and come back to find the repo has drifted in ten different directions. You lose more time re-orienting than you spent away.
Gist solves two of the biggest culprits:
- Distraction while coding: Slack notifications interrupt your flow at the worst possible moment.
- Context loss after a break: coming back to a repo and not knowing what changed since your last commit.
Gist watches your coding activity in real time and automatically sets your Slack status to Do Not Disturb while you're working. When you stop coding, it silently lifts it.
The idle detection isn't a simple timer — it adapts to your personal commit rhythm using an Exponential Moving Average (EMA) of your commit history:
- Commit size — Do you tend to make small, frequent commits or large batch ones?
- Inter-commit interval — How long do you typically work between commits?
- Time of day — The threshold is more lenient during work hours (a pause is probably a think-pause, not an absence) and tighter at night.
- Your own feedback — If the detection was wrong (you were still coding when it went idle), negative feedback nudges the threshold up. Positive feedback gently pulls it back down. These corrections persist and decay gradually so stale signals don't dominate forever.
Moreover, Gist allows users to personalize which messages are truly urgent through a list of important senders.
The result: a truly personal idle window — anywhere from 1 to 30+ minutes — that improves the more you use it.
Opening a project after a few days away shouldn't require reading every commit message. The Catch Up tab gives users the possibility to ask a large language model about changes since their last commit or within a specific date range. As a result, the LLM produces a concise, grouped summary of everything that has happened:
- New features, bug fixes, refactors — grouped by theme.
- 5–6 bullet points, not a wall of text.
- Generated from the real git history, not a guess.
src/main/kotlin/.../gist/
│
├── model/
│ └── CommitInfo.kt # Data class for a single commit
│
├── services/
│ ├── ActivityService.kt # Editor event listener + CODING/IDLE state machine
│ ├── AdaptiveThresholdEngine.kt # Computes the idle threshold from profile + feedback
│ ├── CommitProfileService.kt # Persists EMA of commit size & interval (XML state)
│ ├── FeedbackService.kt # Persists like/dislike feedback → multiplier (XML state)
│ ├── GitCommitService.kt # Reads git history via IntelliJ's git4idea API
│ ├── LastCommitService.kt # Caches & resolves the user's most recent commit
│ ├── OAuthService.kt # Slack OAuth 2.0 flow (local callback server)
│ ├── OpenAIService.kt # Calls GPT-4o-mini to summarize commit diffs
│ ├── RepoSummaryService.kt # Orchestrates git history → prompt → OpenAI
│ ├── SlackService.kt # Slack API: DND, status, messaging
│ └── UserIdentityService.kt # Resolves git user.name / user.email
│
├── startup/
│ ├── CommitListenerRegistrar.kt # CheckinHandler: records commit metrics on push
│ └── MyProjectActivity.kt # Plugin lifecycle: starts ActivityService
│
├── toolWindow/
│ ├── MainToolWindowFactory.kt # Creates the two tool window tabs
│ ├── LastCommitPanel.kt # "Catch Up" tab UI (Swing)
│ └── SlackToolWindowPanel.kt # "Slack" tab UI (Swing)
│
└── utils/
└── EnvReader.kt # Reads API keys from env vars or .env file
- IntelliJ IDEA or any JetBrains IDE (2023.1+)
- A Slack workspace where you can create an app
- An OpenAI API key (for the Catch Up summary feature)
git clone https://github.com/AsierCL/Gist.git
cd Gist
./gradlew buildPluginIn your IDE: Settings → Plugins → Install Plugin from Disk → select the .zip from build/distributions/.
Create a .env file in the project root (or set environment variables).
Gist will find the .env automatically. System environment variables take priority.
Open the Slack tab in the Gist tool window and click Connect with Slack. A browser window will open for OAuth. After authorizing, you'll be redirected back and the plugin handles the rest.
Pull requests are welcome. Please open an issue first for larger changes so we can discuss the direction.
./gradlew runIde # Launch a sandboxed IDE instance with the pluginThis project is licensed under the MIT License. See the LICENSE file for the full text and details.

