Skip to content

FrameWork v0.1.9

Choose a tag to compare

@github-actions github-actions released this 11 Sep 04:37

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 write 5 back as 5.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 .fw document 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.

Every version