From 8df841ad723f1e263ac185fa5666e8667122ada0 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 15 Oct 2025 20:58:58 +0200 Subject: [PATCH] major rework of the website content --- content/community.smd | 10 ++ content/docs/index.smd | 52 ++++++++++ content/downloads.smd | 34 +++++++ content/index.smd | 184 ++++++----------------------------- content/installation.smd | 94 ++++++++++++++++++ layouts/templates/base.shtml | 14 +-- 6 files changed, 222 insertions(+), 166 deletions(-) create mode 100644 content/community.smd create mode 100644 content/downloads.smd create mode 100644 content/installation.smd diff --git a/content/community.smd b/content/community.smd new file mode 100644 index 0000000..3157c06 --- /dev/null +++ b/content/community.smd @@ -0,0 +1,10 @@ +--- +.title = "Community", +.date = @date("2025-10-15T12:24:45+02:00"), +.author = "CJ van den Berg", +.layout = "index.shtml", +.draft = false, +--- + +Join our [Discord server](https://discord.com/invite/4wvteUPphx) +or discuss on [GitHub Discussions](https://github.com/neurocyte/flow/discussions) diff --git a/content/docs/index.smd b/content/docs/index.smd index b980cc6..f28b9b2 100644 --- a/content/docs/index.smd +++ b/content/docs/index.smd @@ -15,6 +15,58 @@ command. The manual is included here for convenience. * [Flow Control online help](/docs/help) +## Basic Usage +```bash +flow file.zig:42 # Open at line 42 +flow --language zig CMakeLists.txt # Force file type +flow --list-languages # Show all supported languages +flow --help # List of command line options +``` + + +## Key Controls +| Command | Action | +|---------------------------|----------------------| +| `F1` | Open online manual | +| `F4` | Switch input mode | +| `Ctrl+Shift+P` or `Alt+x` | Command palette | +| `Ctrl+F2` | View all keybindings | + +Run the `Edit keybindings` command to save the current keybinding mode to a +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. + + +## 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/FreeBSD/MacOS. %APPDATA%\Roaming\flow on Windows. + +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. + +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 +Linux/FreeBSD/MacOS and %APPDATA%\Roaming\flow on Windows. + +Kitty, Ghostty and most other terminals have default keybindings that conflict +with common editor commands. We highly recommend rebinding them to keys that are +not generally used inside TUI applications. + +For Kitty rebinding `kitty_mod` is usually enough: +``` +kitty_mod ctrl+alt +``` + + ## Developer Resources * [Architecture overview](/docs/architecture) diff --git a/content/downloads.smd b/content/downloads.smd new file mode 100644 index 0000000..c6691f3 --- /dev/null +++ b/content/downloads.smd @@ -0,0 +1,34 @@ +--- +.title = "Downloads", +.date = @date("2025-10-15T11:14:32+02:00"), +.author = "CJ van den Berg", +.layout = "index.shtml", +.draft = false, +--- + +See the [installation guide](/installation) for instructions on downloading and +installing with the installer script. + +## Releases + +- [codeberg.org](https://codeberg.org/neurocyte/flow/releases/latest) (binaries & source) +- [github.com](https://github.com/neurocyte/flow/releases/latest) (binaries & source) + +Or check your favorite local system package repository. +See [repology](https://repology.org/project/flow-control/versions) for available +versions. + + +## Nightly builds + +- [flow-control.dev](https://git.flow-control.dev/neurocyte/flow-nightly/releases/latest) (source only) +- [codeberg.org](https://codeberg.org/neurocyte/flow-nightly/releases/latest) (binaries & source) +- [github.com](https://github.com/neurocyte/flow-nightly/releases/latest) (binaries & source) + + +## Source Code + +- [flow-control.dev](https://git.flow-control.dev/neurocyte/flow) +- [github.com](https://github.com/neurocyte/flow) +- [codeberg.org](https://codeberg.org/neurocyte/flow) +- [sr.ht (sourcehut)](https://git.sr.ht/~neurocyte/flow) diff --git a/content/index.smd b/content/index.smd index 216b230..44d6664 100644 --- a/content/index.smd +++ b/content/index.smd @@ -8,172 +8,48 @@ ## a programmer's text editor -Flow Control is under active development, but usually very stable. +Flow Control is under active development, but very stable. []($video.siteAsset('video/flow-control.mp4').controls(true)) + ## 🚀 Features -- **Lightning Fast** TUI with ≤6ms response times -- **Tree-sitter** powered syntax highlighting +- **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 -- Multi-cursor editing & mouse support -- Cross-platform (Linux/macOS/Windows/Android/FreeBSD) -- Multiple keybinding modes - - Flow Control (common GUI IDE style bindings) +- 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 - - Custom user bindings -- Hybrid rope/piece-table buffer system + - User created +- Hybrid rope/piece-table buffer system, edit **very large files** with + **thousands of cursors** +- Full **unicode** support, including support for the kitty text sizing protocol +- 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 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 - -## 📦 Installation - -### Linux, MacOS and FreeBSD - -Fetch and install the latest release to `/usr/local/bin` with the installation helper script: - -``` -curl -fsSL https://flow-control.dev/install | sh -``` - -Install the latest nightly build: - -``` -curl -fsSL https://flow-control.dev/install | sh -s -- --nightly -``` - -with debug symbols: - -``` -curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --debug -``` - -See all avalable options for the installer script: - -``` -curl -fsSL https://flow-control.dev/install | sh -s -- --help -``` - -Install the installer for easy updating of flow: - -``` -sudo curl -fsSL -o /usr/local/bin/update-flow https://flow-control.dev/install -sudo chmod +x /usr/local/bin/update-flow -update-flow -``` - -At the top of the installer are variables to pre-answer the installation questions. -Configure them to your liking. - - -### Windows - -For Windows the installer scripts are a little different. - -Fetch and install the latest release to `%AppData%/Roaming/flow/bin`: - -``` -Invoke-RestMethod "https://flow-control.dev/install.ps1" | Invoke-Expression -``` - -Install the latest nightly build: - -``` -Invoke-RestMethod "https://flow-control.dev/install-nightly.ps1" | Invoke-Expression -``` - -Install the latest nightly build with pdb debug symbol files: - -``` -Invoke-RestMethod "https://flow-control.dev/install-debug.ps1" | Invoke-Expression -``` - -The Windows installer will also install itself as `update-flow.ps1` so you can just -run `update-flow` in a terminal to update to the latest release or nightly. - - -### Prebuilt Binaries -- Stable: [Releases](https://github.com/neurocyte/flow/releases/latest) -- Nightly: [Nightly Builds](https://github.com/neurocyte/flow-nightly/releases/latest) - -Or check your favorite local system package repository. - -### Build from Source -```bash -# Basic build -zig build -Doptimize=ReleaseSafe - -# Cross-compile examples -zig build -Dtarget=x86_64-windows --prefix zig-out/win64 -zig build -Dtarget=aarch64-linux-musl --prefix zig-out/arm-linux -``` - -The binary is: - -``` -zig-out/bin/flow -``` - -It is statically built (by default) and contains all the required tree-sitter parsers -and queries. No additional runtime files are required. Place it in your path for convenient -access. - -## 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/FreeBSD/MacOS. %APPDATA%\Roaming\flow on Windows. - -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. - -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 -Linux/FreeBSD/MacOS and %APPDATA%\Roaming\flow on Windows. - -Kitty, Ghostty and most other terminals have default keybindings that conflict -with common editor commands. We highly recommend rebinding them to keys that are -not generally used inside TUI applications. - -For Kitty rebinding `kitty_mod` is usually enough: -``` -kitty_mod ctrl+alt -``` - -## 🛠️ Basic Usage -```bash -flow file.zig:42 # Open at line 42 -flow --language zig CMakeLists.txt # Force file type -flow --list-languages # Show all supported languages -flow --help # List of command line options -``` - -## ⌨️ Key Controls -| Command | Action | -|---------------------------|----------------------| -| `F4` | Switch input mode | -| `Ctrl+Shift+P` or `Alt+x` | Command palette | -| `Ctrl+F2` | View all keybindings | - -Run the `Edit keybindings` command to save the current keybinding mode to a -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. +- 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 @@ -184,5 +60,3 @@ changes will take effect on restart. - Plugin system - Multi-terminal sessions -## 💬 Community -Join our [Discord server](https://discord.com/invite/4wvteUPphx) or discuss on [GitHub Discussions](https://github.com/neurocyte/flow/discussions) diff --git a/content/installation.smd b/content/installation.smd new file mode 100644 index 0000000..7679cdd --- /dev/null +++ b/content/installation.smd @@ -0,0 +1,94 @@ +--- +.title = "Installation", +.date = @date("2025-10-15T11:14:32+02:00"), +.author = "CJ van den Berg", +.layout = "index.shtml", +.draft = false, +--- + +- [Linux, MacOS, FreeBSD and Termux](#posix) +- [Windows](#windows) +- [Source](#source) +- [Tarball install](#tarball) + +[]($section.id("posix")) +## Linux, MacOS, FreeBSD and Termux + +Fetch and install the latest release with the installation helper script: + +``` +curl -fsSL https://flow-control.dev/install | sh +``` + +Install the latest nightly build: + +``` +curl -fsSL https://flow-control.dev/install | sh -s -- --nightly +``` + +with debug symbols: + +``` +curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --debug +``` + +See all avalable options for the installer script: + +``` +curl -fsSL https://flow-control.dev/install | sh -s -- --help +``` + +Install the installer for easy updating of flow: + +``` +sudo curl -fsSL -o /usr/local/bin/update-flow https://flow-control.dev/install +sudo chmod +x /usr/local/bin/update-flow +update-flow +``` + +At the top of the installer are variables to pre-answer the installation +questions. Configure them to your liking. + + +[]($section.id("windows")) +## Windows + +For Windows the installer scripts are a little different. + +Fetch and install the latest release to `%AppData%/Roaming/flow/bin`: + +``` +Invoke-RestMethod "https://flow-control.dev/install.ps1" | Invoke-Expression +``` + +Install the latest nightly build: + +``` +Invoke-RestMethod "https://flow-control.dev/install-nightly.ps1" | Invoke-Expression +``` + +Install the latest nightly build with pdb debug symbol files: + +``` +Invoke-RestMethod "https://flow-control.dev/install-debug.ps1" | Invoke-Expression +``` + +The Windows installer will also install itself as `update-flow.ps1` so you can +just run `update-flow` in a terminal to update to the latest release or nightly. + + +[]($section.id("source")) +## Build from Source + +See the [Building section of `README.md`](https://git.flow-control.dev/neurocyte/flow/src/branch/master/README.md#building) +in the source repository for build instructions. + + +[]($section.id("tarball")) +## Manual install from tarballs or zip files + +See the [downloads](/downloads) page for binaries that you can manually install. +Just download, unpack, and place the binary anywhere you want. There are no +runtime files required and configuration directories and files are created on +demand. + diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml index 3a18db8..c970265 100644 --- a/layouts/templates/base.shtml +++ b/layouts/templates/base.shtml @@ -15,23 +15,15 @@