-
Release 0.6.0 Stable
released this
2025-11-05 22:00:11 +00:00 | 25 commits to master since this releaseNew Features
Many features with new default keybindings have been added. Keybinding mentioned
in these release notes are for Flow mode unless otherwise mentioned. Please
check the command palette or the online command & keybinding reference
(ctrl+f2orctrl+k ctrl+s) for the active keybindings in other modes.LSP Completion
LSP completion suggestions support has been added. Completion requests are
triggered withctrl+spaceand supports fuzzy search of completion suggestions.
Accept a suggestiong withReturnorTab.Clipboard history
A history of cut & copy operations can be opened with
shift+alt+v. The history
is grouped by multi-cursor operations, so you can copy with multiple cursors and
then paste with a single cursor or multiple cursors. Paste operations now accept
an integer argument (alt+1,alt+2, etc.) to select a group from the history
to paste without first opening the clipboard history.Tabbar Tab Improvements
Tabs in the tabbar have received many quality of life improvements. There is now
a file type icon, and on hover, a close icon. Tabs can be dragged to a new
position with the mouse, or re-ordered with the keyboard with the new keybindings
ctrl+shift+page_upandctrl+shift+page_down. Recently closed tabs can be
re-opened withctrl+shift+t.AST selection & navigation improvements
The
expand_selectioncommand to expand the selection to the parent AST node
has been improved and now should work in any sitution.shrink_selectionand
the various sibling node selection commands will now select the node at the
cursor if there is no selection.Tasks
Tasks can now be added and deleted directly from the run task menu. Also the
run_taskcommand now accepts a string and with add and run a task in one step,
which is useful for running tasks directly from the command line. For example:flow --exec 'run_task:git grep -n TODO'Automatic Light & Dark mode selection
If your terminal supports it, flow will now select a theme to use based on the
system color scheme. The light mode and dark mode themes are independently
configurable. There is also a toggle command in flow to manually switch modes
bound toalt+f11, and a command line argument.Widget styles
Palettes and menus can now be display in a range of different styles. You can
switch through the available styles while a widget has focus with thealt+f9
keybinding. The selected widget style is persisted on a per widget type basis.Goto & Byte Offsets
The
gotomini mode now supports {row}:{column} syntax. Also, pressingbin
goto mini mode will toggle goto byte offset mode. Byte offsets are also
supported on the command line by prefixing the offset with the letter 'b'. For
example:flow src/main.zig:b123Also,
gotoandgoto_offsetcommands now accept integer parameters to directly
jump.Underline mode
Underline mode, triggered with
ctrl+_,ctrl+=orctrl+plus, will underline
the current line with various characters.Git status
A new git status palette lists changed and untracked files and lets you open
them. It may be opened with thectrl+shift+gkeybind or by clicking on the
git branch widget in the status bar.Kitty extensions for unicode widths & multi cursors
We now support kitty char width protocol extension for much better unicode
support in kitty. We also support kitty's multi-cursor protocol extensions to
show proper terminal cursors when editing with multiple cursors.Tab width settings
The tab width may now be interactively changed on a per buffer basis and there
are new commands to set the tab width for the current buffer, session and
globally.FreeBSD
We now produce binary release for FreeBSD, thanks to Zig 0.15 support for
FreeBSD cross-compilation.Win32 improvements
The win32 GUI renderer now supports wide characters. Also, filesystems without
proper support for fstat will work. This means flow now works correctly under
WSL1 and WSL2 on windows filesystems.Helix mode improvements
Helix mode has seen major improvments, mostly thanks to Igor Támara.
:xalias for:wq%select_allzzscroll_view_center- shorcuts for buffers
- closing and saving including close all and save all
- close other buffers and reload all
- feature parity with helix copy paste (P before, R replace, r after)
- zt zc zb scroll keybinds and G support
- space g bound to open changed and new files reported by git
- F, T, t, f select and extension movements
- match helix clipboard behaviour on delete
- r to replace with a character
- extend word to right
Vim mode improvements
Vim mode now has vim style aliases for buffer commands and a
:qa!aliase for
quit_without_saving.New file types
- fsharp
- commonlisp
- csproj
- msbuild props
- gettext-po
- awk
- latex
- nickel
- elm
- hcl
- perl
- verilog
- reStructuredText
New themes
- kanagawa
- alabaster
Zig 0.15.2
Flow now builds with Zig 0.15 and has been fully ported to the new std.Io.Writer
interfaces.Misc Minor Changes
-
delete_line & select_line: bound to
ctrl+shift+kandshift+alt+e
respectively, with full multi-cursor and integer argument (repeat) support -
insert_command_name (command & keybind reference) is now additionally bound to
ctrl+k ctrl+s -
plain move_begin is now bound to
ctrl+k home -
selections are sensibly merged if they overlap
-
files & projects
- add open_most_recent_file command
- allow open_file to open projects (directories)
- make change_project call open_recent instead of jumping to last file
- refresh open_recent palette when the project is done loading the file list
- add flow mode keybind for find_in_files to overlay/palette mode
- always list the active project first in the recent projects list
- use case insenstive matching for file_browser completion
- file_browser now completes into subdirs when there is only one match
-
display indent mode in status bar
-
improve markdown highlighting
-
configuration
- make hover_time configurable
- add option lsp_output "quiet" to reduce LSP log verbosity
-
add keybinds for keypad keys
Fixes
Many, many fixes. Too many to really list here. See commits marked
fix:in the
full git changelog for the full list of fixes.Contributors
CJ van den Berg
Igor Támara
Jonathan Marler
Loris Cro
geemili
Alex Rønne Petersen
Daggerfall-is-the-best-TES-game
jmcaine
n0n
zai1208Downloads
flow-control.dev (source only)
github.com (binaries & source)
codeberg.org (binaries & source)Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
flow-v0.6.0-source.tar.gz
1 download · 336 KiB
-
flow-v0.6.0-source.tar.gz.sha256
1 download · 92 B
-
flow-v0.6.0-source.tar.gz.sig
1 download · 438 B
-
flow-v0.6.0-source.zip
1 download · 408 KiB
-
flow-v0.6.0-source.zip.sha256
1 download · 89 B
-
flow-v0.6.0-source.zip.sig
1 download · 438 B
-
v0.4.0 Stable
released this
2025-07-17 13:39:06 +00:00 | 587 commits to master since this releaseCelebrating 1000 github stars!
New Features:
-
File type configuration - File types are now user configurable. Flow comes with a built-in
list of file types that you can now modify and save to the configuration directory with the
Edit file type configurationcommand. You can also create whole new file types simply by adding
new files to the configuration directory in thefile_typefolder. The file type configuration
defines the name, icon, description, formatter and language server, extensions and first line
matching rules for a file type. -
Auto Save - Enable auto save for the current buffer with the
Toggle auto savecommand. This
will automatically save the current buffer on every change. Debounce time is the currently
configured frame rate. You can also enable auto save globally with theenable_auto_save
configuration option, and limit which file type have auto save automatically enabled with the
limit_auto_save_file_typesconfiguration option (which is a list of file types, e.g.
["zig","rust"]) -
Highlight columns - Use the
Toggle highlight columns(toggle_highlight_columns) command
(bound to shift+f11 in flow mode) to enable a background dim effect at the configured column
positions. The columns to highlight are configured via thehighlight_columnsconfiguration
option. -
Smart insert & delete - Brace pairs like (), [], {} and "" are now handled intelligently like
in most code editors. Also, leading whitespace is now intelligently deleted inindent_size
steps. -
Format on save toggle - Format on save can now be toggled for the current buffer with the
Toggle format on savecommand (toggle_format_on_save). -
Git support - The status bar now shows a summary of the project's git status include current
branch, number of changed files and number of unpushed/unpulled/stashed commits. Also, Flow now
respects all of git's file ignore machanisms. Diffs do not yet use git, but that is planned. -
Auto create parent directories - Flow will now automatically create parent directies if
necessary when creating new files. -
Tilde expansion - The
Open fileandSave ascommands now correctly support expanding~
to the user's home directory. -
Improved panic handling - Flow now has much improved panic handling and will leave the
terminal in a known good state for all panics and segfaults. Additionally, release and nightly
builds are now available with full debug information that will produce fully detailed backtraces
on crash. This should help catch and fix those rare but pesky crashes. Please submit issues!
Additionally, there is a configuration option to automatically start and connect gdb to a
crashing flow instance. (linux only) -
Terminal support - Flow now supports the kitty explicit text width protocol. This improves
unicode character rendering on terminals that support it and superceedswcwidthwhen available. -
Language server protocol - Flow language server protocol backend is now fully asynchronous.
This means that slow language servers cannot cause pauses while editing. -
Language support
- Added powershell syntax highlighting
- Added hurl syntax highlighting
- Added rpmspec syntax highlighting
- Added protobuf syntax highlighting
- Added uxntal syntax highlighting
- Added C# formatter (csharpier)
- Added PHP language server (intelephense)
-
Themes
- Themes can now be customized with the
Customise themecommand - Added the entire base16 theme collection
- Added the hypersubatomic theme
- Themes can now be customized with the
-
Home screen - The home screen text and list of commands can now be customized. Also, the
current build version and build type are now shown in the bottom right corner of the home screen. -
tree-sitter - Queries are now biniary compiled and stored in the flow executable. This
greatly improves load times and reduces binary size. Also, incremental tree-sitter parsing is
now checked for parsing errors and will fallback to a full re-parse if errors occur. -
Integer arguments - Flow now supports integer arguments to many commands similar to emacs and
vim. Related bindings have been added to Flow, Emacs, Vim and Helix modes. Pending integer
arguments are shown in the status bar. -
Vim mode improvements - Insert mode now produces automic undo steps, much more like Vim. Many
vim mode bindings have been improved to more closely match Vim in their behaviour. Visual line
mode was added. -
Helix mode improvements - Many helix mode bindings have been improved to more closely match
Helix in their behaviour. -
New keybindings
-
Flow mode
home/endnow work in palettes
ctrl+shift+F5=> reload file -
Vim mode
ctrl-c=> exit insert mode
:e!=> reload file
gt=> next tab
gT=> previous tab
ctrl-v=> enter visual block mode
<=> unindent
>=> indent
*=> find work at cursor
J=> join line
dgg=> cut to beginning of buffer
dG=> cut to end of buffer
f=> move/select forward to char
F=> move/select backwards to char
t=> move/select forward until char
T=> move/select backwards until char
N=> goto previous match
cc=> change whole line
C=> change to end of line
D=> delete to end of line
cw=> change word right
cb=> change word left
zz=> scroll view to center
w=> [VISUAL] select word right (vim)
W=> [VISUAL] select word right
e=> [VISUAL] select to end of word right (vim)
b=> [VISUAL] select word left (vim)
B=> [VISUAL] select word left
gg=> [VISUAL] select to beginning of buffer
G=> [VISUAL] select to end of buffer
c=> [VISUAL] change word right
C=> [VISUAL] change to end of line
D=> [VISUAL] delete to end of line
-
-
New & updated commands
- copy_file_name => [NEW] Copy the current buffer file name (and optionally line number) to the
clipboard. - reload_file => [NEW] Reload the current file from disk (mainting undo).
- find_file => [NEW] Alias for open_recent.
- save_file_with_formatting => [NEW] Format and save the current file. Independant of the current
value ofenable_format_on_save. - save_file_without_formatting => [NEW] Save the current file without first formatting it.
Independant of the current value ofenable_format_on_save. - open_file => [UPDATED] Open file will now detect if the current selection contains a valid file
path, including optional line number. If it does, it will be opened immediately without first
prompting. - join_next_line => [UPDATED] Join next line will now collapse whitespace.
- shell_execute_stream_output => [UPDATED] Will now follow output tail if cursor is at buffer
end.
- copy_file_name => [NEW] Copy the current buffer file name (and optionally line number) to the
-
Command line improvements
--new-file=> Create a new file when starting Flow.--scratch=> Create a new scratch (ephemeral) buffer when starting Flow.--exec=> You can now pass string arguments to commands by separating them from the command
name with a colon.
-
UI improvements - Many minor usability and visual UI improvments
- The results pane now closes if
Find in filesmode is cancelled - The clock widget now supports multiple digit styles
- Status bar widgets can support parameters for width or style depending on the widget
- Scrollbars and file icons can be enabled/disabled via configuration options
- Inline diagnostics (and gutter symbols) can now be toggled with the
Toggle display of diagnostics inlinecommand - Line numbers can now be displayed in various styles (toggled via middle click and/or config)
- The results pane now closes if
Fixes:
- Add legacy input encoding compatible undo keybinding in emacs mode
- Allow .cmd along with .exe for Windows executables
- Fixed broken shifted keybinds for Helix mode
- Fix palette crashing when its items's length is exceeded
- Fix restoring of last_find_query from editor state
- Fix make keybind module respect command.suppressed_errors list
- Allow font names longer than 31 characters in win32
- Fix panic on extra long plane names
- Don't stop unindenting on blank or full unindented lines
- Make sure to show_home if no files are opened via command line
- Add workaround for LSPs sending junk null messages (omnisharp)
- Don't truncate scratch buffer names in tabs and terminal title
- Prevent unexpected message errors on missing LSP binary
- Replace std.unicode.utf8Decode with safe function that cannot panic on invalid UTF-8 input
- nudge_delete should handle cursor moving to same line as delete
- Remove multithreaded buffer access in background async differ
- Remove multithreaded buffer access in project_manager
- Word/line wise dragging should keep the original word/line selected
- Remove prefix from paths in ripgrep results
- Use iso date format for default date instert keybind
- Workaround broken dir.statFile on WSL1
- Left an right movements jump to selection boundary
- Prefer targetSelectionRange over targeRange if both are provided by LSP
- Fix flicker: home screen should not load if we have a file to open
- Update thespian to fix subprocess file descriptor race
- Force ripgrep to never try search stdin
- Bracketed paste should check for ctrl+j and insert \n
- Render control codes in mini buffer input with unicode control code symbols
- Proactive close subprocesses on early exit in shell module
- Fix paste in goto mode
- Don't match against legacy unshifted keys when we have extended input text
- Remove blocking project manager call on startup
- Never double free LSP init queue
- Remove arbitrary limit to command buffer size
- Remove ctrl+p command palette binding
- Stop after removing widget in Widget.remove (fixes ReleaseFast crash)
- Fix potention dangling pointer in mainview on view list realloc
- MRU position should not override line numbers on command line
- Don't restore editor view rows and cols
- Prevent task palette from being too short to show palette label
- Refresh hover on tab changes
- Add workaround for conpty ul color escape sequence parser bug
- get_mru_position should not hang if file not found in project
- Fix row & column in get_mru_position
- Remove initial empty frame render on startup
- Make move_cursor_up/_down fallback to move_begin/_end
- Don't get stuck in an overlay mode if it is triggered from the command line
- Update cursor target column after nudge_insert/_delete
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
6 downloads
-