Commit Graph
1124 Commits
Author SHA1 Message Date
梁胜峰andVeng0923 9921ff759b feat(vcs): complete the push target branch from the remote's branches (#1680)
The Push dialog's target branch field was free text only. It now completes
from the branches the chosen remote already has (typing, Up/Down, click; a
typed origin/ prefix is accepted). Prefix matches come first, then other
contiguous matches, then looser ones. Enter only takes a row once one was
chosen, free text still creates a new branch, and the "New" hint shows only
for a name the remote doesn't have. The list widens to the longest name up
to 640px, with the full name as a tooltip beyond that.

Co-authored-by: Veng0923 <+Veng0923@users.noreply.github.com>
2026-11-11 07:07:40 +08:00
Andrea Basileandandreabasile 18744b530d feat(remote): forward ports of Compose services from forwardPorts (#2603)
A dev container's forwardPorts may name a port of another Compose service
("selenium:4444"). Those entries were skipped; they are now forwarded like the
container's own ports: the relay in the container connects to the service by
name, forwards are keyed by (host, port), and the Ports window shows them as
selenium:4444 -> localhost:4444. Service ports aren't saved with the ports added
by hand, since forwardPorts forwards them on every connection.

Refs #1083

Co-authored-by: andreabasile <7715018+andreabasile@users.noreply.github.com>
2026-11-11 06:59:53 +08:00
l0ng-ai f7eeaa4459 test(i18n): JUnit stays JUnit in every locale (#2601)
The JUnit run configuration type is called JUnit in every locale, a product
name like Docker; the catalog check that Chinese and Korean texts differ from
English now allows it.
2026-11-11 06:53:41 +08:00
l0ng-ai b5c92181a5 feat(agents): roll back an agent task's changes (#2599)
The task's Changes pane gets Rollback: the selected files, or all of them, go
back to how they were when the task started, after a confirmation. Files the
user had already changed in the project's checkout when the task started are
copied aside then, so rolling back restores the user's own edits instead of
the last commit; files the agent created are removed. The copies stay with the
task (forks share them) and are removed with it. Rollback is refused while the
agent is working.

Refs #1777
2026-11-11 06:50:11 +08:00
l0ng-ai 3863d4dc75 feat(run): JUnit run configurations (#2597)
Run/Debug Configurations gets a JUnit type: a module and its tests (all, a
package, a class, a method or class-name patterns) with VM options. It runs
through the module's detected Maven or Gradle test configuration with the same
arguments as the gutter's Run on a test, so results show in the test runner
and Debug and Rerun Failed Tests work as for those runs. VM options go to
Surefire as -DargLine, and to Gradle's test JVMs through the init script.

Closes #2515
2026-11-11 05:57:11 +08:00
l0ng-ai b1bee808dd feat(dependencies): complete npm package versions in package.json (#2596)
Completion inside a version string under dependencies, devDependencies,
peerDependencies or optionalDependencies lists the package's versions from the
npm registry (abbreviated metadata, shared version cache), newest first,
without deprecated versions and without pre-releases when the package has
releases. Aliases, paths, URLs and workspace protocols are left alone; the
scanner tolerates a document being edited.

Closes #2558
2026-11-11 05:50:22 +08:00
l0ng-ai a8be534043 feat(vcs): move a worktree to another folder (#2595)
Move Worktree… in the Worktrees dialog and the Git tool window's Worktrees
tab moves the selected worktree's folder into the chosen folder, or to it when
it already has the worktree's folder name. An empty folder at the target is
replaced (Git would move the worktree inside it) and any other existing target
is refused. The main worktree and the one holding the open project can't be
moved.

Closes #1238
2026-11-11 05:41:42 +08:00
Deng Liuanddengliu 4b0067993b feat(agents): configure MCP servers for coding agents (#789)
MCP servers for coding agents are kept in OpenIDEA's own settings: User
(settings.toml) and Workspace (.openidea/settings.toml), where a workspace
server replaces a user server of the same name. Enabled servers that match the
session's agent and the transports it negotiated (stdio, http, sse) are passed
in session/new, session/load and session/fork alongside the IDE's own server.
Settings > Agents > Model Context Protocol (MCP) lists, adds, edits, enables
and removes them; Import copies .mcp.json and .vscode/mcp.json entries into the
workspace settings once without changing those files.

Co-authored-by: dengliu <5108773+dengliu@users.noreply.github.com>
2026-11-11 05:18:01 +08:00
l0ng-ai d2b0bd6e75 feat(http): convert requests to and from cURL, add environment files (#2592)
Convert to cURL and Copy copies the request at the caret as a cURL command with
the selected environment applied; pasting a `curl ...` command into a .http file
inserts the request it sends (headers, data variants, --json, -F multipart, -u,
-b, -A, -e, -G, POSIX and Windows line continuations). Add Environment to
Public / Private File opens the env file that applies to the request file,
creating it next to it when missing. The conversion lives in ide-http and
shares request preparation with running.

Refs #2435
2026-11-11 04:59:34 +08:00
l0ng-ai 3b7d72bd03 fix(navigation): show usages on a declaration a plugin adds targets to (#2591)
Go to Declaration on a declaration shows its usages only when the answer was the
declaration alone; a plugin definition merged into it (the MyBatis XML statement of a
mapper method) turned it into a chooser and the callers became unreachable. An answer
containing the declaration at the caret now shows usages too.

Fixes #1745
2026-11-11 04:50:57 +08:00
l0ng-aianddraylegend 3d6e983523 fix(agents): read a restored session's conversation after connecting (#2589)
A session tab restored with the project read its conversation while the agents
connection was still being set up; connecting then cleared the entry cache and
the tab kept spinning. The session now loads its conversation, subagent views and
changes once the connection is ready.

Fixes #2414

Co-authored-by: draylegend <16114644+draylegend@users.noreply.github.com>
2026-11-11 04:38:12 +08:00
l0ng-ai 6d82b94b69 fix(boot): name an outdated system web engine on the startup failure page (#2587)
On macOS 11 with the original Safari 14 the system web engine cannot parse the
Safari 16 bundle, and startup failed with only "Could not load startup script".
When the engine lacks Safari 16 features, the failure page now says the system
Safari (or WebKitGTK) is too old and how to update it.

Refs #2008
2026-11-11 04:30:57 +08:00
Sergei Melnikov 8ef5132b5e fix(vcs): update and push only the repository whose branch menu was used (#2584)
In a project with several Git repositories, Update and Push… on one repository's
current branch (Branches popup, Git Log branch menu, Git Log Update Selected) acted
on every repository because vcs.update / vcs.push were called without naming it.
They now pass the repository: only it is pulled, and only it is checked in the
multi-repository Push dialog. When the upstream branch was deleted on the remote,
the Push dialog lists the commits no remote branch contains instead of the last 50.

Co-authored-by: pdasilem <74730932+pdasilem@users.noreply.github.com>
2026-11-11 03:46:12 +08:00
l0ng-ai a82e0e2ec5 feat(vim): af / if function text objects (#2586)
af selects the function, method, constructor or lambda around the cursor and
if its body, from the syntax tree; whole-line functions are taken linewise, and
a repeat in Visual mode or a count takes the enclosing function. Mapped only in
Operator-pending and Visual mode, and restored after an rc reload.

Closes #2365
2026-11-11 03:44:31 +08:00
l0ng-ai 377a24375d feat(maven): generate sources and update folders (#2585)
jdtls adds a generated source folder only when it exists at import, so code from a
later generate-sources stayed unresolved. The Maven tool window gets Generate Sources
and Update Folders For All Projects (toolbar, Find Action) and a per-project variant in
the context menu: it runs generate-sources and, once a run succeeds, reloads the Maven
projects. run.runConfig accepts an onExit callback so a feature can wait for the run.

Fixes #2508
2026-11-11 03:37:35 +08:00
Arnaud Ritti 55fc760abb fix(editor): group plugin gutter links by line and icon (#2574)
Plugin line markers on the same line with the same resolved icon now render as one
gutter button; duplicate destinations from several providers are dropped and every
distinct target goes to the existing target chooser. Run markers and different icons
stay separate. The default `navigate` icon gets its own navigation glyph instead of
reusing the implementing-method one, as the WIT documents them as distinct icons.

Closes #2573

Co-authored-by: arnaud-ritti <77437157+arnaud-ritti@users.noreply.github.com>
2026-11-11 03:27:21 +08:00
l0ng-ai afb7c8ea63 fix(refactor): make the preview and pull/push members dialogs resizable (#2583) (#2583)
Make the refactoring preview dialog (Rename, Safe Delete, Pull Up / Push Down) and the
Pull Members Up / Push Members Down dialog resizable. The preview had a fixed width and
a 320px list cap; the list now fills the dialog, the size is remembered and full paths
show as tooltips. The member table in the pull/push dialog takes the extra space.

Closes #2570
2026-11-11 03:20:20 +08:00
l0ng-ai f7aa81305a feat(project-view): option to hide the path beside project roots (#2579)
Project View › Options › Appearance gains Show Root Paths (on by default). Off, workspace roots and a single project's root show only their name; the path stays in the tooltip. Workspace roots now abbreviate the home folder as ~.

Fixes #2557
2026-11-11 02:18:14 +08:00
l0ng-ai 1a6fc7fd21 fix(debugger): show the output of Maven, Gradle and script debugging in the Debug console (#2578)
Debugging a configuration the Run feature starts with a JDWP agent (Maven, Gradle, Spring Boot, Tomcat, scripts set to the Java debugger) attaches the debugger to that process, and its output stayed in the Run tab while the Debug console was empty. The run feature now provides its sessions' output by process (`RunOutputService`), and a debug session attached to one follows it in its Console until the session is closed.

Fixes #2494
2026-11-11 02:14:27 +08:00
ntbang0901 835a9c883c feat(plugins): let plugins depend on each other and declare extension points (API 1.5) (#2383)
Plugins could not rely on each other: nothing said "this plugin needs that one", and a plugin had no way to let others extend it. Plugin API 1.5 adds both.

- `[[depends]]` in `plugin.toml` (version range, `optional`). A plugin whose required dependency is missing, disabled, the wrong version, cyclic or unable to run is shown as Blocked with the reason and starts once the dependency can run again. Plugins start in dependency order; disabling a plugin others need asks first. Granting or revoking a dependency's permissions also settles its dependents.
- `[[extension-points]]` declares points with typed fields. Dependents contribute to them from `plugin.toml` (checked at install time); the owner reads them through the read-only `extensions` interface (`host::extension_contributions`) and hears changes through the `extensions-changed` event.

The plugin details page shows what a plugin requires, who requires it, and its extension points with their contributors. Covered by the `ext-owner` fixture and `plugin_dependencies.rs`.

Co-authored-by: ntbang0901 <121003585+ntbang0901@users.noreply.github.com>
2026-11-11 02:05:41 +08:00
Vadim LazukandInf1mum d62e9855b1 feat(plugins): read a project file's bytes (API 1.5) (#2524)
`read-file` returns UTF-8 text only, so a plugin could not read a PDF, image, archive or font inside the open project, and `fs.read-bytes` needs a per-path grant. `workspace.project` gains `read-bytes(path)` with `read-file`'s rules (`project.read`, `resolve_in_root` confinement, `not-found` for missing paths, 16 MiB cap; always the file on disk). The Rust SDK exposes `Project::read_bytes` and the mock host `add_file_bytes`. Web custom editors get `document.bytes()` (at most 64 MiB, read-only).

Fixes #2347

Co-authored-by: Inf1mum <8135225+Inf1mum@users.noreply.github.com>
2026-11-11 01:50:10 +08:00
l0ng-ai 9660a47958 fix(i18n): say 依赖于 for project dependencies in Chinese (#2577)
The Project Structure dependency labels translated "depends on" as 取决于 ("is determined by"); they now read 依赖于.
2026-11-11 01:44:31 +08:00
l0ng-ai 2d404a8664 fix(i18n): restore the missing commas in the en and zh text catalogs (#2576)
Two merged changes (#2568, #2572) each appended entries next to "Recent color", and the textual merge dropped the comma between them, so en.json and zh.json no longer parsed.
2026-11-11 01:43:13 +08:00
aconeshanaandaconeshana 83cbc8ff5c fix(vcs): open the source file on double-click in the modal Local Changes (#2500)
In the modal Local Changes view (Git tool window), double-click and Enter always opened the diff. `openNode` in `CommitView.tsx` ignored the commit interface. The modal view now opens the source file and the non-modal Commit tool window keeps the diff. A new `vcs.commit.doubleClickOpensDiff` setting (unset = follow the interface) is exposed as Show on Double-Click → Source / Diff / Follow the Interface.

Co-authored-by: aconeshana <52204454+aconeshana@users.noreply.github.com>
2026-11-11 01:42:25 +08:00
Muuandmuutot eab165b4e0 fix(project-structure): list only configured projects as dependency candidates (#2572)
The Dependencies checklist offered every recently opened project as a candidate, which made the list long and noisy. A standalone project now lists only its configured dependency projects; in a workspace the other roots attached to the window stay candidates, and Add Project… picks a new one (the empty-state note says so).

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:41:48 +08:00
Muuandmuutot 5bdf4835b0 feat(editor): lean location chooser rows with the container column (#2482)
The location choosers (Choose Declaration / Implementation and the gutter marker targets) showed the name, a source-line preview, the file name and often a full absolute path on every row. Rows now have one layout: icon + name, the declaring container, and `path:line` right-aligned.

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:41:27 +08:00
Muuandmuutot 1acc007e47 feat(editor): fall back to type-hierarchy subtypes for gutter markers (#2434)
Servers that answer implementation requests with nothing (Pyrefly) still know the subtypes in the type hierarchy. When a type's implementation batch comes back empty, the gutter asks `typeHierarchy/subtypes` and uses its answer for the ↓ marker. The ↑ marker on class declarations is dropped.

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:40:50 +08:00
Bin 727dabe579 fix(editor): anchor the colour picker and complete its controls (#2568)
Colour swatches overlapped the Git change indicators, and the native colour picker could open at the window's top-left corner. The gutter spacing is adjusted and the native picker is replaced by a picker anchored beside the swatch (react-colorful) with screen sampling, a preview, recent colours and R/G/B/A%/HEX input. Markup files use the syntax tree, so colour-like template or HTML text no longer gets a swatch while embedded and inline styles still do.

Co-authored-by: ffgenius <106022674+ffgenius@users.noreply.github.com>
2026-11-11 01:40:07 +08:00
Muuandmuutot c70203b640 feat(ui): numeric mnemonics in the Select In popup (#2567)
The Select In popup (Alt+F1) labels its first nine selectable rows 1–9, and pressing the digit activates the row. `MenuList`/`Menu` gained an optional `numbers` flag and `showContextMenu` an options argument; only Select In opts in, and submenus never inherit the numbering.

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:39:21 +08:00
Muuandmuutot c088fa8b26 fix(editor): collapse empty icon gutters (#2566)
The run, npm-script, HTTP-endpoint and bookmark gutters reserved a column even when a file had none of their icons, pushing the code right by an empty strip. Each now emits a zero-width, non-interactive spacer marker when it has nothing to show, so the column collapses; files with icons are unchanged. A shared `gutterSpacer` factory keeps the spacer from reacting to clicks.

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:39:06 +08:00
l0ng-ai 481cf172b5 feat(java): offer every Java language level, 5 through 25 (#2575)
The Java language level settings offered only the LTS releases, and only those reached jdtls. Every level from 5 to 25 is now listed, and each maps to JDT's compliance value (1.5 to 1.8, then 9 to 25), so projects on 6 or 7 can be set up with a jdtls that still compiles them.

Fixes #2465
2026-11-11 01:29:26 +08:00
Shohruh Ismoilovandshohruh-genius 025e3e9255 fix(project): detect project types and honor workspace type sorting (#2522)
Workspace roots always sorted by name and only Maven/Gradle roots had a type icon. Project types are now detected from root build/SDK file names (no file contents or tools are read, up to four concurrent listings) through one registry (projectType.ts) that supplies names, icons, markers and refresh handling; roots show the type's icon, and Sort by Type groups roots by type with natural name order inside each type. Flutter and Vite logos come from Simple Icons (CC0, recorded in THIRD_PARTY_LICENSES.md).

Co-authored-by: shohruh-genius <7658451+shohruh-genius@users.noreply.github.com>
2026-11-11 01:07:40 +08:00
Deng Liuanddengliu d78a73452b feat(docker): Compose schema association and internal reference completion/navigation (#2455)
Docker Compose files get Compose Specification completion, hover and validation from yaml-language-server: languages/yaml.toml maps the pinned compose-spec schema to the standard Compose filename globs, and ide-sdk / ide-lsp feed content-detected Compose files and user overrides (Kept / Excluded as !path negations) into yaml.schemas, reconfiguring only when that set changes. The Compose editor completes and navigates (⌘-click / ⌘B) references to declared services, networks, volumes, configs and secrets in depends_on, links, volumes_from, extends.service, networks, volumes, configs and secrets.

Co-authored-by: dengliu <5108773+dengliu@users.noreply.github.com>
2026-11-11 01:06:56 +08:00
黄贵波 eed2de8d66 fix(window): zoom to the work area in step with the webview frames (#1450)
Double-clicking the title bar ran NSWindow zoom:, and WebKit doesn't lay the page out during an animated resize, so the window grew empty and the content appeared only at the end. The backend now steps the frame itself over 350 ms (smoothstep), waiting for each webview presentation (_doAfterNextPresentationUpdate:, checked with respondsToSelector: and falling back to a fixed 16 ms step), so the page grows with the window. A window restored maximized by the window-state plugin goes back through AppKit's unmaximize; the frame to restore to is kept in window-zoom.json so a window left zoomed at quit can still restore. Marker lanes recompute at most every 120 ms during resize bursts.

Closes #1448

Co-authored-by: IsGuibo <40512175+IsGuibo@users.noreply.github.com>
2026-11-11 01:05:17 +08:00
Muuandmuutot e3808fc7c2 feat(project): resolve navigation into attached dependency projects (#2448)
Settings › Project Structure › Dependencies lists other projects this one depends on (and, in a workspace, the roots each member depends on). Dependency projects join the content roots, so the index, Project view and run see them, and navigation resolves across them: nav_resolve_module maps an import path to a file in the file's navigation roots, and nav_index_definitions answers bare-name lookups filtered to those roots inside the index (so own-root matches can't evict dependency matches). navigation_roots is memoized for 1 s, and hand-written member_dependencies keys with the other path separator match on Windows.

Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
2026-11-11 01:01:09 +08:00
Budi Santosoandboenkkk 33786c14ba feat(db): Oracle thin driver and package nodes (#2129)
Oracle data sources now connect through the pure-Rust oracledb thin driver (pinned to 26.0.0-beta.5) instead of ODPI-C, so no Oracle Instant Client, ORACLE_HOME or Instant Client setting is needed; TNS descriptors and tnsnames.ora aliases still work in the Database field. The database tree gains a packages folder for Oracle schemas, and a package's DDL opens as its specification and body. The database guide's Oracle section is rewritten for the thin driver.

Co-authored-by: boenkkk <17746937+boenkkk@users.noreply.github.com>
2026-11-11 00:31:43 +08:00
ntbang0901 51ffd093b7 feat(keymap): import an IntelliJ IDEA keymap XML (#716)
Settings › Keymap › gear menu › Import IntelliJ IDEA Keymap… reads a keymap XML exported from IntelliJ IDEA (or one from its keymaps folder): the parent attribute picks the matching preset, IDEA action ids map through the table IdeaVim's :action uses (moved to src/platform/ideaActions.ts), Swing keystrokes, two-stroke chords and mouse shortcuts are converted, and the result is saved as a new custom keymap with a summary of actions that have no counterpart and skipped shortcuts.

Co-authored-by: ntbang0901 <121003585+ntbang0901@users.noreply.github.com>
2026-11-11 00:25:31 +08:00
Mansur Akhmadiandmansur-akhmadi 379709f13f feat(editor): rainbow indent guides (#1751)
Settings › Editor › General › Appearance › Rainbow indent guides (off by default, under Show indent guides): guide N is drawn in --syn-rainbow-((N-1) mod 5 + 1), so each level of a deep block has its own colour. With the per-guide strips this only swaps the image each guide uses (--openidea-guide-1…5 from theme.ts), so theme and scheme switches recolour open editors through CSS; code lens rows follow the setting.

Closes #1560

Co-authored-by: mansur-akhmadi <10739460+mansur-akhmadi@users.noreply.github.com>
2026-11-11 00:23:10 +08:00
SunZhiQiang 0311bd3bf8 feat(markdown): add full-screen preview and PNG export to Mermaid diagrams (#2460)
Drawn Mermaid diagrams in the Markdown preview and agent replies get Full screen and Download image buttons. Full screen fits and centres the drawing, pans on drag and zooms with Ctrl/Cmd+wheel; Esc closes it. Download saves a 2x PNG on the editor background through the native save dialog. reid() moved to svgIds.ts so the full-screen copy reuses it.

Co-authored-by: panda-student <71381346+panda-student@users.noreply.github.com>
2026-11-11 00:17:20 +08:00
Deng Liuanddengliu df87c3ba1f feat(vcs): add git blame commit popup and per-commit gutter colors (#2484)
Annotate gutter lines get a background tint per commit, ordered from older (cool) to newer (warm) using the project colour tokens, and hovering highlights every line of that commit. Hovering a line opens a non-modal commit popup with the full hash (opens the commit in Git Log), author, date and the full message with issue and commit-hash links; commit metadata comes from the single-commit log fast path and is cached.

Co-authored-by: dengliu <5108773+dengliu@users.noreply.github.com>
2026-11-11 00:15:29 +08:00
SunZhiQiang e8ef07f918 feat(vcs): drag unversioned files onto a changelist to add them (#2531)
The changes tree registered drag sources only for rows that already belonged to a changelist, so files under Unversioned Files could not be dragged. Drag sources and drop targets are now separate: every file or folder row drags, and dropping unversioned paths on a changelist runs Add to VCS (git add) before moving them into that list.

Co-authored-by: panda-student <71381346+panda-student@users.noreply.github.com>
2026-11-11 00:12:24 +08:00
KangHyunTaeandrkdgusxo66 6a612a832c fix(vim): run a key typed right after a Normal-mode IME composition as a Vim command (#2564)
On WebKit, CodeMirror drops the first keydown within 100 ms of compositionend (meant for the IME's own Enter). In Normal mode that key never reached Vim, and a printable key was written into the document — e.g. Korean ㄱ, switch to English, quick j. A single ASCII character that arrives as text input in that window now runs as a Vim key through vimKeyFromEvent (so <Space>, <CR> and langmap apply); a keydown that does reach the editor clears the window, and keys that type no text are still dropped.

Fixes #2562

Co-authored-by: rkdgusxo66 <26762981+rkdgusxo66@users.noreply.github.com>
2026-11-11 00:07:33 +08:00
DrPepperandmakise2060 e09cb2353f fix(workbench): keep the resize cursor while dragging a splitter (#2560)
A resize drag set document.body.style.cursor, so as soon as the pointer left the 1px handle the element under it (tree, editor, button) showed its own cursor mid-drag. The drag now holds the cursor on <html> with a data-drag-cursor rule that overrides descendant cursors, released on pointerup/pointercancel/window blur, with nested locks restoring the outer cursor. Tool-window gaps, split and stripe handles, the dialog resize grip and database / Git Log column resizing share it, and the handles use ew-resize / ns-resize throughout.

Co-authored-by: makise2060 <263516586+makise2060@users.noreply.github.com>
2026-11-11 00:06:59 +08:00
ppxbandppxb 5593260635 fix(maven): run generated build-tool goals with the configured JDK (#2440)
A Maven goal or Gradle task run from the build tool window carried the JAVA_HOME the build model had when the tree was built, and that value was frozen into the (persisted) temporary configuration, so correcting the JDK in Settings only took effect after a restart, or not at all. For IDE-generated build-tool configurations JAVA_HOME is now derived: Settings (the Maven runner JRE, the Gradle JVM) decide at each launch, a saved configuration drops the derived value, and a dead path no longer outlives its setting. Configurations of the user's own, and Tomcat's JDK field, keep their JAVA_HOME.

Fixes #2433

Co-authored-by: ppxb <17081240+ppxb@users.noreply.github.com>
2026-11-10 23:44:09 +08:00
l0ng-ai f4f648567f fix(agents): preserve upward scrolling during streaming replies (#2502)
Small upward scrolls while a reply streamed were still treated as being at the end, so each update pulled the view back down. Following pauses on upward wheel, touch or keyboard input before the browser scrolls, and queued updates can't resume it until the user scrolls down or jumps to the latest reply; streaming, resize and late diagram updates leave the viewport alone meanwhile.
2026-11-10 23:41:44 +08:00
l0ng-ai 7e365a3e0f fix(search): resizable preview split in Search Everywhere (#2496)
Search Everywhere had a fixed 220px preview and a separate results height cap. It now has a remembered vertical split (initially one third results, two thirds preview); the query keeps focus while resizing and the active result stays visible when the list shrinks. Action names line up with file names, shortcuts stay readable, and scope controls move to a second row in narrow popups.
2026-11-10 23:41:36 +08:00
l0ng-ai 7594a98e8c fix(search): use 16px file icons and spinners in Find and Usages (#2493)
Find results and Show Usages use the native 16px file/folder icons, and the four search indicators share the 16px eight-spoke animation, replacing 12/14px overrides; the preview and rerun controls get their proper icons.
2026-11-10 23:41:29 +08:00
l0ng-ai 839123caf2 fix(run): use 16px test status icons and the shared running indicator (#2487)
Run and Services test trees now use 16px status and filter icons and the shared eight-spoke running indicator. The fixed 11/13px glyphs made columns uneven, and a status change shifted the name; the running indicator now follows the tree's icon size.
2026-11-10 23:41:22 +08:00
l0ng-ai 9153c66849 fix(run): keep Run/Debug Configurations usable in narrow windows (#2485)
The Name field was squeezed and the dialog overflowed in narrow or zoomed windows because the sidebar, label column and header controls had fixed widths. Add a remembered sidebar splitter, shared label columns, and wrapping Name/storage and footer groups; Before launch actions stay together and both panes keep scrolling independently when the dialog is resized.
2026-11-10 23:41:15 +08:00
l0ng-ai 27ee6fde61 fix(vcs): show feedback for explicit Git commands (#2444)
Update could fail when incoming files collided with local untracked files and show nothing, because VCS popups were disabled. The shared Git command runners now mark progress and results as responses to a user command, so Update, Pull, Fetch, Push and local Git operations stay visible; background notifications and explicitly handled or cancelled failures stay quiet.
2026-11-10 23:41:06 +08:00