Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Download JetBrains Runtime (JBR 25)
run: |
wget https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-25.0.3-linux-x64-b508.16.tar.gz -O jbr.tar.gz
wget https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-25.0.4.1-linux-x64-b610.67.tar.gz -O jbr.tar.gz
mkdir -p jbr
tar -xzf jbr.tar.gz -C jbr --strip-components=1

Expand Down
33 changes: 33 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Agent Instructions

## Comment style (Java/Kotlin)

- `/** ... */` (Javadoc) is only for comments directly above a declaration (class, method, field).
Using it elsewhere trips IntelliJ's "Dangling Javadoc comment" inspection, since there's no
declaration for it to document.
- Short, single-sentence: `/** Comment text. */` on one line.
- Longer, multi-sentence:
```
/**
* First sentence.
* Second sentence.
*/
```
- `/* ... */` (plain block comment) for multi-line explanations inside method bodies — above a
statement, not a declaration.
- `//` for single-line asides.

Do not wrap a single continuous comment across several `//` lines — use a block form instead
(`/** */` above a declaration, `/* */` elsewhere).

## Commit messages

- Short and concise. Not a changelog of everything that changed — describe the end result once
this commit has merged.
- No `Co-Authored-By:` trailer.
- Wrap the summary and body lines to 72 characters.
- If the commit fully resolves a GitHub issue, close it with `Fixes comod/git-scope-pro#NNN` on
its own line in the body (fully-qualified `owner/repo#NNN`, matching the `upstream` remote —
see git history for the established usage, e.g. `Fixes comod/git-scope-pro#91`). If the commit
is only related to an issue without resolving it, reference the number without a closing
keyword instead.
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
## [2026.2.2]

### Added

- Added [toggle buttons for untracked/deleted files in the Git Scope window](https://github.com/comod/git-scope-pro/issues/111),
complementing the global setting with a per-project one

### Fixes

- Fixed [Files that are not viewable by IntelliJ do not open at all](https://github.com/comod/git-scope-pro/issues/106)
- Opens such files in the associated application on double-click, like the Project view; explains why that's not
possible over Remote Development instead of staying silent.
- Fixed the scope still listing files that Git reports as unchanged, which the 2026.2.1 fix was meant to clear
- The rescan that fix depends on ran before the IDE could accept it and was silently dropped; it now runs once
VCS initialization finishes.
- Fixed [target branch selection silently falling back to HEAD after moving the project or repo](https://github.com/comod/git-scope-pro/issues/110)
- Fixed a blank tab showing on next launch after closing the IDE with an unconfigured "New*" tab active
- Fixed scope warm-up for already-open files not running over Remote Development

### Changed

- Bumped versions of plugins and build tooling (IntelliJ Platform Gradle Plugin, Gradle, GitHub Actions)

## [2026.2.1]

### Fixes
Expand Down
1 change: 0 additions & 1 deletion CLASSES.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ Classes are organized by module: **backend**, **frontend**, and **shared**.
- `listener.VcsStartup`
- `listener.MyChangeListListener`
- `listener.MyGitRepositoryChangeListener`
- `listener.MyFileEditorManagerListener`
- `listener.MyTabContentListener`
- `listener.MyTreeSelectionListener`
- `listener.ToggleHeadAction`
Expand Down
46 changes: 33 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Create custom "scopes" for any Git reference—branch, tag, or commit hash. Each
in the **Git Scope** tool window. The currently selected scope visualizes changes through:

- **Scope tree diff** — Shows all modified files in the Git Scope tool window
- **File colors** - Files highlighted in editor tabs and project window according to the Git Scope status (added;
modified; deleted; ...)
- **File colors** — Files highlighted in editor tabs and project window according to the Git Scope status (added,
modified, deleted, ...)
- **Editor line status** — Displays change markers in the editor gutter for open files
- **Custom scope** — Enables filtered search, replace, and inspection operations
- **Status bar widget** — Displays the current scope selection
Expand All @@ -28,11 +28,16 @@ The plugin will add a new tool window named **Git Scope**:
By default, it will appear as a secondary tool window on the left side, but you can move it anywhere to suit your
workflow. Plugin settings are available under **Settings → Tools → Git Scope**.

Clicking the button opens the Git Scope window:

![](docs/tool_window_opened.png)

### Plugin Features

![](docs/icon.svg) **New Scope:**

To add a new scope, click the "+" tab on the Git Scope panel:

![](docs/add.png)

In the "New*" tab you get a few different options to define the scope:
Expand All @@ -57,11 +62,23 @@ built-in speed search — just start typing to narrow down the list.

![](docs/toolwindow.png)

The toolbar above the change list follows one rule: action icons that operate on the current selection (**Diff**,
**Select Opened File**) stay on the left, and icons that change how the list is presented (**Group By**, **Show
Deleted Files**, **Show Untracked Files**) are right-aligned:

![](docs/toolbar_toggles.png)

**Show Untracked Files** and **Show Deleted Files** are per-project toggles — off by default — for whether untracked
(unversioned) and locally deleted files show up in the Git Scope view. The initial value for newly opened projects can
be changed under **Settings → Tools → Git Scope** (see **Settings** below); once a project has been opened, it keeps
its own toggle state independent of that default.

Right click on any file will present a number of actions:

![](docs/context_menu.png)

- **Show Diff**: Opens a diff window showing the diff of the selected file (s) `<selected-scope>..HEAD`
- **Show Diff**: Opens a diff window showing the diff of the selected file (s) `<selected-scope>..working tree`
- **Show Diff in a New Tab**: The same diff, opened as a regular editor tab instead of the diff window
- **Show in Project**: Highlight this file in the Project tool window
- **Create Patch...**: Opens a dialog to save the selected file (s) scope diff as a `.patch` file
- **Copy as Patch to Clipboard**: Copies the selected file (s) scope diff as a unified patch directly to the clipboard
Expand Down Expand Up @@ -113,7 +130,7 @@ Git Scope is well suited for *reviewing* an entire scope — walking through eve
the same way you would review a pull request, but directly in the editor with full language support (syntax
highlighting, navigation, inspections).

To make this fast and mouse-free, the plugin adds four navigation actions plus two diff actions. They ship **without
To make this fast and mouse-free, the plugin adds four navigation actions plus a diff action. They ship **without
default shortcuts** so they never clash with your keymap — assign your own under **Settings → Keymap** (search for "Git
Scope"):

Expand Down Expand Up @@ -153,7 +170,7 @@ A typical review flow:

Adds a custom *Scope* (used to do inspections, search/replace, etc), i.e. search results are filtered by **Git Scope**.

READ: https://www.jetbrains.com/help/phpstorm/scopes.html
READ: https://www.jetbrains.com/help/idea/scopes.html

![](docs/scope.png)

Expand All @@ -168,11 +185,15 @@ widget.

The tab name is per default set to the selected scope reference. If the selected scope is a git hash, you can rename the
scope tab name by right clicking on the tab and selecting "Rename Tab". Any renamed tab will show the original Git Scope
reference as a tooltip. You can rest the tab name to the original Git Scope scope reference by right clicking on the tab
and selecting "Reset Tab Name".
reference as a tooltip. You can reset the tab name to the original Git Scope reference by right clicking on the tab and
selecting "Reset Tab Name".

![](docs/rename.png)

Scope tabs can be reordered either by dragging a tab to its new position, or with "Move Tab Left" / "Move Tab Right"
from the same context menu. Over Remote Development only the context menu actions are available — the IntelliJ Platform
does not support drag-and-drop tab reordering in remote mode.

![](docs/icon.svg) **Use Commit as Git Scope**

In the Git panel, you can right-click on any commit and select "Use Commit as Git Scope" to automatically add the commit
Expand All @@ -195,8 +216,8 @@ In.

![](docs/selectin.png)

The Git Scope window itself also has the "Select Opened File" action button, so you can highlight any file directly in
the Git Scope tool window (if the file is part of the current selected scope):
The Git Scope window itself also has the "Select Opened File" action button, so you can highlight the currently opened
editor file directly in the Git Scope tool window (if the file is part of the current selected scope):

![](docs/select_opened.png)

Expand All @@ -210,8 +231,7 @@ Plugin settings are available under **Settings → Tools → Git Scope**:
|-------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Separate Git Scope and IDE gutter rendering** | When enabled, Git Scope gutter markers are rendered in a dedicated column to the left of the line numbers, separate from the IDE's native markers. When disabled (default), both sets of markers share the same gutter column. |
| **Color files based on Git Scope** | When enabled (default), file colors in the project tree and editor tabs reflect the active Git Scope status. Disable to use the IDE's default HEAD-based file coloring. |
| **Show untracked files** | When enabled, untracked (unversioned) files appear in the Git Scope view. Disabled by default. |
| **Show deleted files** | When enabled, locally deleted files appear in the Git Scope view. Disabled by default. |
| **Show untracked files** / **Show deleted files** *(Working Tree)* | Initial state of the matching toggle button in the Git Scope window toolbar, applied the first time a project is opened. Already-open projects keep their own toggle state. Off by default. |

## Shortcuts (Added by this Plugin)

Expand All @@ -220,8 +240,8 @@ Plugin settings are available under **Settings → Tools → Git Scope**:
| Alt+H | Toggle between HEAD and last Git Scope selection |

The following review-navigation actions are also added, but ship **without** default shortcuts — assign your own under
**Settings → Keymap** (search for "Git Scope"). See
[Reviewing a Scope](#) above for the recommended workflow:
**Settings → Keymap** (search for "Git Scope"). See **Reviewing a Scope (Keyboard Navigation)** above for the
recommended workflow:

| Action | Description |
|----------------------------------|--------------------------------------------------------------------|
Expand Down
Loading
Loading