diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..55ac160 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + engine: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npx tsc --noEmit + - run: npx vitest run + + rust: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - uses: Swatinem/rust-cache@v2 + with: + workspaces: src-tauri + - run: cargo clippy --manifest-path src-tauri/Cargo.toml diff --git a/.gitignore b/.gitignore index 29dd4b6..b8505f2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,9 @@ dist/ src-tauri/target/ src-tauri/gen/ *.log + +# local reference copy of the original macOS Numi bundle — not ours to ship +Contents/ + +# one-off debugging artifacts +scripts/smoke-* diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 7142d22..d584d50 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -114,6 +114,7 @@ snapshot price) plus the mirror list in `src-tauri/src/main.rs`. ## Tests -`npm test` runs ~80 vitest cases over the engine (`src/engine/*.test.ts`): -every expression class, both languages, deterministic injected rates. +`npm test` runs ~94 vitest cases over the engine (`src/engine/*.test.ts`): +every expression class, both languages, deterministic injected rates, +plus a regression suite covering all known-fixed bugs. UI is exercised manually; the engine is where the complexity lives. diff --git a/README.md b/README.md index 73667ff..c54932d 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,8 @@ the sheet total; select a few lines to see just their sum. - **Click a result** to copy it. Copying a line copies it *with* the answer (`rent * 3 = $1,500`). **Ctrl+Shift+C** copies the whole sheet with answers. - **Drag the divider** to resize the results column. -- **Drop a `.numi` or `.txt` file** into the window to open it as a sheet. +- **Drop a `.numi`, `.sum`, `.txt` or `.md` file** into the window to open it + as a sheet. - **Backups are automatic**: a daily snapshot of all sheets (last 14 kept), and deleted sheets sit in a bin for 14 days (configurable) — restore one by dragging the file back in. Settings → Backups opens the folder. @@ -116,7 +117,8 @@ npm run tauri build # build the installer To build from source you need: -- [Node.js](https://nodejs.org/) 20 or newer +- [Node.js](https://nodejs.org/) 22.6 or newer (`npm run icons` relies on + Node's built-in TypeScript support) - [Rust](https://rustup.rs/) (stable, MSVC toolchain) - [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) with the "Desktop development with C++" workload (the MSVC linker) diff --git a/index.html b/index.html index 11d7326..9806666 100644 --- a/index.html +++ b/index.html @@ -52,6 +52,12 @@ +