Skip to content

JSheets 0.2.3

Pre-release
Pre-release

Choose a tag to compare

@matsonj matsonj released this 05 Nov 07:05

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 pre-release is the first build for macOS, on Apple Silicon. On Linux it would behave exactly like 0.2.2, so Linux users should stay on 0.2.2.

Install

Download jsheets-0.2.3-macos-arm64.dmg, open it, and drag JSheets to Applications. The app is signed and notarized by Apple, so it opens without warnings. It needs an Apple Silicon Mac with macOS 11 or later.

To run it from a terminal, for example to start the MCP server, use the same binary in the tarball:

curl -LO https://github.com/matsonj/jsheets-releases/releases/download/v0.2.3/jsheets-0.2.3-macos-arm64.tar.gz
curl -LO https://github.com/matsonj/jsheets-releases/releases/download/v0.2.3/jsheets-0.2.3-macos-arm64.tar.gz.sha256
shasum -a 256 -c jsheets-0.2.3-macos-arm64.tar.gz.sha256
tar -xzf jsheets-0.2.3-macos-arm64.tar.gz
./jsheets-0.2.3-macos-arm64/jsheets-desktop [file.jsheets | file.xlsx] [--mcp [port]]

If JSheets is already in Applications, /Applications/JSheets.app/Contents/MacOS/jsheets-desktop takes the same arguments.

Settings are stored in ~/Library/Application Support/JSheets.

New on macOS

  • A Mac app, in a disk image, with its own icon.
  • Shortcuts use ⌘ where Excel for Mac does, for example ⌘C, ⌘S and ⌘D for fill down. Menus show the Mac keys. To get Windows keys, change Shortcuts in Preferences.
  • Bessel and complex functions (BESSELI, BESSELJ, BESSELK, BESSELY, IMSQRT) give the same results as on Linux.

Known gaps

  • Window chrome is not yet Mac-style. The menus sit inside the window instead of the macOS menu bar, and the window controls are on the right. This is planned for 0.2.4.
  • Rounding at exact halves can differ from the Linux build in the last displayed digit. For example, an average of exactly 90.05% shows as 90.1% here and as 90.0% on Linux. The Mac result matches Excel.
  • INDEX(range, 0) on a single row or column returns only its first value instead of the whole row or column, so MATCH(TRUE, INDEX(B2:AK2<0, 0), 0) gives #N/A. Write MATCH(TRUE, B2:AK2<0, 0) or INDEX(B2:AK2<0, 1, 0) instead.
  • Every known gap from 0.2.2 still applies: long runs of single-column deletes on very wide sheets, some dynamic-array chains of LET, FILTER and UNIQUE, 3D references, and last-digit differences from Excel's 15-digit rounding.

Check results that matter against Excel until these are fixed.