From a12adb525f188126a7a95795bfb0d8bb9d6f2526 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 10:51:50 +0200 Subject: [PATCH 1/7] docs: clean-up README.md formatting --- README.md | 56 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 2ee9245..46e487d 100644 --- a/README.md +++ b/README.md @@ -5,19 +5,22 @@ and is my daily driver for most things coding related. [![Announcement](https://img.youtube.com/vi/iwPg3sIxMGw/maxresdefault.jpg)](https://www.youtube.com/watch?v=iwPg3sIxMGw) + # Requirements -- A modern terminal with 24bit color and, ideally, kitty keyboard protocol support. Kitty, - Foot and Ghostty are the only recommended terminals at this time. Most other terminals - will work, but with reduced functionality. +- A modern terminal with 24bit color and, ideally, kitty keyboard protocol + support. Kitty, Foot and Ghostty are the only recommended terminals at this + time. Most other terminals will work, but with reduced functionality. - NerdFont support. Either via terminal font fallback or a patched font. - Linux, MacOS, Windows, Android (Termux) or FreeBSD. - A UTF-8 locale + # Download / Install -Binary release builds are found here: [neurocyte/flow/releases](https://github.com/neurocyte/flow/releases/latest) +Binary release builds are found here:[neurocyte/flow/releases](https://github.com/neurocyte/flow/releases/latest) -Fetch and install the latest release to `/usr/local/bin` with the installation helper script: +Fetch and install the latest release to `/usr/local/bin` with the installation +helper script: ```shell curl -fsSL https://flow-control.dev/install | sh @@ -25,7 +28,8 @@ curl -fsSL https://flow-control.dev/install | sh Nightly binary builds are found here: [neurocyte/flow-nightly/releases](https://github.com/neurocyte/flow-nightly/releases/latest) -Install latest nightly build and (optionally) specify the installation destination: +Install latest nightly build and (optionally) specify the installation +destination: ```shell curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --dest ~/.local/bin @@ -41,6 +45,7 @@ Or check your favorite local system package repository. [![Packaging status](https://repology.org/badge/vertical-allrepos/flow-control.svg)](https://repology.org/project/flow-control/versions) + # Building Make sure your system meets the requirements listed above. @@ -51,7 +56,9 @@ Flow builds with zig 0.15.1 at this time. Build with: zig build -Doptimize=ReleaseSafe ``` -Zig will by default build a binary optimized for your specific CPU. If you get illegal instruction errors add `-Dcpu=baseline` to the build command to produce a binary with generic CPU support. +Zig will by default build a binary optimized for your specific CPU. If you get +illegal instruction errors add `-Dcpu=baseline` to the build command to produce +a binary with generic CPU support. Thanks to Zig you may also cross-compile from any host to pretty much any @@ -87,8 +94,8 @@ Or if you prefer, let zig install it in your home directory: zig build -Doptimize=ReleaseSafe --prefix ~/.local ``` -Flow Control is a single statically linked binary. No further runtime files are required. -You may install it on another system by simply copying the binary. +Flow Control is a single statically linked binary. No further runtime files are +required. You may install it on another system by simply copying the binary. ```shell scp zig-out/bin/flow root@otherhost:/usr/local/bin @@ -128,15 +135,18 @@ See `flow --help` for the full list of command line options. # Configuration Configuration is mostly dynamically maintained with various commands in the UI. -It is stored under the standard user configuration path. Usually `~/.config/flow` -on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere magical on MacOS. +It is stored under the standard user configuration path. Usually +`~/.config/flow` on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere magical +on MacOS. There are commands to open the various configuration files, so you don't have to -manually find them. Look for commands starting with `Edit` in the command palette. +manually find them. Look for commands starting with `Edit` in the command +palette. -File types may be configured with the `Edit file type configuration` command. You -can also create a new file type by adding a new `.conf` file to the `file_type` -directory. Have a look at an existing file type to see what options are available. +File types may be configured with the `Edit file type configuration` command. +You can also create a new file type by adding a new `.conf` file to the +`file_type` directory. Have a look at an existing file type to see what options +are available. Logs, traces and per-project most recently used file lists are stored in the standard user application state directory. Usually `~/.local/state/flow` on @@ -167,16 +177,20 @@ kitty_mod ctrl+alt For Ghostty each conflicting binding has to be reconfigured individually. # Features -- fast TUI interface. no user interaction should take longer than one frame (6ms) (even debug builds) +- fast TUI interface. no user interaction should take longer than one frame + (6ms) (even debug builds) - tree sitter based syntax highlighting -- linting (diagnostics) and code navigation (goto definition) via language server +- linting (diagnostics) and code navigation (goto definition) via language + server - multi cursor editing support -- first class mouse support (yes, even with a scrollbar that actually works properly!) (Windows included) +- first class mouse support (yes, even with a scrollbar that actually works + properly!) (Windows included) - vscode compatible keybindings (thanks to kitty keyboard protocol) - vim compatible keybindings (the standard vimtutor bindings, more on request) - user configurable keybindings - excellent unicode support including 2027 mode -- hybrid rope/piece-table buffer for fast loading, saving and editing with hundreds of cursors +- hybrid rope/piece-table buffer for fast loading, saving and editing with + hundreds of cursors - theme support (compatible with vscode themes via the flow-themes project) - infinite undo/redo (at least until you run out of ram) - find in files @@ -197,5 +211,5 @@ For Ghostty each conflicting binding has to be reconfigured individually. ![Discord](https://img.shields.io/discord/1214308467553341470) -Join our [Discord](https://discord.com/invite/4wvteUPphx) server or use the discussions section here on GitHub -to meet with other Flow users! +Join our [Discord](https://discord.com/invite/4wvteUPphx) server or use the +discussions section here on GitHub to meet with other Flow users! From c159a9d29485f1e93a6533d565a60e19cd3979ba Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 10:52:09 +0200 Subject: [PATCH 2/7] docs: add a Documentation section to the readme --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46e487d..e197180 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,23 @@ zig build -Doptimize=ReleaseSafe -Dtarget=aarch64-linux-musl --prefix zig-out/aa When cross-compiling zig will build a binary with generic CPU support. -[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow) + +# Documentation + +## User manual + +A basic user manual is available inside flow. You can open it with the +`Open help` command (F1). + +## Development Resources + +Also, additional developer resources can be found on the Flow Control website at +[flow-control.dev/docs](https://flow-control.dev/docs/). + +There is also an AI generated developer guide at +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow). +Accuracy may vary. Check details against the referenced source code. + # Running Flow Control From 182788a43984348e41cec0b10c2efd84c0d9e411 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 11:12:43 +0200 Subject: [PATCH 3/7] docs: move the install/download section of README.md to the website --- README.md | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e197180..41d0330 100644 --- a/README.md +++ b/README.md @@ -17,29 +17,9 @@ and is my daily driver for most things coding related. # Download / Install -Binary release builds are found here:[neurocyte/flow/releases](https://github.com/neurocyte/flow/releases/latest) - -Fetch and install the latest release to `/usr/local/bin` with the installation -helper script: - -```shell -curl -fsSL https://flow-control.dev/install | sh -``` - -Nightly binary builds are found here: [neurocyte/flow-nightly/releases](https://github.com/neurocyte/flow-nightly/releases/latest) - -Install latest nightly build and (optionally) specify the installation -destination: - -```shell -curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --dest ~/.local/bin -``` - -See all avalable options for the installer script: - -```shell -curl -fsSL https://flow-control.dev/install | sh -s -- --help -``` +There is an [installation guide](https://flow-control.dev/installation) on the +main website, and source, release and nightly build binary +[downloads](https://flow-control.dev/downloads). Or check your favorite local system package repository. From fa01b13c6a96713f52ee983c075faf048a24994e Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 11:42:08 +0200 Subject: [PATCH 4/7] fix: update flow-syntax to add smd file extension --- build.zig.zon | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index d3b9973..e2c8c0b 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,8 +6,8 @@ .dependencies = .{ .syntax = .{ - .url = "git+https://github.com/neurocyte/flow-syntax?ref=master#45d79d41562f3d9dcc53c7e2c38d7d829a2b2834", - .hash = "flow_syntax-0.1.0-X8jOoY0TAQDl5k1-sO2KfcxrECQAsjwocoRmh3sbwEoi", + .url = "git+https://github.com/neurocyte/flow-syntax?ref=master#9106b13b4c98b145229ad643e7869f29c7b0816b", + .hash = "flow_syntax-0.1.0-X8jOoZQTAQCV2bjyceUHrRl_iu41imzTDLGT5R-XwT_9", }, .flags = .{ .url = "git+https://github.com/neurocyte/flags?ref=main#984b27948da3e4e40a253f76c85b51ec1a9ada11", From a48b680f5754a2fbf7d21d3666b6db51bba822c2 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 11:42:31 +0200 Subject: [PATCH 5/7] docs: update zig version in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 41d0330..8f38d33 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Or check your favorite local system package repository. Make sure your system meets the requirements listed above. -Flow builds with zig 0.15.1 at this time. Build with: +Flow builds with zig 0.15.2 at this time. Build with: ```shell zig build -Doptimize=ReleaseSafe From f15c9adb6ac684193b634f2522a3731b8c896ccc Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 11:42:51 +0200 Subject: [PATCH 6/7] docs: re-organize README.md --- README.md | 115 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 8f38d33..8125a78 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,43 @@ # Flow Control: a programmer's text editor -This is my Zig text editor. It is under active development, but usually stable -and is my daily driver for most things coding related. +This is my Zig text editor. It is under active development, but very stable +and is my daily driver for almost everything. [![Announcement](https://img.youtube.com/vi/iwPg3sIxMGw/maxresdefault.jpg)](https://www.youtube.com/watch?v=iwPg3sIxMGw) +# Features +- fast TUI interface. no user interaction should take longer than one frame + (6ms) (even debug builds) +- tree sitter based syntax highlighting +- linting (diagnostics) and code navigation (goto definition) via language + server +- multi cursor editing support +- first class mouse support (yes, even with a scrollbar that actually works + properly!) (Windows included) +- vscode compatible keybindings (thanks to kitty keyboard protocol) +- vim compatible keybindings (the standard vimtutor bindings, more on request) +- user configurable keybindings +- excellent unicode support including 2027 mode +- hybrid rope/piece-table buffer for fast loading, saving and editing with + hundreds of cursors +- theme support (compatible with vscode themes via the flow-themes project) +- infinite undo/redo (at least until you run out of ram) +- find in files +- command palette +- stuff I've forgotten to mention... + +# Features in progress (aka, the road to 1.0) +- completion UI/LSP support for completion +- persistent undo/redo +- file watcher for auto reload + +# Features planned for the future +- multi tty support (shared editor sessions across multiple ttys) +- multi user editing +- multi host editing + + # Requirements - A modern terminal with 24bit color and, ideally, kitty keyboard protocol support. Kitty, Foot and Ghostty are the only recommended terminals at this @@ -53,30 +85,19 @@ zig build -Doptimize=ReleaseSafe -Dtarget=aarch64-linux-musl --prefix zig-out/aa When cross-compiling zig will build a binary with generic CPU support. -# Documentation +The output binary is: -## User manual +``` +zig-out/bin/flow +``` -A basic user manual is available inside flow. You can open it with the -`Open help` command (F1). - -## Development Resources - -Also, additional developer resources can be found on the Flow Control website at -[flow-control.dev/docs](https://flow-control.dev/docs/). - -There is also an AI generated developer guide at -[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow). -Accuracy may vary. Check details against the referenced source code. +It is statically built (by default) and contains all the required tree-sitter parsers +and queries. No additional runtime files are required. # Running Flow Control -The binary is: - -```shell -zig-out/bin/flow -``` +The Flow Control binary is called `flow`. Place it in your path for convenient access: @@ -128,6 +149,27 @@ Show supported language names with `--list-languages`. See `flow --help` for the full list of command line options. + +# Documentation + +## User manual + +A basic user manual is available inside flow. You can open it with the +`Open help` command (F1). + +It is also available in the website [documentation]{https://flow-control.dev/docs/} +section. + +## Development Resources + +Additional developer resources can be found on the Flow Control website at +[flow-control.dev/docs](https://flow-control.dev/docs/). + +There is also an AI generated developer guide at +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow). +Accuracy may vary. Check details against the referenced source code. + + # Configuration Configuration is mostly dynamically maintained with various commands in the UI. @@ -148,8 +190,10 @@ Logs, traces and per-project most recently used file lists are stored in the standard user application state directory. Usually `~/.local/state/flow` on Linux and %APPDATA%\Roaming\flow on Windows. + # Key bindings and commands +Press `F1` to view the online manual. Press `F4` to switch the current keybinding mode. (flow, vim, emacs, etc.) Press `ctrl+shift+p` or `alt+x` to show the command palette. Press `ctrl+F2` to see a full list of all current keybindings and commands. @@ -159,6 +203,7 @@ file and open it for editing. Save your customized keybinds under a new name in the same directory to create an entirely new keybinding mode. Keybinding changes will take effect on restart. + # Terminal configuration Kitty, Ghostty and most other terminals have default keybindings that conflict @@ -172,36 +217,6 @@ kitty_mod ctrl+alt For Ghostty each conflicting binding has to be reconfigured individually. -# Features -- fast TUI interface. no user interaction should take longer than one frame - (6ms) (even debug builds) -- tree sitter based syntax highlighting -- linting (diagnostics) and code navigation (goto definition) via language - server -- multi cursor editing support -- first class mouse support (yes, even with a scrollbar that actually works - properly!) (Windows included) -- vscode compatible keybindings (thanks to kitty keyboard protocol) -- vim compatible keybindings (the standard vimtutor bindings, more on request) -- user configurable keybindings -- excellent unicode support including 2027 mode -- hybrid rope/piece-table buffer for fast loading, saving and editing with - hundreds of cursors -- theme support (compatible with vscode themes via the flow-themes project) -- infinite undo/redo (at least until you run out of ram) -- find in files -- command palette -- stuff I've forgotten to mention... - -# Features in progress (aka, the road to 1.0) -- completion UI/LSP support for completion -- persistent undo/redo -- file watcher for auto reload - -# Features planned for the future -- multi tty support (shared editor sessions across multiple ttys) -- multi user editing -- multi host editing # Community From fb482bd5659227eb111c0427c108b30e968b7a29 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 21:09:03 +0200 Subject: [PATCH 7/7] docs: sync readme with website --- README.md | 81 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 8125a78..023f065 100644 --- a/README.md +++ b/README.md @@ -7,44 +7,57 @@ and is my daily driver for almost everything. # Features -- fast TUI interface. no user interaction should take longer than one frame - (6ms) (even debug builds) -- tree sitter based syntax highlighting -- linting (diagnostics) and code navigation (goto definition) via language - server -- multi cursor editing support -- first class mouse support (yes, even with a scrollbar that actually works - properly!) (Windows included) -- vscode compatible keybindings (thanks to kitty keyboard protocol) -- vim compatible keybindings (the standard vimtutor bindings, more on request) -- user configurable keybindings -- excellent unicode support including 2027 mode -- hybrid rope/piece-table buffer for fast loading, saving and editing with - hundreds of cursors -- theme support (compatible with vscode themes via the flow-themes project) -- infinite undo/redo (at least until you run out of ram) -- find in files -- command palette -- stuff I've forgotten to mention... -# Features in progress (aka, the road to 1.0) -- completion UI/LSP support for completion -- persistent undo/redo -- file watcher for auto reload - -# Features planned for the future -- multi tty support (shared editor sessions across multiple ttys) -- multi user editing -- multi host editing +- **Lightning Fast** TUI with ≤6ms frame times, **low latency** input handling + and smooth **animated scrolling** +- Intuitive UI with **tabs**, **scrollbars** and **palettes** with full + **mouse** support for all UI elements +- Support for more than **70 programming languages**, **zero + configuration** needed, via **tree-sitter** powered syntax highlighting +- **Language Server Protocol** pre configured support for most language servers +- Powerful **multi-cursor** editing and integrated **clipboard history** +- Powerful configurable keybinding system that supports **modal** and + **non-modal** editing styles +- Multiple pre-configured **keybinding modes** + - Flow Control - GUI IDE style bindings (similar to vscode) + - Emacs + - Vim + - Helix + - User created +- Hybrid rope/piece-table buffer system, edit **very large files** with + **thousands of cursors** +- Infinite **undo** (at least until you run out of ram) +- Full **unicode** support, including support for the kitty text sizing protocol +- Plenty of **themes** included and support for vscode themes via the flow-themes project +- Runs on **Linux, FreeBSD, MacOS, Windows and Android** (under termux) with + easy **cross-compilation** to all supported targets # Requirements -- A modern terminal with 24bit color and, ideally, kitty keyboard protocol - support. Kitty, Foot and Ghostty are the only recommended terminals at this - time. Most other terminals will work, but with reduced functionality. -- NerdFont support. Either via terminal font fallback or a patched font. -- Linux, MacOS, Windows, Android (Termux) or FreeBSD. -- A UTF-8 locale + +- A modern terminal with **24bit color** and, ideally, **kitty keyboard + protocol** support. **Kitty**, **Foot** and **Ghostty** are the recommended + terminals at this time. **Zellij** also works well. Most other terminals will + work, but likely with reduced functionality. +- **NerdFont** support. Either via terminal font fallback or a patched font. +- A **UTF-8** locale + + +# Roadmap + +See our [devlog](/devlog/2025) for on-going updates from the development team. + +## In Development + +- LSP completion support +- Persistent undo/redo +- File watcher integration + +## Future + +- Collaborative editing +- Plugin system +- Multi-terminal sessions # Download / Install