Saves & exports

full-count keeps all of your data in a single directory under your home folder: ~/.full-count/. Nothing is written anywhere else, and nothing is ever uploaded.

~/.full-count/
├── saves/       # JSON game saves
└── exports/     # HTML scorecards

Save files

Press F2 during scoring to open the save prompt. Type a name, press Enter, and the current game state (plus every snapshot for replay) is written to ~/.full-count/saves/<name>.json.

Name sanitization

For example, Cubs vs Sox — 2026-04-22 becomes Cubs-vs-Sox--2026-04-22.json.

Resuming

full-count --load cubs-vs-sox           # bare name, looked up in ~/.full-count/saves/
full-count --load cubs-vs-sox.json      # with extension — same lookup
full-count --load ./backups/cubs.json    # relative path — used as-is
full-count --load /abs/path/cubs.json    # absolute path — used as-is

Lookup order when the argument is a bare name or filename:

  1. If the argument exists on disk as-is, use it.
  2. Otherwise look inside ~/.full-count/saves/.
  3. If there's no extension, also try appending .json.
  4. If none of those exist, proceed to the load call so you get a clear error.

Save file format

Save files are plain JSON — human-readable, diff-friendly, and stable enough to be edited by hand if you really want to. A save contains two top-level fields:

Tip

Backing up ~/.full-count/ is enough. It's fully portable between machines — copy the directory over and your saves and exports come with you.

HTML scorecard export

When you end a game (X from the scoring screen) you land on the summary screen. From there you can export a paper-style HTML scorecard that looks like a traditional printed scorebook.

Exports are written to ~/.full-count/exports/<away>-vs-<home>.html. Open it in any browser and hit Ctrl/Cmd + P if you want to print it.

The scorecard renders:

Note

The export is self-contained HTML + inline CSS. No JavaScript, no external assets. You can email it, upload it, or check it into a league repo and it just works.