Skip to content

Commit

Permalink
merge main into development (#643)
Browse files Browse the repository at this point in the history
* fixed local files not properly saving file list

* minor tweaks

* fix black bar in quadrants

* initial work

* copy as png

* lint

* improve menu

* make menus prettier; fix bugs with tranform

* prettier

* fix test

* better vertical centering of header numbers

* make header selection color more pronounced

* Catch TypeError on Decimal Conversion

* increase heading font size

* change Console labels

* update Documentation tab

* Continue to refine DOCUMENTATION tab

* refine docs

* remove support for special variable `result` update examples

* fix unit test

* tweaks

* more tweaks

* pr feedback tweaks

* accept statements as last line for output

* quiet_trailing_semicolon=False

* formatting bar style tweaks

* copy as png icon and command palette

* fix expenses file

* refactor

* tweaks

* anchor context menu in the right location, close moreMenu when FloatingContextMenu closes

* correct

* lint

* crop copy as png perfectly

* more tweaks

* more tweaks/updates

* update examples to be based off main

* remove extra app.save()

* update to support multiple schemas

* hide cell type outlines in png

* prettier

* fixed viewport decelerate behavior when pointerup on negative heading resize

* fix copy as png for large texture sizes

* added snackbar

* prettier

* show loading in CodeEditor

* fix unmatched (

* fix: update context menu icons

* Update CodeEditor.tsx

* properly center spinner

* ignore caps for cell type filter

* initial run at converting typescript types to zod types

* add zod to deps

* rename GridFileSchema type to GridFile

* pull version from the schema

* Update useLocalFiles.ts

* more tweaks

* further tweaks

* Update useLocalFiles.ts

* Update CodeEditor.tsx

* Update CodeEditor.tsx

* Update index.js

* refactor: app structure at load time

* feat: add support for downloading any file in memory

* revert flags change

* refactor: sort type keys optionally, then alphabetically

* Delete FileLoadingComponent.tsx

* rename generic "things"

* tweak download icons

* fixes copy paste encoding bug

* remove unused code

* remove unused prop

* Update FileMenu.tsx

* Update useLocalFiles.ts

* more tweaks

* Update useLocalFiles.ts

* don't throw when you can't find the grid

* change error to warning

* tweaks

* Update useLocalFiles.ts

* Update app.ts

* update typescript

* fix bug with negative heading resizing moving the viewport

* Fix redo icon in Quadratic menu

* Update useLocalFiles.ts

* Update QuadraticMenu.tsx

* fix logo on mobile

* fix firefox bg problem

* refine CMD + O functionality

* Update FileMenu.tsx

* more tweaks

* rename variables

* Update useLocalFiles.ts

* rename pixi to pixi-assets

* Update useLocalFiles.ts

* fixes a bug deleting the wrong cell when deleting a single cell

* bugfix

* initial commit

* Update useLocalFiles.ts

* Update GridFile.ts

* log contents

* update with tests

* Language gpt4 api (#386)

* basic AI support

* refine UI

* refine prompt

* update prompt

* cleanup code

* improve prompt

* Show API errors in console

* show loading in CodeEditor

* add express api

* configure for heroku

* point heroku to subdirectory quadratic-api

* point to correct server

* cleanup

* proxy AI requests via quadratic-api

* update error msg

* add API_URL env var

* make audience optional

* audience remove in api, require audience in react

* set CORS to *

* sentry only on prod

* properly set AUTH0_AUDIENCE

* pass valid AUDIENCE value

* use audience on API

* add ai tab

* style tweaks

* UI improvements

* streaming AI response

* submit on enter, clear prompt

* add some placeholder UI

* hide AI Assistant unless writing python code

* add rate limiting by user

* improvements

* fix margin

* small features

* cleanup frontend, prep api for production

* add docs, hide AI if no auth

* fix import error

* add start log

* fix unit tests

* Attach user to Sentry for error reporting

* update UI, log requests

* remove console.log

* log server errors

* jim's feedback

* update Experimental chip

---------

Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* refactor: file schemas (#403)

* back to files shortcut (#414)

* strip newlines before rendering cell contents (#417)

* Add Amplitude Analytics (#418)

* Add Amplitude Analytics

* update comment

* Update README.md (#420)

* Add MixPanel Analytics (#423)

* add MixPanel analytics

* reduce events fired on load

* recognize 'none' env var as undefined

* fix: redo command for windows (#391)

* Mixpanel Dev Fix (#427)

* feat: add read-only dialog for mobile (#428)

* File Backup on Quadratic Cloud (#425)

* File Backup on Quadratic API

* add prisma command to Procfile

* when backing up file record version and created / modified dates

* add comment

* send JSON response

* lower file size limit

* increase requests allowed to 30 per minute

* feat: add mixpanel people analytics (#431)

* Trigger GitHub Actions on PRs from external contributors (#436)

* Strip currency prefix to mitigate #410 (#411)

Co-authored-by: David Kircos <davidkircos@gmail.com>

* Fix typo in default spreadsheets (#435)

Co-authored-by: David Kircos <davidkircos@gmail.com>

* selection auto complete (#379)

* selection auto complete (WIP)

* fix selecting in open space

* delete cells for autocomplete

* text series and number series expand

* properly finds text series if selection wraps

* copy other cell types besides text

* Update colors.ts (#430)

* tweak drag UI interaction

* fixed bug with expanding empty cells

* fix issues with showing delete cells

* fixing a few more bugs

* fix another bug related to horizonta/vertical selection

* improve horizontal/vertical shrinking

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* feat: preserve `file` query param through auth0 process (#412)

* bug: Fix paste in safari (#438)

* fix: paste behavior in safari

* lint

---------

Co-authored-by: himself65 <himself65@outlook.com>

* fix: indicate "delete" when shrinking horizontally (#439)

* fix: message for failure to load local file (and global snackbar) (#433)

* fix: use `.key` rather than `.code` (#434)

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* feat: add support for `Delete` key (#453)

* Add sentry to api (#459)

* add sentry to API

* better capture errors instead of failing

* add @sentry/tracing to package mgr

* Add sentry to api (#460)

* add sentry to API

* better capture errors instead of failing

* add @sentry/tracing to package mgr

* fix file access error

* fix: allow wider array of characters for initial cell input (#451)

* chore: update browserslist (#461)

* Dont call captureException with a INFO level message (#464)

* chore: support hosting via vercel (#467)

* fix: gridSettings (#470)

* feat: AI ui/ux enhancements (#466)

* fix: support spaces when importing file from url

* fix: close editor when creating new file (#465)

* fix: changing settings properly rerenders cells (#475)

* fix: bug with upgrade file in validateGridFile (#476)

* Implement range operator `a..b` (#444)

* Improve formula parse error messages
* Implement `**` formula operator
* Bump Rust version

`<<`, `>>`, and `**` don't exist in Excel so they aren't implemented.

Well `**` sort of exists, but it's used for scientific notation which is
cursed as heck and I don't want to change float parsing right now.

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* Fix async grid access during formulas + refactors (#360)

* Reorder formula functions to match official docs
* Refactor formulas
* Add `col!` and `pos!` macros
* Add `parse_formula()` wasm function
* Expose `column_name` and `column_from_name` to JS
* Bump quadratic-core version
* Replace `CELL` with Excel-compatible `INDIRECT`

This fixes a number of issues:
- Grid access no longer blocks, so `INDIRECT` function should actually work
- Documentation is now included alongside function definitions, so we can auto-generate formula function documentation soon

* feat: save cursor position with undo/redo (#455)

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* feat: implement LSP functions in Rust (#477)

* Refactor formulas
    * Reorder formula functions to match official docs
    * Add some missing formula documentation
    * Documentation is now included alongside function definitions, so we can auto-generate formula function documentation soon
    * Add examples for all formula functions
* Add `parse_formula()` wasm function
* Expose `column_name` and `column_from_name` to JS
* Implement LSP autocomplete via Rust
* Replace `CELL` with Excel-compatible `INDIRECT`
    * Make grid access async so it should actually work now
* Autogenerate Notion docs for formulas

quadratic-core internal changes:
* Add macro for JS value manipulation
* Add `col!` and `pos!` macros

* refactor: move some formula tests to specific files (#498)

* Fix formulas not automatically updating (#499)

* Fix formulas not automatically updating

* feat: new example files (#503)

* fix: handle escape while filename renaming (#495)

Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* feat: selection auto complete multiple cells (#452)

* Add regression test for #499 (#501)

* Add regression test for #499

* Implement `ABS`, `SQRT`, `PI`, `TAU`, and trigonometric functions (#497)

* Implement trigonometric functions
* Add `ABS`, `PI`, and `TAU`
* Add `DEGREES` and `RADIANS` functions
* Add `SQRT`

* chore: remove debug menu (#508)

* Ignore empty values in variadic formula functions (`SUM`, `PRODUCT`, `COUNT`, and `AVERAGE`) (#507)

* Remove `**`, which shouldn't have been in there anyway
* Fix `SUM`, `PRODUCT`, and `COUNT` semantics
* Test formula math operators with empty string

* Alignment (#318)

* fix up cellLabels

* automatic number alignment

* overflow right

* alignment to the left

* cleaning up

* alignment

* fix jumping text

* fix formatting

* additional fixes

* apply prettier

* cleans up flags

* make FloatingContextMenu a bit smaller

* remove dependency loading (caused bugs)

* cleaning up floating menu

* prettier

* fix bugs

* fix bugs with debug elements when in presentation view

* apply prettier

* fix isNaN function for strings

* standardize usage of isStringANumber for data formatting

* fix alignment calculated based on original value, not formatted value

* fix clipping; remove axis from heading resize

* prettier

* reset debugFlags

* remove debug setting from .env

* fixed cellLabels

* lint

* update examples formatting

* fix python.grid

* update schema

* remove render_dependency in v1_2 file

* cleaning up after removing GridRenderDependency

* update readme to trigger build

* use examples from main

* Update README.md

* fix capitalization

* remove right alignment for numbers

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* Fixes bug with v1_2 format (#521)

* Fixes bug with v1_2

* place updateFn in correct place

* fix tests; add v1_1 -> v1_2 test

* fix: delete empty cells not in undo/redo stack (#494)

* fix: autocomplete formatting (#524)

* Fixes bug with v1_2

* place updateFn in correct place

* fix tests; add v1_1 -> v1_2 test

* added formatting

---------

Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* fix: typo in FileMenuTabs.tsx (#500)

Changed "file format that be saved" to "file format the is saved"

* feat: confirm unsaved changes (#525)

Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* fix clipping calculation to the right (#523)

Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* docs: improve README and CONTRIBUTING (#527)

* better resolution for quadrants for windows (#542)

* Refactor overlap detection (#543)

* redoing clip calculation

* clipping improvements

* initial commit (#538)

Co-authored-by: David Kircos <davidkircos@gmail.com>

* feat: autocomplete borders (#548)

* Double click to size column to fit (#546)

* function to get cells content width

* implement column to fit

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>

* feat: add Open AI example file (#531)

* Update app.ts

* Update app.ts

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>

* Improve performance update cells (#529)

* use sets instead of array

* removed duplicated line

* create new helper function and use it

* Update getKey.ts

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>

* feat: add a feedback widget (#450)

* initial commit

* start

* tweaks

* Update feedback.ts

* Update debugFlags.ts

* move logic into api layer

* add v0 prefix for feedback

* remove email

* add minrows

* don't show feedback on mobile

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>

* feat: move command palette out of header into main menu (#535)

* fix: 489

* updates

* fix: support null in array_output file schema (#491)

* Horizontal scroll (#533)

* implement horizontal scroll

* use key consts

* disable on mac

* use utils isMac

---------

Co-authored-by: David Kircos <davidkircos@gmail.com>

* feat: replace input with div[contenteditable] (#454)

* fix: properly resize negative rows  (#553)

Fixes #550

* feat: double click to reset row (#552)

* Refactor formula functions and values (#532)

* Remove `**`, which shouldn't have been in there anyway
* Add more tests for criteria strings

I also caught a bug: escaping using `~` wasn't working for `?` and `*`.

* Add a bazillion tests
* Fix `SUM`, `PRODUCT`, and `COUNT` semantics
* Test formula math operators with empty string
* Refactor formula function definitions
* Improve div-by-zero error message
* Test 1x1 array cell reference behavior

* fix: change schema to support wider variety of array_output (#561)

* Add `AVERAGEIF`, `COUNTIF`, `SUMIF`, and `COUNTBLANK` (#492)

* refactor: improve selection and misc. performance (#545)

* fix: clip when cell has error (#554)

* chore: remove extra focusGrid call (#562)

* fix: sentry errors (#563)

* feat: post user feedback to slack (#566)

* feat: update BottomBar.tsx (#573)

* Allow omitting arguments in formula functions (#555)

* Fix `ATAN2(0, 0)` semantics (#571)

* Fix `ATAN2(0, 0)` semantics
* Document `ATAN(0, 0) = 0`

* Add boolean parsing in formulas (#572)

* Add boolean parsing in formulas
* Test bool parsing
* Omit parens in autocomplete for `TRUE` and `FALSE`

* fixes app.settings.setInteractionState (#577)

* chore: upgrade API to node 20 and typescript 5 (#574)

* Add `HLOOKUP`, `VLOOKUP`, and `XLOOKUP` (#569)

* fix: allow any for array_output in older versions of the schema (#580)

* fix: allow any for array_output

* Update validateGridFile.ts

* Update validateGridFile.ts

* Update validateGridFile.test.ts

* fix: copying of large data (#588)

* feat: better zero states around code (#541)

* tweaks (#596)

Co-authored-by: Hactar <6060305+HactarCE@users.noreply.github.com>

* feat: enhance AI assistant ui/x (#583)

* feat: mixpanel proxy (#586)

* fixed typo and bump index (#560)

Co-authored-by: Jim Nielsen <jimniels@gmail.com>
Co-authored-by: David Figatner <david@yopeyopey.com>

* fixed selection (#557)

before this change, selecting a cell past (-999,0) in the -x direction resulted in a mis-selection by 1.

This manually fixes this issue.

I discovered a similar issue with -y values past (0,-999) that multiplies the selection by 5.

Co-authored-by: David Figatner <david@yopeyopey.com>

* feat: show active cell selection formula results in bottom bar (#594)

* Update BottomBar.tsx

* Update BottomBar.tsx

* Update BottomBar.tsx

* Update BottomBar.tsx

* add console

* Update BottomBar.tsx

* Fix COUNT semantics add COUNTA

* Bump Rust version

* Use COUNTA formula in bottom bar

* move ActiveSelectionStats to a new component

* further clean up code

* Do not compute stats for >100 cells

* Increase selection stats limit to 250

---------

Co-authored-by: HactarCE <6060305+HactarCE@users.noreply.github.com>
Co-authored-by: David Kircos <davidkircos@gmail.com>

* increase timeout for font loading (#607)

* python web-worker port (#587)

* chore: add setting so VSCode automatically sorts imports #612

* Highlight cells referenced in code (#559)

* add cell reference multicursor

* create hook to extract tokens from model

* add cell highlight colors

* add helpers to parse formulaNotation

* add hook and state to check if ref valid

* add cell highlights to editor interaction atom

* add method to draw highlights

* Add range to cell matches

* remove highlighted cell from editorInteractionState

* create new atom for highlighted cells

* create hook for editor selection change

* add new hook to codeEditor

* add new state to pixiappsettings

* add cell fill on selection

* add update for editorHighlightedCells

* fix expression to exclude $

* fix larger cell values

* design tweaks

* fix prettier issues

* export function

* refactor to parse_formula

* remove parser and add return type

* use new modified function

* remove unused regex

* Update colors.ts

* add python cell parser

* add selectedCellType to hook

* add python parser and fix cell highlight on change range

* change type

* Reverts python parser commits
5af393b
daec383
ae056a9

* fix selected cell change fill

---------

Co-authored-by: Jim Nielsen <jimniels@gmail.com>
Co-authored-by: David Kircos <davidkircos@gmail.com>

* fixes bug #611 (#621)

---------

Co-authored-by: David Figatner <david@yopeyopey.com>
Co-authored-by: Jim Nielsen <jimniels@gmail.com>
Co-authored-by: HactarCE <6060305+HactarCE@users.noreply.github.com>
Co-authored-by: Peter Mills <waveminded@users.noreply.github.com>
Co-authored-by: Bart Broere <mail@bartbroere.eu>
Co-authored-by: himself65 <himself65@outlook.com>
Co-authored-by: Nicholas <63423605+Nerptastic@users.noreply.github.com>
Co-authored-by: Juan Manuel Bercoff <jmbercoff@gmail.com>
Co-authored-by: ajboots <98557530+ajboots@users.noreply.github.com>
  • Loading branch information
10 people committed Aug 17, 2023
1 parent 9ed5846 commit 944e6b5
Show file tree
Hide file tree
Showing 287 changed files with 21,645 additions and 16,960 deletions.
5 changes: 5 additions & 0 deletions .env_example
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
REACT_APP_GOOGLE_ANALYTICS_GTAG=G-0000000000
REACT_APP_AMPLITUDE_ANALYTICS_API_KEY=
REACT_APP_MIXPANEL_ANALYTICS_KEY=
REACT_APP_SENTRY_DSN=https://xxxxxxxxxxxxxxxxxx@xxxxxxxxxxxx.ingest.sentry.io/xxxxxxxxxxxx
REACT_APP_DEBUG=0 // use =1 to enable debug flags
REACT_APP_AUTH0_DOMAIN=auth-dev.quadratic.to
REACT_APP_AUTH0_CLIENT_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
REACT_APP_AUTH0_AUDIENCE=https://localhost:8000
REACT_APP_AUTH0_ISSUER=https://auth-dev.quadratic.to/
REACT_APP_QUADRATIC_API_URL=http://localhost:8000
6 changes: 5 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: Lint Check
on: push
on:
push:
branches:
- main
pull_request:

jobs:
lint:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/test-python.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
name: Python Tests
on: push
on:
push:
branches:
- main
pull_request:

jobs:
test_python:
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/test-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@ name: Rust Tests

# This workflow run tests and build for each push

on: push
on:
push:
branches:
- main
pull_request:

jobs:
test_rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Update local toolchain
run: |
rustup update
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/test-unit.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
name: Unit Tests
on: push
on:
push:
branches:
- main
pull_request:

jobs:
test_unit:
runs-on: ubuntu-latest-8-cores
runs-on: ubuntu-latest-4-cores

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
node-version: '19'
cache: 'npm'

- name: Update local rust toolchain
run: |
rustup update
Expand All @@ -23,9 +26,11 @@ jobs:
rustc --version
cargo clippy --version
- run: npm install

- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
run: |
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
npm run build:wasm:nodejs
- run: npm run build:wasm:nodejs
- run: npm install
- run: npm run test:unit:ci
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,9 @@ venv/*

# Generated Rust files
quadratic-core/target/

# Generated JS files
quadratic-api/node_modules/
quadratic-api/.env
quadratic-api/.env.local
quadratic-api/dist
33 changes: 33 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"runtimeVersion": "19.9.0",
"name": "vscode-jest-tests.v2",
"request": "launch",
"args": [
"--runInBand",
"--watchAll=false",
"--testNamePattern",
"${jest.testNamePattern}",
"--runTestsByPath",
"${jest.testFile}"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"disableOptimisticBPs": true,
"internalConsoleOptions": "neverOpen",
"env": {
"NODE_OPTIONS": "--experimental-vm-modules"
},
"program": "${workspaceFolder}/node_modules/.bin/jest",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest"
}
}
]
}
8 changes: 7 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,14 @@
"cSpell.words": [
"dgraph",
"Fuzzysort",
"hljs",
"openai",
"pixi",
"pixiapp",
"subquadrant",
"subquadrants"
]
],
"editor.codeActionsOnSave": {
"source.organizeImports": true,
}
}
69 changes: 44 additions & 25 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,46 @@ Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approacha

In this guide, you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.

## Getting started
If you have any problems getting the project to run locally, please create an issue to document the problem. See ["Create an issue"](#create-an-issue) below.

Make sure you can run Quadratic locally from the source.
## Setup

1. Install npm, [rustup](https://www.rust-lang.org/tools/install), and [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)
2. Run `rustup target add wasm32-unknown-unknown`
3. Build the Rust/WASM `npm run build:wasm`
4. run `npm install`
1. Install NPM
2. Install [rustup](https://www.rust-lang.org/tools/install)
3. Install [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)
4. `rustup target add wasm32-unknown-unknown` to install the WASM toolchain

To run the web app: `npm start`
## Run Quadratic front-end locally

To run the Electron app: `npm run dev`
1. `npm run build:wasm` to compile the Rust code
2. `npm install` to install dependencies (run again when updating Rust)
3. `npm start` to run in browser or `npm run dev` to run with Electron

If you have any problems getting the project to run locally, please create an issue to document the problem. See "Create an issue" below.
### Run Quadrtic server locally

### Issues for Feature Requests and Bugs
1. `cd quadratic-api`
2. `npm i`
3. Install [postgress.app](https://postgresapp.com/) (follow instructions on website)
4. Configure `./.env` & `./quadratic-api/.env` values, including update to `DATABASE_ENV` variable to point at your local postgres db.
5. `npm run prisma:migrate`
6. `npm start`

Quadratic uses GitHub issues to track all feature requests and bugs.
### Run tests (TypeScript)

#### Create an issue
1. `npm run build:wasm:nodejs` to compile the Rust code
2. `npm install` to install dependencies (run again when updating Rust)
3. `npm run test:all` to run all tests or `npm run test:unit` to run just unit tests

### Run tests (Rust)

1. `cd quadratic-core`
2. `cargo test --workspace`

## Feature requests and bugs

Quadratic uses [GitHub issues](https://github.com/quadratichq/quadratic/issues) to track all feature requests and bugs.

### Create an issue

If you have a feature request or spot a problem, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue does not exist, please open a new issue!

Expand All @@ -37,34 +57,33 @@ When reporting a bug, please provide:
- What's the actual result?
- Additional details / screenshots

#### Solve an issue
### Solve an issue

Scan through our [existing issues](https://github.com/quadratichq/quadratic/issues) to find one that interests you. You can narrow down the search using `labels` as filters. See [Labels](/contributing/how-to-use-labels.md) for more information.

#### How to contribute code
### How to contribute code

1. Fork the repository.

1. Run Quadratic locally. See "Getting Started" above.

1. Create a new working branch and start making your changes!

1. Lint and format your changes using Prettier.
2. Run Quadratic locally. See "Getting Started" above.
3. Create a new working branch and start making your changes!
4. Lint and format your changes using Prettier.

### Pull Request

When you're finished with your changes:

1. Create a pull request.

1. Link your PR to the GitHub Issue [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are working on an Issue.

1. Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge.
2. Link your PR to the GitHub Issue [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are working on an Issue.
3. Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge.

We review all PRs quickly, so we will give you feedback in short order!

### Your PR is merged

Congratulations :tada::tada: Quadratic is better because of you :sparkles:.
Congratulations! :tada::tada: Quadratic is better because of you. :sparkles:

Once your PR is merged, contributors will be publicly visible on the GitHub Page.

## Quadratic is hiring

Check out our open roles ⟶ [careers.quadratichq.com](https://careers.quadratichq.com)
46 changes: 15 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![E2E Tests](https://github.com/quadratichq/quadratic/actions/workflows/test-e2e.yml/badge.svg) ![Python Tests](https://github.com/quadratichq/quadratic/actions/workflows/test-python.yml/badge.svg) ![Unit Tests](https://github.com/quadratichq/quadratic/actions/workflows/test-unit.yml/badge.svg)

![Twitter Follow](https://img.shields.io/twitter/follow/QuadraticHQ)
![quadraticlogo4 1](https://user-images.githubusercontent.com/3479421/162037216-2fea1620-2310-4cfa-96fb-31299195e3a9.png)

## ![quardatic icon small](https://user-images.githubusercontent.com/3479421/162039117-02f85f2c-e382-4ed8-ac39-64efab17a144.svg) **_The Data Science Spreadsheet_**
## ![quardatic icon small](https://user-images.githubusercontent.com/3479421/162039117-02f85f2c-e382-4ed8-ac39-64efab17a144.svg) **_The data science spreadsheet_**

Infinite data grid with Python, JavaScript, and SQL built-in. Data Connectors to pull in your data.

Take your data and do something useful with it as quickly and easily as possible!

![Screen Shot 2022-04-07 at 4 15 52 PM](https://user-images.githubusercontent.com/3479421/162328478-198f27d1-4ab8-4334-8420-b082e68edefc.png)
<img width="1552" alt="Quadratic in a standalone macOS window; on the left is a table of stock prices, and on the right is a code editor containing Python code to fetch the stock prices from Polygon's API" src="https://user-images.githubusercontent.com/3479421/221301059-921ad96a-878e-4082-b3b9-e55a54185c5d.png">

## Online Demo
## Online demo

We have a hosted version of the `main` branch available online.

**Try it out! --> <https://app.quadratichq.com>**
**Try it out! <https://app.quadratichq.com>**

## Community

Join the conversation on our Discord channel -> <https://discord.gg/quadratic>
Join the conversation on our Discord channel <https://discord.gg/quadratic>

## Documentation

All of our documentation is available at [docs.quadratichq.com](https://docs.quadratichq.com)

- [Quick Start Guide](https://docs.quadratichq.com/quick-start)
- [Python Cell Reference](https://docs.quadratichq.com/reference/python-cell-reference)
- [Pandas DataFrames in Quadratic](https://docs.quadratichq.com/reference/python-cell-reference/pandas-dataframe)
- [Development Updates](https://docs.quadratichq.com/development-updates)
Read the documentation ⟶ <https://docs.quadratichq.com>

# What is Quadratic?

Expand All @@ -44,20 +39,7 @@ Quadratic has no environment to configure. The grid runs entirely in the browser
- Quickly mix data from different sources
- Explore your data for new insights

# Getting Started

### Run Quadratic Locally

1. Install npm, [rustup](https://www.rust-lang.org/tools/install), and [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)
2. Run `rustup target add wasm32-unknown-unknown`
3. Build the Rust/WASM `npm run build:wasm`
4. run `npm install`

Run Web `npm start`

Run Electron `npm run dev`

# Development Progress and Roadmap
## Development progress and roadmap

_Quadratic is in ALPHA. For now, we do not recommend relying on Quadratic._

Expand All @@ -67,8 +49,10 @@ _Quadratic is in ALPHA. For now, we do not recommend relying on Quadratic._
- [x] Excel Formula Support (in progress)
- [x] Cell Formatting (issue [#44](https://github.com/quadratichq/quadratic/issues/44))
- [x] Undo / Redo (issue [#42](https://github.com/quadratichq/quadratic/issues/42))
- [ ] SQL Database Connection Support
- [ ] Multiplayer Support
- [ ] Charts and Graphs
- [ ] SQL Database Support
- [ ] AI Auto Complete

**Feature request or bug report?** Submit a [Github Issue](https://github.com/quadratichq/quadratic/issues/new/choose/).

Expand All @@ -78,10 +62,10 @@ Want to learn more about how Quadratic works? Read the [How Quadratic Works](./d

## Examples

There are more example files are located in the `examples` folder in this repo.
There are more example files are in the application file menu. File → Open sample

You can download them and then open them in Quadratic via File > Open Grid
You can download them and then open them in Quadratic via File Open Grid

## Quadratic is Hiring
## Quadratic is hiring

Check out our open roles -> [careers.quadratichq.com](https://careers.quadratichq.com)
Check out our open roles [careers.quadratichq.com](https://careers.quadratichq.com)
1 change: 0 additions & 1 deletion docs/examples/airports_distance.grid

This file was deleted.

1 change: 0 additions & 1 deletion docs/examples/airports_large.grid

This file was deleted.

1 change: 0 additions & 1 deletion docs/examples/expenses.grid

This file was deleted.

1 change: 0 additions & 1 deletion docs/examples/monte_carlo_simulation.grid

This file was deleted.

1 change: 0 additions & 1 deletion docs/examples/python.grid

This file was deleted.

1 change: 0 additions & 1 deletion docs/examples/startup_portfolio.grid

This file was deleted.

Loading

0 comments on commit 944e6b5

Please sign in to comment.