Skip to content

2026.2.2 - #112

Merged
hoxi merged 15 commits into
masterfrom
2026_2_2
Sep 20, 2026
Merged

hoxi merged 15 commits into
masterfrom
2026_2_2

Conversation

@hoxi

@hoxi hoxi commented Sep 20, 2026

Copy link
Copy Markdown
Collaborator

Commits for 2026.2.2 release

hoxi added 15 commits September 20, 2026 17:31
Scroll-event history (ScrollEvent, CurrentEventTracker, and two
per-listener counters) fed no behavior but accounted for 94% of
debug-level log output in a 20-minute session, burying the
change-collection and gutter traces the log exists for. Removed;
only state changes and problems are logged now.
The rescan meant to discard stale changelist entries never ran: it
fired from directoryMappingChanged(), before
VcsDirtyScopeManagerImpl finished its own startup, so
markEverythingDirty() silently did nothing. Queue it through
ProjectLevelVcsManager.runAfterInitialization instead, which runs
once the dirty scope manager and the Git executable are both ready.

Fixes #78
Adds the CHANGELOG.md entry for the release; only the changelist
rescan fix is listed, since the logging cleanup is internal.
Double-clicking a file type with no FileEditorProvider (PDF, DOCX,
etc.) did nothing, since openFile() returned an empty composite.
The backend now detects these and routes them to the frontend via
a new UtilCommand, since launching an external application must
happen on the client machine, not the backend host, under Remote
Development.

Also registers the missing "Git Scope" notification group in the
shared module so notifications work in every product mode.

Fixes #106
Applies the /** */ (declarations), /* */ (statements), and //
(asides) convention across the codebase, and documents it in
AGENTS.md.
FileEditorManagerListener is frontend-owned state under Remote
Development, so the backend-registered listener never fired in a
real split deployment.
Adopts withContext(Dispatchers.EDT)/blockingContextScope over
invokeLater in suspend contexts, switches raw-HTML tooltips to
HelpTooltipKt/HtmlChunk so tags render correctly, and renames the
two/three-dots checkbox state to match its actual meaning.

Also fixes ViewService.save() persisting a tab index that could
point past the restored collection when a New* tab was active,
which showed a blank tab on next launch. Cleans up dead null
checks, duplicated code, and a few Math.clamp/getFirst()
simplifications flagged by inspections.
Commit summary/body lines should stay within 72 characters, and a
commit that fully resolves a GitHub issue should close it with
`Fixes owner/repo#NNN` (matching the upstream remote) rather than
just mentioning the number in prose.
Target branches were keyed by GitRepository.toString() (an absolute
path), so moving a repo on disk -- or any collaborator checking it
out somewhere else, since GitScopePro.xml wasn't workspace-scoped --
silently fell back to comparing against HEAD, with no error shown.

Key by the repo's path relative to the project base instead, which
survives moving the whole project. Reads fall back to the old
absolute-path key for existing configs, and self-heal a single-repo
project whose repo moved outside the relative layout entirely.

Also moves the plugin's persisted state to workspace.xml (kept
backward compatible via a deprecated GitScopePro.xml storage), since
this data is inherently per-checkout and was never meant to be
shared.

Fixes #110
Show Untracked Files and Show Deleted Files were global settings
shared by every project. Make them per-project, controlled by
right-aligned toggle buttons in the Git Scope window toolbar next
to Group By, matching Select Opened File's existing spot.

The Settings page checkboxes now only seed a project's initial
value the first time it's opened (including on upgrade, since the
new State fields default to null until seeded); after that each
project's own stored value is authoritative and Settings no longer
pushes live changes into open projects.

Fixes #111
IntelliJ Platform Gradle Plugin 2.18.1 -> 2.19.0, Gradle 9.6.1 ->
9.7.1, actions/checkout v6 -> v7, and CI's JBR 25.0.3-b508.16 ->
25.0.4.1-b610.67. Kotlin/serialization/rpc stay on 2.3.20 -- no
stable rpc compiler-plugin build exists past that version yet.

Also fills in the rest of the 2026.2.2 CHANGELOG entry and
shortens the two existing ones.
Fixes #108

Updates the README text and screenshots to match the current UI:
documents the toolbar's left/right icon convention and the per-project
untracked/deleted-file toggles from #111, adds a screenshot of the
opened Git Scope window, fixes two dead anchor links, and retakes
every screenshot that showed a pre-redesign toolbar. Also drops four
screenshots left over from an older README revision that nothing
referenced anymore.
dispose() set the disposed flag and then deferred clear() to the next
EDT tick, where clear()'s own "if (disposed) return" guard always
skipped the removal. The highlighter stayed in the document markup
model painting through the dead instance's providers, so a marker
hovered at dispose time kept its hover expansion with the listeners
that would clear it already removed -- most visible over Remote
Development, where reconnects dispose renderers far more often.
Hover was only re-evaluated from mouse events, so scrolling with the
cursor resting on a marker fired nothing and left the expansion
painted on a range the cursor had since moved off. Re-check against
the current pointer position when the visible area scrolls.
Nothing outside the renderer called clear(), and its disposed guard
only ever made the dispose path skip the removal. One unguarded
private method now serves the single remaining caller.
@hoxi hoxi added this to the 2026.2.2 milestone Sep 20, 2026
@hoxi hoxi self-assigned this Sep 20, 2026
@hoxi
hoxi merged commit 9d8cca0 into master Sep 20, 2026
1 check passed
@hoxi
hoxi deleted the 2026_2_2 branch September 20, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant