An app from Excelano
Tommy Flyleaf
Edit the tree. Keep the file.
A TOML editor that shows the file as a tree and edits every value by its kind, then writes back a file with your comments, your key order, your whitespace and your quoting untouched everywhere you did not edit. For Linux and the browser today; macOS and Windows follow.
Free and open source, with the code on GitHub. The browser version opens your file in the tab and sends nothing anywhere.
The comments are the point
TOML is the configuration format of Cargo, of Python's pyproject.toml, of Hugo, of a long list of tools that chose it because a person is expected to read and write the file. So the file carries comments, blank lines that group things, keys in the order someone thought of them, and a quoting style that was chosen for a reason. All of that is what a tool loses when it parses the file into a map, changes one entry, and prints the map back out.
Tommy Flyleaf edits the document, not a map of it. It shows the file as a tree, and an edit to one value changes that value and nothing else: the comment beside it stays beside it, the blank line above the next table stays, and a key you did not touch is written with the same quotes it had. What a save writes is on screen the whole time, beside the tree, so you can watch the file stay itself.
See it in action
What you can do
Read the file as a tree
Tables, arrays of tables, inline tables and dotted keys become sections you open and close. A file with more than a couple of hundred entries opens with its sections closed, so a large one is a list of headings until you reach into it.
Edit every value by its kind
Strings, integers, floats, booleans, and the four shapes of date and time each get a field that knows what it holds. A value's kind menu offers the conversions it allows: a string that reads as a number can become one, a table can become an inline table and back, and nothing is offered that would not parse.
Add, rename, remove
Keys are added to any table, renamed in place with their comments kept beside them, and removed. Arrays are editable sections: push an element, change one, take one out.
Comments are fields
A comment above a key, beside a value, or at the end of a table is shown where it belongs and edited there. Add one where there is none, empty one to remove it. The blank lines around a comment stay as they were.
Undo and redo
Ctrl+Z and Ctrl+Shift+Z, through everything: values, keys, kinds, comments. Edits to one row run together, so a word typed into a field is one step back rather than a letter at a time.
See what a save will write
The source pane shows the file as saving would write it, and follows the tree: the row you are on is highlighted in the text, so a change is visible in both places before you keep it.
Save without disturbance
A save keeps your comments, key order, whitespace and quoting everywhere you did not edit, and a byte order mark, Windows line endings, or a missing final newline are written back the way they were found. The file is written beside the original and swapped over it in one step, with its permissions kept; a read-only file is refused rather than quietly replaced.
Measured against the TOML test suite
Every valid TOML 1.1 document in the official toml-test suite round-trips through Tommy Flyleaf byte for byte, except seven the underlying parser itself reformats. Those seven are named in the test and reported upstream, not hidden.
Or open it in your browser
The same application, compiled to WebAssembly and served as three static files, runs at excelano.com/flyleaf/try. It is the editor in full, not a demonstration of it: open a file through the browser's picker, edit it, and save, which downloads the result. The file does not leave the tab. There is no server behind the page, nothing is uploaded, and closing the tab is the end of it.
It opens with a sample file, a bindery's job ticket, that has a comment in every place TOML allows one and a key of every kind, so there is something to edit before you bring your own.
No network. No account. Nothing to send.
Tommy Flyleaf makes no network connection of any kind. There is no server behind it, no account to create, no analytics, no telemetry, no crash reporting, and no third-party SDK. It reads the file you open and writes where you tell it to, and it remembers nothing between one session and the next: not a folder, not a filename, not a setting. The browser version is the same code in a page, and the page sends nothing anywhere.
The full statement is at excelano.com/legal/#flyleaf, and because Tommy Flyleaf is open source, every line of it is verifiable in the source at github.com/excelano/flyleaf.
How to get it
Debian and Ubuntu
The Linux package is on its way to the Excelano apt repository, where it will install as flyleaf and register as a handler for .toml files. Until it lands it builds from source, below.
macOS and Windows
The macOS and Windows builds follow, on the Mac App Store and the Microsoft Store as with the other Excelano desktop applications. Until then, both platforms build from source.
From source
Tommy Flyleaf is written in Rust and builds with a Rust toolchain alone; nothing in its dependency tree compiles C. With Rust installed, one command builds and installs it from crates.io:
cargo install flyleaf
The README covers building from a checkout, the browser build, and the Linux desktop integration.
Behind the tool
Tommy Flyleaf began as the metadata editor inside Slipcase Desktop, where the description travelling with a document is a TOML file and the rule is that editing it must not disturb what somebody else wrote in it. That editor turned out to be the general-purpose TOML editor nobody had built: the existing tools are editor plugins, command-line path setters, and configuration screens tied to one application. So it was lifted out into a crate of its own, and Slipcase Desktop now uses the same crate. One editor across the Excelano applications, not two that drift.
The name is a person's, a bookbinder's apprentice, and a flyleaf is the blank page inside a book's cover: the one place in a bound book meant for someone to write on later. That is the job. The book is somebody else's; write on the page provided, and leave the rest as it was bound.
I built it because the configuration files I meet in migration and integration work are read by people as much as by programs, and the tooling that edits them by machine keeps throwing away the half that was for the people. If that is a snag your team keeps hitting, it is the kind of work I am glad to take on.
For technical users
Tommy Flyleaf is free and MIT-licensed, written in Rust on egui and toml_edit. It is two crates on crates.io: flyleaf-core is the document model and the edit operations with no user interface, and flyleaf is the editor as an egui widget, with the application behind a default feature. An application that embeds the widget hands it a policy naming the keys it protects, which is how Slipcase Desktop keeps a container's required keys from being renamed or removed. The source, the plan the project is built against, and its record of what the underlying parser changes in a document are at github.com/excelano/flyleaf.
Support
For questions, bug reports, or feedback, email support@excelano.com. Replies typically arrive within one business day.
Issues and feature requests can also be filed directly in the GitHub repository: github.com/excelano/flyleaf/issues.