What's New in 0.18.x

Everything shipped in the 0.18.x release series, straight from the changelog. For curated announcements and deep-dives, see News.

[0.18.6] - 2026-09-28

  • Fixed Git output colors being overridden by the active editor theme; diffstat additions and deletions now render in green and red while file links retain their accent color.

  • Git output now colors diffstat additions and deletions separately, emphasizes file and change totals, and highlights create/delete modes and remote update markers while keeping file paths clickable.

  • Running a standalone compact source with an unreadable Java launcher now has its own status message, leaving the project main-class setup hint intact. Message-catalog tests reject duplicate keys.

  • Local File History now queues blob cleanup before acknowledging a durable index write, so a later pre-delete snapshot cannot lose its recovery body to an older cleanup pass.

  • Markdown preview tables now account for cell padding when sizing columns, so compact values stay readable instead of wrapping or collapsing.

  • Anchored popups, including the Welcome screen’s Git menu, now stay within the window bounds.

  • Tagged releases now attempt experimental Linux x64, macOS x64/arm64, and Windows x64 GraalVM Native Image archives alongside the usual JVM packages. Each extracted archive must pass a GUI workflow smoke test before upload; an experimental build failure does not block the ordinary release. The archives use separate settings and remain subject to the measured performance and plugin limitations.

  • Added an isolated experimental StaticFX/GraalVM native build profile, a real EditorBuffer correctness/stress probe, and JVM/AOT/native measurement tooling. This does not replace the JVM distribution; limitations and measured acceptance status are in docs/native-image-staticfx.md.

  • Extensionless Java --source 25+ shebang files can now be debugged with breakpoints, stepping, and local variables. Debug compiles a line-preserving temporary .java copy, maps breakpoints and stack frames back to the original file, and removes the temporary source and compiled classes after the session.

  • Added an opt-in live compact-source Debug probe that checks a breakpoint, source location, local-variable values, stepping, and the window’s Debug command through the installed JDT LS and Java debug adapter. Pull-request CI runs it alongside the live JDT LS compact-source probe.

  • Debugging a compact .java file now compiles its implicit class with the selected JDK’s javac, launches it with the matching java, and passes the selected JDK environment to the debuggee. A helper type in the file no longer causes Debug to choose the wrong main class, and sibling source files resolve from the file’s directory.

  • The Default JDK choice now also runs and debugs standalone Java source files. Run probes that selected executable, so an older Java on PATH cannot reject a file launched with JDK 25; Doctor reports the same choice. Run reports when the selected Java launcher cannot be probed, and extensionless Java shebangs reject source releases below 25 or newer than the selected JDK. Compact-source diagnostics are no longer hidden by message text. Live checks against the bundled JDT LS cover Maven and loose files, implicit imports, completion, and genuine compiler errors.

  • Compact Java and Python files can now be run with language services disabled. Interactive Run prompts appear before the program receives input, and compact Java gutter markers select a launchable main(String[]) ahead of main() while ignoring private or unsupported signatures.

  • Added a dedicated LM Studio / Bionic provider for AI actions and an AI Agent preset using OpenCode over ACP. The preset shares the local endpoint, model and optional token without writing OpenCode config files; local settings stay separate from existing cloud settings. Model and mode selectors now also support current ACP configOptions, as used by OpenCode. Generated explanation.md buffers include the provider agent and model reported by the server; when response metadata is unavailable, they use the requested model or explicitly show Unknown.

  • AI Actions can use the Codex ACP adapter and an existing Codex login for explain, rewrite and commit-message generation. Separate text-only sessions leave the Agent chat intact; API keys and endpoints are not used by Codex. Settings now explain adapter installation and login requirements. When AI Actions is enabled and connected, the editor’s right-click menu also exposes Explain and Rewrite under an AI Actions submenu; the submenu disappears when that effective gate is off. Generated explanation.md buffers now end with the agent and actual response model.

  • Successful manual AI connection checks now restore selection and commit-action buttons after a failed startup probe. Health checks run independently of active generations.

[0.18.5] - 2026-09-19

  • Autosave now recognizes a preceding application save even when its UI acknowledgment arrives before the autosave worker checks the file, while still preserving genuine external changes.

  • Improved continuous Java editing: completion owns Enter/Tab correctly, member triggers are immediate, identifier completion starts after a short pause, complete lists filter locally, and obsolete requests are cancelled. Completion retains overloads, server filter/range/default metadata, commit characters, and selection feedback; Java calls reuse existing parentheses and request signature help. Auto-imports survive safe continued typing and preserve selected arguments. Signature/hover/diagnostic responses are guarded against newer editing state, and no-op syncs no longer advance the protocol version. Signature help now supports overload navigation across multiline calls; nested method snippets restore outer arguments, and completion with eager or safely rebased deferred imports undoes/redoes as one action while preserving later typing as separate undo steps, including split views. Incremental synchronization uses optimized newline search to reduce large-file range calculation cost. Java server launches join pending document lifecycle work before completion/resolve, fixing missing or removed imports reproduced in real Maven/Gradle module probes. Finished zero-argument Java calls and method references no longer request invocation signature help; active argument placeholders retain it.

  • Added a global Maven JDK selector and per-project run-configuration override. Run, debug, Maven classpath resolution, before-launch steps, and Maven task invocations now use the selected toolchain; installed JDK discovery includes standard platform locations plus SDKMAN, asdf, mise, Jabba, and JetBrains-managed JDKs.

  • Running a file or saved configuration now always opens and focuses the Run tool window; pressing Run while a program is already active brings its existing console back into focus and keeps it open across later UI availability refreshes.

  • Run, build, and external-tool console action buttons now retain their full labels when a long command line fills the status header instead of collapsing to ellipses.

  • Save, Save As, close, reload, and Git working-tree operations now revalidate exact document and disk preimages, protect pending writes across windows, and preserve newer edits or external changes instead of silently overwriting them.

  • LSP document renames, resource edits, saves, diagnostics, and navigation now retain URI/version/session identity through asynchronous delivery; stale or unverifiable edits are refused, and negotiated save text reflects the bytes that reached disk.

  • Diff and merge Result drafts participate in tab/window close protection. Binary or degraded comparisons stay read-only, stale local/index hunks are rejected, and manual merge edits cannot be erased by a later resolution choice.

  • Git paths are handled literally, conflicted porcelain-v2 entries remain visible, history mutations use the protected working-tree path, and stale refreshes cannot repaint a different active file.

  • Regex replacement now evaluates the actual match context and all programmatic replace/diff paths honor a buffer’s read-only state. Patch output also preserves missing-final-newline markers for both changed sides.

[0.18.4] - 2026-09-15

  • Closed a Local History garbage-collection race so a collection request arriving after an in-flight revision computed its hash cannot delete the revision body before its index entry is published.
  • Made Editora’s Java 27 compatibility a blocking CI lane while retaining Java 25 as the release baseline, upgraded JaCoCo for Java 27 class files, and isolated formatting on JDK 25 until its javac-dependent formatter supports 27.
  • Fixed streamed AI responses on Java 27 so the response timeout still bounds header and idle-read waits without imposing an absolute deadline on a healthy long-running generation.
  • Updated JSVG, Apache SSHD, SLF4J, JUnit, Spotless, and Palantir Java Format to their current compatible releases.
  • Updated the Maven build plugins and made the documented Maven 3.9 and JDK 25+ build requirements executable through Maven Enforcer.
  • Upgraded the UI runtime from JavaFX 26.0.2 to JavaFX 27. The JDK 25 baseline already satisfies JavaFX 27’s minimum, and the now-stable extended-window API no longer needs the preview flag.
  • Added editor context-menu and command-palette actions to debug the JUnit test method at the caret through Maven or Gradle, with automatic attachment to the suspended test JVM.
  • Personal Notes now render source-line references with the same compact, subdued treatment used by the Structure and Bookmarks tool windows.

[0.18.3] - 2026-09-11

  • Added Project Map session options to keep the current zoom while opening folders and focus newly created columns independently.
  • Changed the Emacs C-x 1 command so that, when the editor is already unsplit, it closes every open tool window, including floating windows.
  • Structure, Bookmark, and Personal Note navigation now keep the selected line visible below sticky-scroll headers instead of placing it underneath the overlay.

[0.18.2] - 2026-09-11

  • Added Emacs tool-window keys: C-x 0 closes the current window, C-x ^ grows the bottom window (C-u C-x ^ shrinks it), C-x > and C-x < resize side windows toward or away from the editor, and repeated C-x f toggles maximize / restore.
  • Fixed the Emacs C-x 1 command so it collapses independent editor groups as well as a second view of the active document.
  • Color Save buttons green and Discard buttons red throughout the application, while neutral actions such as Cancel retain their existing appearance.
  • Ordinary editable tab labels now pin the upright Inter UI face instead of inheriting an editor font or retaining the temporary italic read-only styling used while their contents load.

[0.18.1] - 2026-09-10

Fixed

  • Local History garbage collection now preserves blobs written by an in-flight publication until its complete index becomes durable.
  • Git file history now compares a selected revision with the editable working file on double-click or Enter, exposing the diff viewer’s line, hunk, whole-file, Result, Undo, and Save controls. Full-repository Git logs retain their parent-to-commit inspection and add Compare with Working Tree to each file’s menu.
  • Undo after distributed multi-cursor paste no longer fails when the edit batch shortens the document.
  • ACP agent writes to closed files now use staged atomic replacement, so an interrupted write preserves the prior file instead of leaving it truncated or partially replaced; agent writes also respect read-only buffers.
  • Remote SFTP saves now detect exact server-byte changes since the last open or successful save, prompt before overwriting them, use a server-side atomic rename when supported, and retain the prior remote copy when safe replacement is unavailable or interrupted.
  • Git branch switches, discard, and stash operations now invalidate overlapping pending editor saves before and after the working tree changes; mixed tracked/untracked discards finish in order before clean buffers reload, while dirty and deleted open copies remain recoverable.
  • LSP workspace resource edits now reject buffers changed, closed, or made read-only after filesystem staging, cancel older queued saves, restore earlier text edits after an FX-side failure, and retain/report recovery files instead of overwriting concurrent filesystem changes when rollback cannot complete.
  • Deleting files from the Project tree now resolves dirty-buffer Save/Discard/Cancel choices first, waits for recoverable Local History to become durable, rejects changed preimages as one batch, and prevents a pending save from recreating a deleted path.
  • Local File History restores now reject corrupted revision bodies, preserve files changed while a revision is loading, use guarded document writes, and leave editor changes untouched when an asynchronous restore becomes stale.
  • Replace in Files now preserves the disk copy when a formerly closed file opens during the operation, reports history and decoding failures accurately, and keeps each open-buffer replacement separate from the user’s preceding undo history.
  • Closing a window or using Save As no longer cancels a newer in-flight save from another window editing the same file through the same path, a normalized alias, a case alias, or a symlink.
  • Saving an existing file now fails without touching its bytes when Editora cannot create a safe staging file, instead of falling back to an in-place write that could truncate the only disk copy.
  • Opening or restoring editable files no longer flashes the yellow View Mode banner or retains a stale Read-Only status while their content loads.
  • Sticky headers for long lines (such as generated HTML) no longer expand the editor beyond its viewport and push the minimap off screen when scrolling.

[0.18.0] - 2026-09-09

  • .astro files are now recognized as Astro, use the official Astro TextMate grammar for mixed frontmatter/HTML/CSS syntax highlighting and Structure symbols, and support the configurable astro-ls language server with automatic detection and one-click npm installation.

  • Bookmarks and Personal Notes can now be attached to folders from the Project tree; folder entries carry folder icons in their tool windows, open the Project explorer tree with the owning folder selected when activated, and expose Personal Notes as folder-row tooltips.

  • Project-tree open-file, bookmark, and Personal Note indicators now appear after the file or folder name.

Added

  • Project Canvas Personal Notes badges now open independent, editable note cards for files and folders. Each card keeps a parent connector, can coexist with its code preview, and can be temporarily hidden with the default-off “Hide all open Personal Notes” filter toggle.
  • The Project Map can now filter its visible working set to bookmarked files or files with Personal Notes.
  • Floating Project Map previews now have a live connector to their source file row, including while the map is panned or zoomed and while a preview is moved or resized.

Fixed

  • The Welcome page keeps long Recent lists compact. It now shows the five newest valid files first and provides an accessible disclosure chevron to show or hide any remaining entries.
  • The Quit confirmation now presents its destructive Quit action as a red danger button while keeping Cancel neutral.
  • Save, history, bulk-replace, search, preview, process, and configuration shutdown paths now preserve acknowledged data and bounded lifecycle ownership during concurrent completion, cancellation, and exit.
  • Personal Notes hover previews in the editor and Project tree now share a soft, light-yellow paper color reminiscent of a Post-it note.
  • Editor overlays now cap their backing textures using the window’s HiDPI output scale, preventing JavaFX Metal renderer crashes when an unwrapped long line makes an overlay wider than the GPU limit.
  • Astro language-server startup now discovers and supplies its required TypeScript SDK, including a workspace-hoisted or Editora-installed SDK, instead of entering the crash-restart guard at initialization.
  • The HTML Open in Browser control now stays inside the code editor when the minimap is shown instead of floating over the minimap.