Pre-1.0: a minor version may rename or remove. When it does, the migration is one line here.
0.1.0 (2026-09-16)
The first release. What is in it:
- Cells and layout.
Sheetshow.Cell,Sheetshow.Coord,Sheetshow.RangeandSheetshow.A1, giving 0-indexed coordinates, inclusive ranges, quoted sheet names and open-ended ranges, withSheetshow.Value(numbers, text, booleans, formulas, dates and times as serial numbers) andSheetshow.Style(a plain map). Layout onSheetshow:row,col,rows,records,to_rows,stack,beside,pad_below,pad_right,shift,put_sheet,put_style,max_rowandmax_col. - Plans.
Sheetshow.plan/2turns cells into backend-neutral ops (AddSheet,DeleteSheet,PutCells,AppendRows,DeleteRows,SetDimensions), onePutCellsper run so a write never clears a neighbour, andSheetshow.run/2carries a plan out in one request.Sheetshow.read_cells/2reads cells with everything about them;read_rows/2reads computed values, one or several ranges in one request. - Backends.
Sheetshow.Workbookover Google Sheets (Sheetshow.Google, OTP's:httpc, TLS verified explicitly, the quota as:rate_limited), over an in-memory spreadsheet that doubles as the test double, and over.xlsxfiles, read one tab at a time and written back with every untouched part copied across compressed, on a local file or a WebDAV server, whereIf-Matchmakes a write conditional.Sheetshow.Backend.capabilities/1says what each promises. - A database on a tab.
Sheetshow.Schemaas a keyword list;Sheetshow.Log, an append-only tab whose state is the fold over its rows, with a cursor read and a view tab;Sheetshow.Table, mutable rows found again by id, with soft delete,refresh/2and a planner that orders hard deletes bottom-up;Sheetshow.ULIDfor client-generated ids. - Credentials.
Sheetshow.ServiceAccountandSheetshow.UserAccount, both reduced to oneSheetshow.Token;Sheetshow.OAuthbuilds the consent URL and reads the answer, with PKCE,access_type=offlineandprompt=consentas the defaults. - Guides that run. Two quick starts, against Google and against an
.xlsxfile; setting up Google; a cookbook; the case for Sheets instead of Postgres; and what Sheetshow can promise. Everyelixirblock in them is executed by the test suite. A cheatsheet generated from the compiled modules, andusage-rules.mdfor an agent's context. - No dependencies, no processes, no macros.