Skip to content

Releases: SpartanJ/ecode

ecode 0.7.4

11 Jan 22:05

Choose a tag to compare

Changelog

Added

  • Added text shaping and text segmentation support.
  • Added duplicate-line-or-selection text document command.
  • Added an option to reuse the previously launched terminal (#710).
  • Added the option to link files in AI Assistant chat (instead of attaching directly).
  • Added terminal cursor styles selection at Settings -> Terminal -> Cursor Styles.
  • Added scrollbar type and mode options for the terminal.
  • Added an option to configure the Settings -> Window -> "Use editor font in input fields" (this is enabled by default but not always convenient).
  • Added an option to "Use status bar terminal" in the Run configuration.
  • Light/dark theme now follows the system default configuration (#754).
  • Terminal status bar now is a tab widget and can create any number of terminals.
  • Added an option to configure to open new terminals in status bar panel (Settings -> Terminal -> New Terminal Behavior.
  • Added option to force opening documents in main split (Settings -> Window -> Open Documents in Main Split).
  • Added syntax highlighting for Vim Language, FreeBASIC, QB64.
  • Added strip ANSI Codes option in build and run settings (for the build and run outputs).
  • Added an option to set to always open terminal in exclusve mode (#800).
  • Added reset-global-file-associations (Window -> Reset Global File Associations) and reset-project-file-associations (Window -> Reset Project File Associations) commands to reset language extension priorities for languages that can be represented by more than one language grammar.
  • Added support for maximizing the current tab widget (commands: maximize-tab-widget and restore-maximized-tab-widget), it can also be triggered right clicking a tab -> Maximize Tab Widget (#651).
  • Added an option to reset panel layout (#675).

Improved

  • AI Chat UI has been slightly improved / redesigned.
  • Improve editor "add-cursor-above" and "add-cursor-below" behavior.
  • Grammars in many languages: C, C++, C#, Objective-C, Objective-C++, Markdown, PowerShell, SmallBasic, and more.
  • Terminal emulator capabilities.
  • File Save now defaults to the most recent save location (#734).
  • Side Panel: right click on a directory and open it on new window (#736).
  • Side Panel right click context menu improvements (#712).
  • Side Panel: Right click on a sub-directory and "Find in folder..." (#720).
  • LM Studio models are now supported in AI Assistant plugin.
  • Show the ecode version on the Welcome Screen (#752).
  • Improved drop-down lists width in several locations.
  • Add auto-scroll when selecting and mouse cursor moves out of vertical view range in terminal.
  • Improve bitmap fonts support.
  • Enabled syntax highlighting in auto-complete list by default (for the newly created profiles).
  • Allow to expand/contract status bar panel.
  • Language extension priorities are now per-project (this is when you pick which language grammar use when more than one is available for an specific file extension).
  • Display a download progress window when download-file-web is used. Also support loading images and sounds from downloads.

Fixed

  • Many fixes for the LSP plugin implementation which brings better general support to LSPs, which also fixes #694, #742 and #766.
    • Implemented workspace/didChangeConfiguration command in LSP client. Now it's possible to set LSP settings for this command (#694).
    • Prevent dead-locks in LSP very heavy usage scenarios
  • Many fixes to the terminal emulator (closes issues #740 and #800).
    • In TerminalEmulator allow to select text outside the visible range.
    • Fix minor bug when changing terminal font and creating a new terminal was still using the old font.
    • Terminal: multiple issues with the copy/paste operations fixed. Now uses the primary selection when corresponds (middle mouse click, shift+insert). Fixed paste operation, it does not hang the app, pastes instantly contents and behaves exactly the same as other terminals.
  • Many fixes in the DAP implementation.
    • Fix environment not being inherited in debuggee.
  • Minor fixes in native file dialogs (#706)
  • Fix ca-bundle path on macOS (fixes ecode macOS app not working through TLS since I moved the assets path).
  • Fixes in process kill behavior in Windows.
  • Build and Run: fix run in terminal on Windows 8.1 (#740).
  • Fixed various crashes related to closing a LLM chat tab while executing an HTTP request.
  • Fix in Markdown folding ranges.
  • Fix rare crash in debugger when dealing with multi-session DAP.
  • Fix unbinded buttons in side panel when ecode is started with -t CLI parameter (#755).
  • Fix how selection in terminal is enabled or disabled based on the reported application capabilities.
  • Fix overlapping shortcuts and terminal shortcuts in terminal.
  • Take into account the line spacing to position the cursor.
  • Fix underline and strikethrough size when top and bottom positions are the same due to the small difference generated by the underline thickness (otherwise it was sometimes invisible).
  • Fix paste with middle-click in OSes with no primary selection.
  • Fix move event not being handled correctly within the FileSystemModel fileIsVisibleFn configuration (discussed at: SpartanJ/ecode/discussions#776).
  • Fix opening nonexistent files from CLI.
  • Correctly handle Private mode queries in the terminal emulator implementation.
  • Fix crash when drag & dropping images into ecode.
  • Fix Windows temp path resolution.

ecode 0.7.3

17 Oct 03:43

Choose a tag to compare

Changelog

Added

  • Drag & drop to move files/folders in the sidebar, plus copy/paste support for file management (#71).
drag_and_drop_files.mp4
  • Improved image viewer Images are now opened as in a gallery of images, you can change between the images in the same directory and zoom, rotate and mirror them (#96).
image_viewer.mp4
  • Audio preview support (#96).
audio_support.mp4
  • Support for native file dialogs: This is not enabled by default given that it's too new, but it can be activated at Settings -> Window -> Enable Native File Dialogs (#653).
native_dialogs.mp4
  • Added spell checker plugin.
  • Added custom mouse gestures bindings support (#602).
  • Added an option to reuse the first instance instead of the last when opening files (#659).
  • Open Project in New Window action (#654).
  • Feature to duplicate the current buffer (#632).
  • Move Tab functionality to reorder tabs in the editor (#630).
  • Added “Close All Tabs” action to quickly clean the workspace (#664).
  • New option to open recent projects directly from the welcome screen (#658).
  • Added command palette action to reload the window (#656).
  • Added a new option to set files associations in projects (#585).
  • Added .m4, configure.ac and configure.in syntax highlighting support (#564).
  • Added gnuplot scripts syntax highlighting support (#613).
  • Added Objective C++ syntax highlighting support (#616).
  • Added Universal Configuration Language syntax highlighting support (#617).
  • Added Assembly (ARM) syntax highlighting support (#78).
  • New JEdit syntax color scheme (#660).
  • Added a visual feedback when an open buffer has been deleted from disk (#608).
  • Added automatic detection of the language used in .h files and the possibility of picking the language manually if necessary (Settings -> Folder/Project Settings -> Treat .h files as...) (#614).
  • Command-line option --no-plugins to launch without plugins (#635).
  • Command-line option --profile to start with a specific profile (#634).
  • Added command toggle-block-comment #604.
  • Added commands convert-indentation-to-tabs and convert-indentation-to-spaces (#667).
  • Added command delete-to-start-of-line (#668).
  • Added command join-lines (#669).
  • Added commands move-to-previous-paragraph, move-to-next-paragraph, select-paragraph, delete-paragraph (#670).
  • Added commands fold, unfold, toggle-fold, fold-all, unfold-all (#683).
  • Crash reports are now stored inside the user profile directory (#639).
  • Added a way to quit the shell and close the terminal tab in one step (Settings -> Terminal -> Close Terminal Tab on Exit) (#643).
  • Better default behavior when closing a terminal tab with a running command (Settings -> Terminal -> Warn Before Closing Tab) (#644).

Improved

  • macOS startup time
  • Internal windows shadows

Fixed

  • A lot of invalid memory access bugs that could provoke crashes (a lot of work has been put into this).
  • Segmentation fault when working with split panes (#650).
  • Fixed issue where plugins could crash on reload.
  • Fixed a crash when typing > at beginning of line in front of another character #622.
  • Fix possible dead-lock while closing / destructing in LinterPlugin.
  • Fixed a bug when dragging of zero-sized files into ecode (#623).
  • Fixed a bug where there were duplicate entries in the command palette after filtering (#680).

ecode 0.7.2

20 Jul 15:18

Choose a tag to compare

Added

  • Syntax highlighting for:
  • Support for inheriting patterns and repositories from other syntax definitions (#553)
  • .ecode/.prjdisallowed support to disallow files allowed in the project (#563)
  • Registered additional file extensions:
  • "Buffer Only Mode" for Global Search & Replace (#545)
bufferonlyreplace.mp4
  • Tab jump modes, including a Tab Switcher (#469)
tab-switcher.mp4
  • Font hinting and anti-aliasing configuration options
  • Option to hide the Tab Bar (#477)
  • "Build & Run" and "Build & Debug" buttons
  • DAP multi-session support and Node.js debugging support
  • Support for setting environment variables in the terminal process
  • WebP image format support (#483)
  • Basic TextMate grammar support for $language.tmLanguage.json files
  • Typst LSP support
  • Option to limit auto-completion to current document symbols (#482)
  • AI Assistant remembers last used model
  • PATH extraction from default SHELL for Linux and BSD
  • Warning for missing binary paths in project build steps
  • Exit code display on process run failure
  • German translation updates (SpartanJ/eepp#107, #115)
  • Rave syntax updates: more SIMD types, fixed typos, added builtins (#114)
  • Ü syntax highlighting improvements (#116)

Improved

  • Handling of binary files opened via drag and drop or tree-view (#589)
  • Syntax Tokenizer performance
  • YAML, Vala, and CMake syntax highlighting
  • LSP restart stability
  • MenuBar buttons spacing and sub-menu positioning (#535)
  • oxlint set as default JS/TS linter
  • German translation retrofitted for missing keys (#107, #115)

Fixed

  • Signature help display bug
  • LSP mouse hover conflict with linter errors
  • Emscripten file parameter parsing
  • Tab key-press not switching widgets with non-main modifiers
  • Menu bar pop-up not hiding properly
  • TextDocument creating unnecessary undo/redo history on cut
  • Theme switching and cached properties
  • Sub-menu positioning
  • Input methods relying on OpenKey, Unikey, etc (#478)
  • Crash when closing ecode with duplicate tab names on Windows
  • Auto-close brackets with multiple cursors
  • Folding ranges crash
  • Tab-stops wrapping
  • IME location updates during file loading (SpartanJ/eepp#111)
  • Highlighting of if() as functions in C, C++, JS, and TS
  • lldb path hack for macOS
  • PATH resetting
  • LSPClientServerManager locks
  • malloc_trim usage when unavailable
  • CreateProcessW usage and absolute path resolution on Windows (#461)

Changed

  • Removed "Flash Cursor" feature
  • Syntax Definitions loaded on-demand to reduce memory usage and load times
  • And much more, there were too many changes too not forget about some of them

Note for macOS Users

To run ecode.app on macOS Sequoia, you need to perform a one-time step due to Apple's security requirements for unsigned apps:

  1. Copy ecode.app to /Applications.
  2. Open Terminal and run:
    xattr -cr /Applications/ecode.app
    
  3. Launch ecode.app. If prompted, approve it in System Settings > Privacy & Security.

We're working on signing the app with an Apple Developer ID for a smoother experience in future updates.

ecode 0.7.1

13 Apr 20:03

Choose a tag to compare

New Features

  • AI Assistant Plugin: (Docs) Interact directly with a wide range of local and remote Large Language Models (LLMs) from providers like Google, xAI, OpenAI, Anthropic (Claude), Mistral, Ollama, and LM Studio. This initial version provides a dedicated chat UI within the editor. Future updates will focus on deeper project integration (e.g., context awareness).
2025-04-12.20-40-56.mp4
  • Discord Rich Presence Plugin: Showcase your coding activity in Discord! This plugin integrates with your Discord client to display your current file and status. (Huge thanks to @bytequill for this contribution!)

  • Expanded Syntax Highlighting: Added support for 17 new languages: Blade, C3, CovScript, Fennel, Flow9, Janet, Jule, Lisp, Modula 2, Modula 3, Rave, Squirrel, Svelte, V1, YueScript, Zephir, and Ü.

  • New Language Server Protocol (LSP) Support: Enhanced code intelligence (completion, diagnostics, etc.) for C3, Lisp, Markdown, and Ü.

  • Debugging Support: Added debugging capabilities for the Ü language.

  • Tab Stop Alignment: Implemented proper tab stop support, ensuring consistent alignment when using tab characters (SpartanJ/ecode#55).

  • Document Transformation Commands: Added commands to quickly transform text:

    • escape / unescape
    • to-base64 / from-base64
      (These operate on the current selection or the entire document if no text is selected).
  • Improved Fuzzy Matching: Introduced a new, more effective fuzzy matching algorithm (inspired by Sublime Text's approach) for significantly better results when searching for files, symbols, commands, etc.

  • Open All Files in Folder: Added a convenient context menu option (Right-click > Open All Files in Folder) in the file tree view.

Improvements

  • Documentation: Significantly improved documentation coverage and clarity across the project.

  • Git Plugin: Enhanced stability and functionality. For example, the branch list now indicates if a tracked remote branch no longer exists (origin gone).

  • Emoji Rendering: Color emoji fonts now render correctly with the proper size and color, even within monospaced text contexts.

  • Performance: Optimized whitespace rendering performance on wrapped lines, making it as fast as non-wrapped lines.

  • User Experience: Improved handling of user-defined fallback-font settings, ensuring the default fallback font is always loaded reliably.

  • Build System: Addressed issue where specifying a non-existent working directory for a build step was not handled gracefully (SpartanJ/ecode#432).

Bug Fixes

  • Fixed text wrapping not updating correctly after zooming when 'Wrap to Line Breaking Column' was enabled (SpartanJ/ecode#390).

  • Fixed a crash when using 'Cursor Undo' (Ctrl/Cmd+U) with only one cursor present (SpartanJ/ecode#389).

  • Fixed a potential crash when pasting from an empty clipboard (SpartanJ/ecode#428).

  • Fixed a crash when running ecode in terminal mode (ecode -t) (SpartanJ/ecode#391).

  • Fixed the file tree view not updating correctly after renaming a folder.

  • Fixed numerous issues within the debugger plugin for increased stability.

  • Fixed the debugger gutter background sometimes not rendering correctly.

  • Fixed the horizontal scrollbar sometimes appearing unnecessarily on wrapped documents.

  • Fixed an issue where syntax highlighting could be incorrect on the first line of a file.

  • Fixed issues with project search path filters not applying correctly.

  • Fixed a rare issue preventing scrollbars from appearing in the project view.

  • Includes numerous other minor stability improvements and fixes.

ecode 0.7.0

09 Feb 16:19

Choose a tag to compare

  • Added debugging support via a new plugin that implements the Debug Adapter Protocol. This is the first revision of the protocol implementation so can't promise it's perfect.
2025-02-05.23-55-41.mp4
  • Added: Allow to split editors views by dragging tabs into the tab widget corners.
2025-02-09.13-21-47.mp4
  • Added Ada syntax highlighting and LSP support.
  • Side panel tabs order now is persisted between sessions.
  • Fixed several bugs with multi-cursor editing (#365).
  • Fixed terminal not working in Ubuntu Unity 24.10 (#366).
  • ecode now will load if exists a user provided CSS stylesheet from the ecode configuration path ~/.config/ecode/style.css (#370), like Firefox userChrome.css.
  • Fixed a some styling issues when switching color-scheme (#371).
  • Fixed / improved line comments toggle (#384).
  • Fixed a crash when clearing menu items (#386).
  • Fixed window title color not matching user configuration on Windows 11 (#385).
  • Fixes for file extensions (improperly filtering file extensions).
  • Fixes .txt files not being added into the project files.
  • Fixed highlighting issue in Javascript and TypeScript.
  • Fixed a rare crash in the LSP.
  • Fixed a crash when trying to highlight matching bracket where its line was hidden.
  • Fixed enable/disable vertical scrollbar in editor not updating line-wrap.
  • Fixed incorrectly adding watches of subfolders of currently loading directory creating the issue of not actually observing some folder files changes.
  • Fixes in Git plugin staging.
  • Fixed broken multiline function signature (#388).
  • Line-wrap fix performance issue with updates over extremely long lines.
  • Added incognito option parameter (#373).
  • Added "delete-to-end-of-line" to text document commands (not binded by default).
  • Added ${current_doc_dir} build variable (issue #383).
  • Added: "flash cursor" command, this displays an animation to easily locate the current cursor, you can press 5 control (or add a keybinding for "flash-cursor" command), it can also be disabled in global document settings.
  • Fixes in global search to avoid searching text in images.
  • Fixed unexpected tab bar scrolling while clicking on a tab.
  • Unactive tabs now shade text color a little bit.
  • Fixed some window size issues on macOS.
  • Speed up load times by loading asynchronously some resources before window creation and avoiding creating some of the largest submenues in settings menu.
  • Fixed multi-line search in buffer bug.
  • Added: display new line character in selection.
  • Worked on several performance optimizations.
  • Several minor fixes hard to mention.
  • Cleaned up the project documentation

ecode 0.6.4

01 Dec 19:02

Choose a tag to compare

Yet another small release with bug fixes and performance improvements

  • Added OCaml syntax highlighting support (thanks to @mdales!) and ocaml-lsp support.
  • Added Julia LSP support using LanguageServer.jl.
  • Added Fortran LSP support using fortls, plus some syntax highlighting improvements.
  • Added perl LSP support using PerlNavigator, plus some syntax highlighting improvements..
  • Added double click over the tab bar (on an empty space) will now open a new untitled document (issue #361).
  • Added animated gif support in image previews.
  • Allow to locate and open image files from the universal locator.
  • Optimized multiple cursors selection (issue #356).
  • Optimized how the file system directory is fetched when loading a single file from file system, now it will load asynchronously, avoiding hanging the application on very large directories (issue #357).
  • Fixed using new line with multi-cursors in the same line (#364).
  • Fixed linter errors and warnings being incorrectly positioned when the line was wrapped.
  • Fixed how EINTR signal is handled, fixes LSP and Git plugins on Haiku (issue #83).
  • Fixed selected text being deleted when switching to another application on some Linux window managers (issue #355).
  • Fixed IME suggestions positioning.
  • Fixed a rare crash when loading empty file from disk.
  • Fixed a rare dead-lock when trying to rise the window on Linux.
  • Fixed a crash when opening a file from the "Build Issues" view.
  • Fixed a crash when re running "Build & Run" when a "Run" application process is still running.
  • More general optimizations related to heap allocs (to improve general rendering performance).

ecode 0.6.3

03 Nov 16:27

Choose a tag to compare

This release is a hot-fix for a crash that can happen very easily while switching folders or any multi-threaded event.

Please read 0.6.2 release logs for more information about what's new.

ecode 0.6.2

30 Oct 04:28

Choose a tag to compare

Another small release with some nice improvements and many important fixes.

  • When files are opened from a file explorer or from the command line and there is currently a running ecode instance files will be loaded in the last ecode instance instead of launching a new ecode instance. Option to toggle this is at Settings -> Window -> Open Files in New Window, which is disabled by default (issue #58).
  • Added Regular Expressions support in all searches (document and global) (issue #147).
  • Added Regular Expressions support in syntax highlighter (issue #225).
  • Display subfolder hint/info when two or more files have the same file name but different paths.

subfolder-hint

  • ecode now offers nightly builds available from here.
  • ecode releases can now be triggered from Github Actions, simplifying the work required for new releases (this will probably translate in more frequent releases).
  • Improvements in syntax highlighting for CMake files and Makefiles.
  • Improved theming support, now changing themes during the same instance should work correctly (before this some colors glitched and were not applied properly, a restart was needed).
2024-10-30.00-43-06.mp4
  • Added a glob match for path and extension search in the "Locate" bar (write "g your_glob_match") (issue #336).
  • Added keybindings to the Auto Complete plugin. Now user can customize how auto-complete is triggered and consumed (issue #336).
  • Improvements in command palette fuzzy search.
  • Added a new document command to select a whole line ("select-single-line"), this differs from the normal "select-line" command that will select only the contents in the line without the last new line character (issue #340).
  • Added support for Windows Shortcuts (.lnk files).
  • Added Windows arm64 builds.
  • Updated German translation (thanks to @NullPlane).
  • Fixed a critical crash ocurred when the application was run on low-memory scenarios due to an invalid memory access, it was critical when ecode was run from Haiku (issue #292).
  • Fixed a critical crash when files were closed during its loading (issue #330).
  • Fixed cursor selection not selecting while hovering over minimap (issue #333).
  • Fixed general performance issues in Haiku (this was causing huge load times).
  • Fixed Recent Files and Recent Folders buttons in Welcome Screen not being reactive (issue #339).
  • Fixed a crash in build settings when adding or removing build steps and then writting into another step settings.
  • Several performance optimizations for big files, large lines and also for rendering.
  • And many more minor changes.

ecode 0.6.1

12 Sep 01:09

Choose a tag to compare

ecode 0.6.1

This is a small release with several bug fixes and minor improvements plus a few new features.

  • Added support for editor breadcrumb plus a search symbol window that displays the symbol-tree of the document (trigger with ctrl+alt+l if using LSP, this feature is an LSP plugin feature).
breadcrumb.mp4
  • Added support for custom tab visualization, now the user can customize the aligment and character used (issue #37).
indenttabcharacter.mp4
  • Added AWK syntax highlighting.
  • Added support for FreeBSD builds.
  • Allow to drag folder into the editor and it will load the folder (issue #314).
  • Allow opening multiple files from "Open File" (issue #252).
  • Don't open welcome tab when documents are already opened in a new session (issue #325).
  • Highlight fix for comments in a few languages (issue #326).
  • Added "create-new-welcome-tab" command to open the "Welcome" page anytime (issue #323).
  • Greatly improved performance drawing whitespaces when using line-wrap on large lines.
  • Flag the document as modified until saved when changing it's line ending (issue #315).
  • Fixes in Build Settings, there were some crashes related to UI element bindings.
  • Fixes an error initializing typescript-language-server on windows (issue #310).
  • Fixes a "New Folder" bug in Open File / Folder dialogs that ended up in a crash (issue #306).
  • Fixed custom color-schemes not loading properly (issue #301, fixes Ini file load bug).
  • Fixed double click selection on locked documents.
  • Fix crash when reloading plugins and triggering subscribed events.
  • Fixed multiline commit text not being visible after the first line.
  • Keep folded regions on folding ranges refresh even if the folded region disappears from the new folded regions. This will prevent ecode from crashing.
  • Display signature help if avialable and not symbol info is available when pressing lsp-symbol-info (F1).
  • Improved auto-close brackets behavior on selection (when you select a range an insert an open-close bracket).
  • File locator now displays the relative path to the open folder instead of the full path of a file.
  • Improve universal locator options when no folder is open (fixes #303).
  • Highlight LANGUAGE in CMake files (issues #293)
  • Several minor bugfixes don't worth mention in detail but that will help with ecode's stability.
  • Performance improvements when editing big files.

ecode 0.6.0

20 Jul 05:21

Choose a tag to compare

ecode 0.6.0

This release adds some of the pending fundamental features for a code-editor.

General

Features

Added soft-wrap / line-wrap support (#12)

soft-wrap.mp4

Added code-folding support (#231)

code-folding.mp4

Added support for session snapshots & periodic backup (editor will allow closing modified documents and restore its last state) (#220)

session-snapshots.mp4

Improved distinction between modified and unmodified documents (#69 and #287)
Added Shift-JIS encoding support (#276)
Added bend language syntax-highlighting support

Fixes / Minor improvements

Fix Vue codes in <script> doesn't have syntax highlight (#275)
Fix don't run program if compilation failed when using project-build-and-run command (#278)
Allow to disable the Welcome Tab/Screen (and opening ecode with a blank document) (#279)

welcome-screen-settings.mp4

Added Java Formatter-Support (#283)
Improvements in keywords for LSP Client ($FILEPATH and others) (#284)
Wrap text in linter tooltip (#289)
Fix pasting single-line text with multi-cursor
Fix haskell lsp command call
Fix a couple of rare crashes with observed file system changes
Plus many small improvements

Notice

This new release could be a little bit more unstable than usual given that the new features represent a big change over the editor and text document components, adding document virtual views. I've using it for a couple of months, I'm confident with the soft-wrap implementation but not so much with code-folding given that I don't particularly use the feature very often. Please, as usual, report any issue. Also please note that code-folding is enabled in most languages but not all of them (tag based languages as XML/HTML are still pending unless you configure an LSP with fold support). Code-folding is provided from two different providers: ecode own implementation for languages with folding based in braces and indentation and also via LSP folding provider. If LSP fold provider is present ecode will prioritise it (it's expected to be better and faster). Tag based folding has not been implemented due to the processing cost it has (will need more dedication for an optimised implementation).