Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0d91cc8
Merge tag '3.2.0' into develop
sequba Feb 19, 2026
1fd3ca0
Fix package-lock file
sequba Feb 19, 2026
7616150
Docs: remove CodeSandbox embedded demos and add links to working exa,…
sequba Feb 20, 2026
c96a600
Setup workflow with private tests repo (#1616)
qunabu Mar 4, 2026
4042b04
Fix IRR error when income > sum of payments (#1627)
sequba Mar 5, 2026
266089d
Fix: ADDRESS function ignores defaultValue when user provides empty v…
marcin-kordas-hoc Mar 24, 2026
72db14b
Describe Definition of Done for the code changes (#1642)
sequba Mar 26, 2026
0c1d130
Add TEXTJOIN function with i18n and documentation (#1640)
marcin-kordas-hoc Mar 26, 2026
04180f8
Fix #1629: resolve memory leaks in LazilyTransformingAstService and U…
marcin-kordas-hoc Apr 2, 2026
ca0bb89
Add SEQUENCE built-in function (#1645)
marcin-kordas-hoc Apr 3, 2026
357eee3
Add AI integration docs and reorganize sidebar (#1644)
GreenFlux Apr 9, 2026
736235e
Add hardcoded trial license key (#1649)
sequba Apr 14, 2026
1852159
Add PERCENTILE and QUARTILE function families (#1650)
marcin-kordas-hoc Apr 16, 2026
110a28a
Make VuePress base, dest and sitemap hostname configurable (#1663)
qunabu Apr 28, 2026
8b525cb
Fix Netlify publish dir so /docs/ is reachable (#1664)
qunabu Apr 28, 2026
362df83
HF-85: Implement all database functions (#1652)
marcin-kordas-hoc May 5, 2026
456addd
HF-122: Framework integration guides for React, Angular, Vue, Svelte …
marcin-kordas-hoc May 7, 2026
24121f8
docs: reframe AI SDK page as Vercel integration with prototype status…
GreenFlux May 11, 2026
1b6767f
Refine the AI toolkits landing pages (#1670)
sequba May 11, 2026
bbacfc9
3.3.0
sequba May 11, 2026
3a286f6
Improve wording in the AI toolchains landing pages
sequba May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ test/_setupFiles/*.js

# Auto-generated directories
commonjs
coverage
dist
doc
es
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,12 @@ jobs:
name: audit
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Run audit
run: |
npm run audit
run: npm run audit
10 changes: 4 additions & 6 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@ jobs:
name: build-docs
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Install dependencies
run: |
npm ci
run: npm ci

- name: Build docs
run: |
npm run docs:build
run: npm run docs:build
10 changes: 4 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,15 @@ jobs:
install-command: [ i, ci ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Install dependencies
run: |
npm ${{ matrix.install-command }}
run: npm ${{ matrix.install-command }}

- name: Build
run: |
npm run bundle-all
run: npm run bundle-all
10 changes: 4 additions & 6 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@ jobs:
name: lint
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Install dependencies
run: |
npm ci
run: npm ci

- name: Run linter
run: |
npm run lint
run: npm run lint
76 changes: 76 additions & 0 deletions .github/workflows/performance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Performance
permissions:
contents: read
pull-requests: write

on:
pull_request:
types:
- opened
- reopened
- synchronize # the head branch is updated from the base branch, new commits are pushed to the head branch, or the base branch is changed

jobs:
performance-test:
strategy:
matrix:
node-version: [ '22' ]
os: [ 'ubuntu-latest' ]
name: Test performance
runs-on: ${{ matrix.os }}
steps:
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- name: (base) Checkout main repository
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # https://github.com/actions/checkout/releases/tag/v2.3.4
with:
ref: ${{ github.event.pull_request.base.sha }}

- name: Checkout hyperformula-tests repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
ssh-key: ${{ secrets.DEPLOY_TOKEN }}
repository: handsontable/hyperformula-tests
path: test/hyperformula-tests

- name: Fetch hyperformula-tests and sync branches
run: cd test && ./fetch-tests.sh

- name: (base) Install dependencies
run: npm ci

- name: (base) Run performance tests
run: npm run benchmark:write-to-file base.json

- name: (head) Checkout main repository
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # https://github.com/actions/checkout/releases/tag/v2.3.4
with:
clean: false

- name: (head) Install dependencies
run: npm ci

- name: (head) Run performance tests
run: |
npm run benchmark:write-to-file head.json

- name: Compare the results
run: |
npm run benchmark:compare-benchmarks base.json head.json performance-report.md

- name: Publish a comment - header
uses: marocchino/sticky-pull-request-comment@6804b5ad49d19c10c9ae7cf5057352f7ff333f31 # https://github.com/marocchino/sticky-pull-request-comment/tree/v1.6.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
message: |
## Performance comparison of head (${{ github.event.pull_request.head.sha }}) vs base (${{ github.event.pull_request.base.sha }})

- name: Publish a comment - performance comparison report
uses: marocchino/sticky-pull-request-comment@6804b5ad49d19c10c9ae7cf5057352f7ff333f31 # https://github.com/marocchino/sticky-pull-request-comment/tree/v1.6.0
with:
append: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
path: performance-report.md
10 changes: 4 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,18 @@ jobs:
name: publish-docs
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Install dependencies
run: |
npm ci
run: npm ci

- name: Build docs
run: |
npm run docs:build
run: npm run docs:build

- name: Deploy to GH pages
uses: peaceiris/actions-gh-pages@ba0b7df03e25ff29c924be8149041119e9421ea6 # https://github.com/peaceiris/actions-gh-pages/releases/tag/v3.5.6
Expand Down
48 changes: 36 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,35 @@ jobs:
name: unit-tests
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- name: Checkout main repository
uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Checkout hyperformula-tests repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
ssh-key: ${{ secrets.DEPLOY_TOKEN }}
repository: handsontable/hyperformula-tests
path: test/hyperformula-tests

- name: Fetch hyperformula-tests and sync branches
run: cd test && ./fetch-tests.sh

- name: Install dependencies
run: |
npm ci
run: npm ci

- name: Run tests
run: |
npm run test:ci
run: npm run test:ci -- --coverage


- name: Upload coverage to Codecov
uses: codecov/codecov-action@6004246f47ab62d32be025ce173b241cd84ac58e # https://github.com/codecov/codecov-action/releases/tag/v1.0.13
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

browser-tests:
strategy:
Expand All @@ -46,17 +61,26 @@ jobs:
name: browser-tests
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@56899e050abffc08c2b3b61f3ec6a79a9dc3223d # https://github.com/actions/setup-node/releases/tag/v1.4.4
with:
node-version: ${{ matrix.node-version }}

- name: Checkout main repository
uses: actions/checkout@722adc63f1aa60a57ec37892e133b1d319cae598 # https://github.com/actions/checkout/releases/tag/v2.0.0

- name: Checkout hyperformula-tests repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
ssh-key: ${{ secrets.DEPLOY_TOKEN }}
repository: handsontable/hyperformula-tests
path: test/hyperformula-tests

- name: Fetch hyperformula-tests and sync branches
run: cd test && ./fetch-tests.sh

- name: Install dependencies
run: |
npm ci
run: npm ci

- name: Run tests
run: |
npm run test:browser
run: npm run test:browser
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.idea/
.vscode
/commonjs/
/coverage/
/dist/
/doc/
/docs/api/
Expand All @@ -21,3 +22,5 @@ node_modules/
*.iml
dev*.html
.DS_Store

/test/hyperformula-tests/
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v16
v18
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [Unreleased]

## [3.3.0] - 2026-05-18

### Added

- Added 12 database functions: DCOUNT, DSUM, DAVERAGE, DMAX, DMIN, DGET, DPRODUCT, DCOUNTA, DSTDEV, DSTDEVP, DVAR, DVARP. [#1652](https://github.com/handsontable/hyperformula/pull/1652)
- Added new functions: PERCENTILE, PERCENTILE.INC, PERCENTILE.EXC, QUARTILE, QUARTILE.INC, QUARTILE.EXC. [#1650](https://github.com/handsontable/hyperformula/pull/1650)
- Added `maxPendingLazyTransformations` configuration option to control memory usage by limiting accumulated transformations before cleanup. [#1629](https://github.com/handsontable/hyperformula/issues/1629)
- Added a new function: TEXTJOIN. [#1640](https://github.com/handsontable/hyperformula/pull/1640)
- Added a new function: SEQUENCE. [#1645](https://github.com/handsontable/hyperformula/pull/1645)

### Fixed

- Fixed a memory leak in `LazilyTransformingAstService` where the transformations array grew unboundedly, causing increasing memory usage over time. [#1629](https://github.com/handsontable/hyperformula/issues/1629)
- Fixed a memory leak in `UndoRedo` where `oldData` entries for evicted undo stack entries were never cleaned up, causing increasing memory usage over time. [#1629](https://github.com/handsontable/hyperformula/issues/1629)
- Fixed the IRR function returning `#NUM!` error when the initial investment significantly exceeds the sum of returns. [#1628](https://github.com/handsontable/hyperformula/issues/1628)
- Fixed the ADDRESS function ignoring `defaultValue` when arguments are syntactically empty (e.g., `=ADDRESS(2,3,,FALSE())`). [#1632](https://github.com/handsontable/hyperformula/issues/1632)

## [3.2.0] - 2026-02-19

### Added
Expand Down
17 changes: 17 additions & 0 deletions DEV_DOCS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@

Random notes and things to know useful for maintainers and contributors.

## Definition of Done for the code changes

Each change to the production code (bugfixes, new features, improvements) must include these elements. They must be present in the pull request BEFORE requesting the code review.

- changes to the production code
- including changes to all supported language packs in `src/i18n/languages` directory (if applicable)
- automatic tests
- for bugfixes: at least one test reproducing the bug
- for new features: a set of tests describing the feature specification precisely
- pull requests from external contributors should include tests in `tests/` directory (they will be moved to the private repository by the internal team)
- internal team adds tests directly to the private repository (through a separate pull request)
- updates to documentation related to the change
- for breaking changes: a section in the migration guide
- technical documentation in the form of the jsdoc comments (high-level description of the concepts used in the more complex code fragments)
- changelog entry
- pull request description

## Sources of the function translations

HF supports internationalization and provides the localized function names for all built-in languages. When looking for the valid translations for the new functions, try these sources:
Expand Down
63 changes: 0 additions & 63 deletions Makefile

This file was deleted.

Loading
Loading