Releases: neurocyte/flow
Release 0.3.1
New features:
- Improved styling of tabs
- User customizable tab styles that can be edited with the open_tabs_style_config
command
- All cursors and selections are now restored when switching back to a previously open buffer
- Ephemeral buffers can now only be saved with save_as
- Windows binary releases are now packaged as zip files
New commands:
- open_tabs_style_config
- open_version_info
- open_font_test_text
Fixes:
- #144 - Never attempt to log a raw cbor message
Release 0.3.0
Major New Features:
-
Win32 GUI - Yes, flow can now render itself in a win32 GUI window for all those terminal impaired windows users (with D3d11 shader rendering). The GUI binary can be built with
zig build -Dgui --release=safe
and is calledflow-gui.exe
. Functionality in this GUI version of flow is identical to the TUI version, although with this release there are some minor renderer features still missing such as curly underlines, mouse cursors and double wide characters. Thanks to @marler8997 for the huge amount of work he put into this. There are a few GUI specific commands to zoom in/out and select a font face. GUI specific configuration options are stored in a newgui_config
file. -
Multi-buffer support - A new buffer manager module means you can now switch buffers without first saving them. The recent files list has gained a dirty indicator so you can see which files need to be saved and there is a new command
switch_buffer
the will bring up a list of currently open buffers (with fuzzy search). The home screen now also has asave_all
command for those times you just want to exit without saving each file individually first. There is adelete_buffer
command that is bound to thedelete
key when in the buffer selector palette. Deleting a buffer will remove it from the buffers list and free it's undo history entirely. -
Tabs - There is a a new tabs widget that you can use to switch buffers with the mouse or a keybinding to the
next_tab
/previous_tab
commands. In the default configuration it is added to the top bar. You can close a tab with middle mouse click. -
Task runner - You can now run commands inside flow and have their output placed in a buffer. Tasks are remembered per project. The default keybinding for the task palette is
alt+!
. Task output buffers are ephemeral and will be deleted when closed if not saved to a file first. -
Shell command bindings - You can now bind shell commands to keys and have the output inserted into the current buffer, a new buffer, or the log. The commands are
shell_execute_insert
andshell_execute_log
. Seesrc/keybind/builtin/flow.json
for some examples. -
LSP: Rename symbol - Thanks to @travis flow now has LSP
rename_symbol
support. This is done a little differently in flow to most other editors. When running therename_symbol
command we add cursors at all the symbol references and let you rename them interactively. Cross file renames are not yet supported, but will show up in the references list for you to jump directly to them and perform the rename yourself if you so desire. -
New config file format - Flow now uses a much simpler configuration file format that is nicer to edit manually. Conversion from the old
.json
config file is automatic and will not lose any configuration. Also, it is now possible to include nested configuration files with theinclude_files
option. -
Much improved whitespace rendering - Flow now uses a map of the rendered view to process whitespace rendering after finishing the main render pass. This fixes a few minor whitespace rendering bugs, and more importantly, allows easy and fast rendering of more whitespace related features. There are new modes:
leading
,eol
andtabs
, to render just subset of whitespace. And, best of all, flow now highlights leading (ie. spaces before tabs) and trailing whitespace errors. -
Beam cursor mode mouse select - Selecting with the mouse when you have a beam cursor active now gives selection behaviour like a GUI editor. ie. the position of the selection is calculated gap to gap instead of char to char.
Changes to input modes:
-
Flow select mode - Press
ctrl+space
in flow input mode to enter a select mode that lets you extend your selection with regular movement keys. -
Emacs input mode - Emacs input mode keybindings are now mostly complete and include all the basic movement commands, selection mode (also
ctrl+space
) and LSP commands. Thanks to @marler8997 for this work. -
Vim input mode - Vim input mode keybindinds have improved, but are still incomplete. New are vim style half and whole page movements and more ways to enter instert mode.
-
Helix input mode - Helix input mode is also improving, but still very far from complete. Helix style selections (inclusive) have added in this release with more cursor movements still to come.
New commands:
create_new_file
- Create a new file that can be named with thesave_as
command.pause_undo
,resume_undo
- Pause/resume undo history. Useful for reducing undo steps generated by command sequences.
New file types:
sql
systemverilog
New configuration options:
gutter_symbols
- Enable/disable diagnostics symbols in the line number gutter.default_cursor
- Set the default cursor. One ofdefault
(the terminal default),block_blink
,block
,underline_blink
,underline
,beam_blink
orbeam
New themes:
mellow
Minor New Features:
- Show screen dimentions on resize
- *BSD support
- Tracking branch and upstream is now shown in
--version
output copy
now copies the current line if there is no selection- Remove existing cursor if clicked again in add cursor mode (
alt+click
) - Support inheritance between input modes within an input namespace
- Add a bullet to inline diagnostic messages
- Don't render diagnostic messages if there is too little space
- Use a smaller NL symbol
- Support pasting from the native windows clipboard
- Upgrade cursors to block cursors when multi-cursor editing
- Separate binding key seqences with space instead of '>'
- Clear file list and log if no
find_in_files
matches are found - Support matching of shifted keybindings
Fixes:
- project: don't abort early on project restore_state
- palette: prevent crash on select(0)
- gutter: add missing abs to rel conversion in primary_click/_drag
- disable slow mouse_idle_timer
- editor: send view and cursor position updates when number of document lines changes
- utf-8: perform utf-8 sanitazation on buffer insert_chars
- palette: cancel when clicking outside of a palette instead of activating the current item
- project: use after free on fast project switching
- editor: prevent an integer overflow in editor.cancel_all_selections() on project switch
- windows: fix a race in the subprocess module
- editor: clamp cursor to buffer in toggle_cursel_prefix
- editor: don't attempt to render off the bottom of the screen
- version: make gen_version_info a little more robust
- editor: add pretty error if clipboard request is denied by terminal
- keybind: provide fallback handling for legacy terminals the don not provide shifted key info
- windows: matching of alt+shift+ keybindings on windows
- windows: normalized vaxis windows console input
v0.2.1: Release 0.2.1
Release 0.2.1
New features:
- Input view now shows the parsed input event in a keybind compatible syntax
- Cursor shape configuration (via keybind mode configuration) is now supported for mini and overlay modes
Fixes:
- Hover highlights are now correctly positioned in lines with tabs and/or wide characters
- Find in files matches with control characters in the match are now rendered correctly (escaped)
- Fixed non-tree-sitter builds
v0.2.0: Release 0.2.0
Release 0.2.0
New Features Summary:
-
Binary release builds
-
User configurable keybindings
-
Native Windows support
-
Command palette with fuzzy matching
-
Recent project directories palette with fuzzy matching
-
File type palette
-
Support CRLF line endings and changing the line ending mode
-
Support for loading non-UTF-8 files with auto convertion to UTF-8
-
Configurable indent size and tab width
-
Very large file support
-
New file list view for find_in_files results
-
New diagnostics view for language server diagnostics
-
Theme selection palette
-
Better support for alpha in themes
-
New editor commands:
- show_diagnostics (open the diagnostics view)
- save_as (with path completion)
- expand/shrink_selection (based on tree-sitter AST)
- open_previous_file
- switch_case
- toggle_syntax_highlighting
- force_terminate (exit without saving and an error code)
- insert_command_name (show bindable command names palette)
-
New CLI options & changes:
--literal
disable file name parsing for line numbers--list-languages
show language server/formatter availability--no-syntax
disable syntax highlighting--exec
execute command(s) on startup
-
New language server features:
- goto_declaration/_implementation/_type_definition
- hover
- references (find all references)
-
UI features & changes:
- Faded background for modal palettes
- Configurable mode specific cursor shapes (block, bean, underline)
- Configurable status bars (top & bottom)
- Clock status bar widget
- Spacer status bar widget
- Improved terminal title
- Mouse resizable panel views
- Set terminal background to match editor (see enable_terminal_color_scheme)
- Support for terminal inband resize messages
-
New configuration options:
- enable_format_on_save
- enable_terminal_color_scheme
-
New themes:
- Catppuccin Mocca, Latte, Frappé and Macchiato
- Gruvbox Material Dark & Light
- Spacedust
-
New file types & languages:
- odin
- cmake
- gleam
- julia
- swift
- hare
- vimscript
- typst
- elixir
- super-html
- yaml
- nim
- kdl