Saving and Opening

The design file

File → Save and Save As… write a .tenon file. Older saves use .tenon.yaml; both open.

The format is YAML, and it is meant to be read:

stock:
  T: 6.35
  SHEET_W: 1150.0
  SHEET_L: 590.0
  MATERIAL: Baltic birch ply
  TOOL: 3.2
  CLR: 0.2
items:
- product: project_box
  quantity: 3
  params:
    L: 310.0
    W: 210.0
    H: 110.0
    LID: slots
    HANDLE: 'yes'

Parameters, not geometry. Opening the file rebuilds every part from these numbers, which is why a design survives a change of material: edit T, and the joinery is regenerated to suit.

It also means designs diff usefully. A commit that changes a box's height shows as one changed line, and two versions of a job can be compared without opening either.

Recent files

The app keeps a recent-files list, so the design you were working on last is one click away. That list is the only thing Tenon stores locally on your behalf — everything else about a design is in the design file.

Where files are read and written

Saving, opening and exporting are done by Tenon's local server, not by the window. You choose the path in the file dialog and the server does the writing.

This is invisible in normal use — the app and its server are the same machine. It only matters if you point TENON_API_URL at a server on another host, in which case the paths you choose are interpreted on that machine, and save/open/export will not do what you expect. Running against a remote server is not a supported setup for that reason.

Keeping designs with a project

A design references its artwork and fonts by path, resolved against the design's own directory. Keeping the .tenon file, its SVGs and its fonts in one folder makes the whole job portable — copy the folder, and it opens anywhere.