Skip to content

Releases: neurocyte/flow

Release 0.3.1

30 Jan 20:41
v0.3.1
952a755
Compare
Choose a tag to compare

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

27 Jan 21:42
v0.3.0
78affc4
Compare
Choose a tag to compare

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 called flow-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 new gui_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 a save_all command for those times you just want to exit without saving each file individually first. There is a delete_buffer command that is bound to the delete 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 and shell_execute_log. See src/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 the rename_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 the include_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 and tabs, 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 the save_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 of default (the terminal default), block_blink, block, underline_blink, underline, beam_blink or beam

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

20 Dec 19:45
v0.2.1
69c2d06
Compare
Choose a tag to compare

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

19 Dec 21:53
v0.2.0
cf7fdb6
Compare
Choose a tag to compare

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:

    • mail
    • odin
    • cmake
    • gleam
    • julia
    • swift
    • hare
    • vimscript
    • typst
    • elixir
    • super-html
    • yaml
    • nim
    • kdl