Repository navigation
FrameWork v0.1.9
Download
Pick the file for your computer. No account, terminal, or toolchain needed.
| Your system | Download |
|---|---|
| macOS (Apple Silicon: M1 or later) | the one ending in .dmg |
| Windows | the one ending in -setup.exe |
| Ubuntu / Debian / Mint | the one ending in .deb |
| Fedora / RHEL / openSUSE | the one ending in .rpm |
| Any other Linux | the one ending in .AppImage |
First launch
These builds are not code-signed yet, so your system will warn you
the first time. Nothing is wrong — an unsigned app is simply one
that has not paid for a certificate. You only do this once.
macOS. Open the .dmg and drag FrameWork to Applications. The
first launch is refused. Open System Settings → Privacy &
Security, scroll to the bottom, and click Open Anyway next to
the FrameWork message, then confirm. It opens normally after that.
Windows. Run the installer. If a blue "Windows protected your
PC" box appears, click More info, then Run anyway.
Linux. Double-click the .deb or .rpm to install it through
your software centre. For the .AppImage, right-click it →
Properties → Permissions → tick Allow executing file as program,
then double-click.
Opening documents
FrameWork documents are .fw files. The .dmg, -setup.exe,
.deb and .rpm installers register the file type, so
double-clicking a document opens it. The .AppImage does not — an
AppImage installs nothing system-wide, so open documents from
inside the app.
Launching FrameWork on its own starts a throwaway canvas and raises
the Data library — Save As is what turns it into a real document.
What's new
-
Opening a CSV or TSV no longer has a size limit, and no longer has two
behaviours. Every file — twenty rows or two million — opens the same way:
read where it lies, editable in place, and writable back to with Update
original. Files over 20,000 rows used to open read-only, because a smaller
one was copied into the workbook cell by cell and a large one could not be.
Nothing is copied now, so the limit had nothing left to protect: workbooks
that open a file are dramatically smaller, they save in a fraction of the
time, and a correction to a large table costs the same as a correction to a
small one. A whole number read from a file is now a whole number on the way
out, where a small file used to write5back as5.0. -
Settle and reclaim data files in the Project panel now writes the
corrections you have made to a table's data file into a file of their own,
before it clears out the staged files nothing points at any more. Values on
the canvas do not change — a correction just stops being a note beside the
file and becomes the file. It happens only when you ask for it, never on
save: saving records what you did, and folding corrections in would throw
away the difference between what the file said and what you changed. Undo
puts the notes back. -
Correcting a value in a table whose rows live in a data file no longer
rewrites that file. A typed-over cell, a struck-out row and a row added at
the end are recorded as small notes against the file instead, so an edit costs
the edit rather than a full read and rewrite of everything around it — and the
file is left exactly as it was. Tables that have a filter or a sort in Wrangle
can now be typed into as well, and a correction lands on the row it was made
on rather than the position that row happened to be at. Notes are dropped if
the underlying file is replaced, since they name rows by position. -
Documents are smaller: a cell with no formula of its own no longer writes one
out as an empty field, which was roughly a quarter of a document holding
literal rows. -
Open a CSV or TSV, fix it, and put the result back, without building a
reusable pipeline first. A stored CSV/TSV opens as an editable table: type
into cells, rename columns, insert and delete rows, and add calculated
columns, filters and sorts. The table's right-click menu then
offers Update original CSV…, which confirms the path once and then
atomically replaces the source file, without leaving a recovery copy. It
always writes the format that file already is. Either way the result joins the
canvas as a clean table with no transformations, while the table you worked in
keeps its input and its Wrangle chain — so saving the workbook keeps the
recipe for next week's file. Neither action is bound to ⌘S, and neither
changes workbook autosave. -
Export frame as… writes any table to a new file as CSV, TSV, Parquet or
NDJSON, chosen in the save dialog, and saves the whole data result: manual
edits, renames, calculated columns, filters and sorts alike. The chooser
offers the table's own source format first, so a table read from Parquet
suggests Parquet. Parquet carries the computed types rather than respelling
everything as text, which makes it the right destination for a result too
large or too typed for CSV. An existing file and the table's own input are
both refused — replacing a file in place is what Update original is for. -
NDJSON joins CSV, TSV and Parquet as a format FrameWork both reads and
writes, including from Finder and the command line, which is how a dump out
of an object store usually arrives. One flat JSON object per line,.jsonl
accepted as the same thing, and the types are JSON's own — a quoted
identifier stays text with no inference rules involved. The schema is decided
after reading every line rather than a leading sample, so a field that is
empty for a thousand records and filled on the last one still types
correctly. A file with nested objects is refused with the field named, rather
than imported into a table that cannot be displayed. -
Opening a data file is now a way to start work. Pick FrameWork from Open
With for a CSV, TSV, Parquet or JSON-lines file, or name one on the command
line, and it opens into an unsaved workbook — including when FrameWork was not
already running, and without leaving an empty Untitled window beside it.
Opening the same file again raises the window already showing it instead of
starting a second, competing draft of the same file. Installing FrameWork does
not change what a double-click on a CSV opens: it adds itself next to whatever
you already use, on Windows as well as macOS, and updating does not quietly
claim those files back. A.fwdocument is FrameWork's own format and still
opens on a double-click. -
Wrangle now starts with Read, which names the input and makes it
changeable. Replace a file with another file or with a database query; choose
how each source column is read — text, integer, number, boolean or date, or
back to whatever the source says — before any transformation runs; and paste
a whole row of column headers, tab-separated or one name per line, to rename
every column in a single undoable edit. Columns whose source names still
match keep their identities and their display names when the input is
replaced. -
Imported values keep their own spelling. A leading-zero identifier such as
0003, a long digit string and an ambiguous date all stay text instead of
being guessed into a number or a date — on the paged import path as well as
the editable one, and including values that first appear long after the
opening rows. A column is read as numeric only when every value in the file
is an unambiguous finite number. Explicit conversions stay where you can see
them, in Read or in Wrangle. -
A linked import — one you asked to keep a connection to — is still read-only
in its cells, because the next refresh replaces them. The boundary is
explained only if you try to type into one, and the explanation names the
file the rows are read from and says what a refresh will do to them. Column
names, calculated columns, filters, sorts and the rest of Wrangle work on it
normally. -
Map values and Rename columns both create or choose a mapping frame
from the column menu. A mapping frame is an ordinary two-column table: blank
keys match missing values, blank replacements clear them, and you choose
whether unmatched values stay unchanged, go blank, or take custom text.
Mapping a header row renames once, as one undoable edit, and leaves unmatched
names alone. -
Header filters now reach downstream calculations and exports, the same way a
Wrangle filter does. Use a separate frame when you want an independently
filtered result. -
Formula editing keeps its own ⌘Z and ⇧⌘Z history until the formula is
committed, so undoing inside a formula no longer reaches past it into the
document. Typing a decimal point no longer opens function suggestions. -
The inspector starts collapsed, stays collapsed while you edit a column from
the top bar, and overlays the canvas instead of squeezing it: Fit to window
uses the full canvas width, so closing the inspector reveals the rest of a
fitted table without a second fit. The formula bar stays one compact row
until you expand it.