Program in 2D.
Get a high-level, widescreen view of your code, with instant feedback.
Use a grid UI to edit code.
Swap between grid and text representations of your sheet. Save sheets to local disk as plain text files. Works with your existing version control system.
Use functions, objects, data structures and control flow. Consume sheets as backends for websites or as functions in other sheets.
Examples (coming soon!):
- Scenario analysis across arbitrary inputs
- Data of arbitrary length
- Dynamic unique items
- Dynamic sorting
- Fast lookup
- Memoises results
- View Mesh code in Mesh
- View code as a table
Make it your own:
- ~2000 lines of open source, Apache 2.0-licensed code
- CSS theme support
- No install or privacy headaches – runs in your browser with no internet required
- Allow loading and saving
- Anonymous-first. Make it so you don't need to name data to enter it. Right now empty cells generate names, will that change?
- Any code layout changes.
_OUTPUT and just add props via code to cells?
- Figure out whether managing locations and other props in a separate object
- Create short tutorial of how to use and when better than Excel, Google Sheets, etc. [shortcut list]
- Update README, including better-sized GIFs that show off the features, and interop (messaging)
- Libraries (and how to "import" and use without a build process)
- Flush out any remaining cache logic issues, eg:
- Don't recalculate if the cell's a primitive value and it didn't change
- Let's say we override b, then we send in new data in a subsequent recalc. Should b now return to normal?
- What if a cell happens to recalc to the same value as before? Should we not invalidate its calc chain from that point?
- Deleting names has a bug
- Add Mesh to Product Hunt and this free office suite list and other 'self-hosted' app lists
- Figure out whether need to add Apache license to each source file? (+ remove NOTICE?)
- Update boilerplate with latest from app.js
- Scan code for TODOs and comments
- Fix themes being gross in some browsers
- Finish light theme
- Get 'new' working again (as in
- When creating name, check for valid symbols and existing names
- Make sure edit without replacement works on strings, dates etc
- Add back array and object literal support? If so, stop extra brackets being added when add new key to object literal?
- RO table support
- IO and sharing (use Monotreme?):
- Share sheets via url hash
- Override cells via url querystring
- WebDAV and remote servers
- Add highlighting behind occupied cells to show they're taken (eg if empty string or renders to eqivalent)
- Style regex differently
- Make a Mesh electron package
- Click on cells to reference in formula (or move cursor with arrow keys)
- Aggregations - SUM, AVERAGE, etc. Predefine these functions? Have the UI insert them automatically?
- Make it easier to manage dates
- Why lookup tables are awesome (incl use of 'find')
- Copy and paste data in/out
- Guide on setting up a WebDAV server
- Move around cell locations via dragging mouse
- Split reducer table so that each 'state component' has its own column (separate fns?), eg formula bar, cells, etc
- Edit table header to rename
- Empty string entry
- Change add row/col labels so take up less height/width?
- Figure out how to manage row/col widths
- Add row/column indices (useful for counting / IDing). Similarly, way to see the coords of the selected cell?
- Excel -> JS function equivalent table
- APL/K support
- Version that supports TypeScript or all the latest JS features (bigints, realms, etc)
- Figure out how to manage Recast being pasted into the spreadsheet app (how to speed up parsing on change?)
- What to display for cells that have an invisible string? What about objects that have no string rep (eg Array.prototype)?
- Center function symbol in cell?
- Overflow - make expand to literal size?
- Boolean cells - hardcode vs softcode (take into account colour vs background)
- Should there be a function that lets you specify which cells you want the values of? IE don't get it all, all the time (feels wasteful)
- APLers don't use libraries