Repository navigation
JSheets 0.2.2
Pre-release
Pre-release
JSheets is a desktop spreadsheet for people who know Excel well, with DuckDB as its calculation engine and a built-in MCP server so AI agents can build and check workbooks. This is the first public release. It is a pre-release for Linux x86-64 only, and it also runs on WSL Ubuntu.
Claude Opus 5.5, using only the JSheets MCP tools, solved 355 of the 400 SpreadsheetBench Verified tasks (88.8%) on a build from just before this release. This release fixes the JSheets bugs that run found.
Install
curl -LO https://github.com/matsonj/jsheets-releases/releases/download/v0.2.2/jsheets-0.2.2-linux-x86_64.tar.gz
curl -LO https://github.com/matsonj/jsheets-releases/releases/download/v0.2.2/jsheets-0.2.2-linux-x86_64.tar.gz.sha256
sha256sum -c jsheets-0.2.2-linux-x86_64.tar.gz.sha256
tar -xzf jsheets-0.2.2-linux-x86_64.tar.gz
./jsheets-0.2.2-linux-x86_64/jsheets-desktop [file.jsheets | file.xlsx] [--mcp [port]]It needs glibc 2.35 or later and a desktop with OpenGL.
New since 0.2.0
- Ranges between reference expressions:
A1:INDEX(A:A,n),INDEX(r,i):INDEX(r,j)andA2:OFFSET(A2,2,0)now calculate. This was the most common formula JSheets couldn't read in the benchmark. - Excel tables: structured references such as
Sales[Amount]calculate, tables import and export, and they survive inserted and deleted rows and columns. - External workbook links calculate from the values the file saved for the linked workbook, and export unchanged. An agent can ask to update them from the linked file.
- Dates typed as text such as
3/4/2026are read as dates, in the workbook's day and month order. That order comes from the system locale for new workbooks and is inferred on import; agents can change it through MCP, and the change can be undone. - More formulas match Excel: lookups with computed
INDEXarguments,MATCHover arrays,SUMIFandCOUNTIFover arrays, and empty last arguments. Of the 157 benchmark workbooks with formulas, 145 now match the values Excel saved, up from 110.
Fixed
- Deleting columns in a transaction that had already changed cells failed with "another transaction has altered this table". Deleting many columns of a wide sheet no longer uses gigabytes of memory per column.
- Export after deleting rows could run for over 10 minutes when a whole column was formatted. It now takes about a second.
Known gaps
- A long run of single-column deletes in one transaction on a very wide sheet (hundreds of deletes of 1,600 columns) fails with an out-of-memory error. Delete the columns as one range instead.
- Some dynamic-array chains of
LET,FILTER,UNIQUE,VSTACKand similar functions are rejected, and one such chain filled down a column gave blanks instead of counts. Check these results against Excel. - 3D references such as
Sheet1:Sheet3!B2aren't supported yet. - Last-digit differences: Excel sometimes rounds a product to 15 significant digits where JSheets keeps the exact IEEE result, so
=5.35*1.5gives 8.024999999999999 instead of 8.025.
Check results that matter against Excel until these are fixed.