]> Piment Noir Git Repositories - poolifier.git/log
poolifier.git
3 weeks agofix(build): add explicit rootDir and module/moduleResolution for TS 6.0 compatibility
Jérôme Benoit [Tue, 24 Mar 2026 11:38:10 +0000 (12:38 +0100)] 
fix(build): add explicit rootDir and module/moduleResolution for TS 6.0 compatibility

3 weeks agochore(deps): lock file maintenance (#3161)
renovate[bot] [Tue, 24 Mar 2026 10:54:05 +0000 (11:54 +0100)] 
chore(deps): lock file maintenance (#3161)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 weeks agofix(deps): update all non-major dependencies (#3162)
renovate[bot] [Tue, 24 Mar 2026 01:33:01 +0000 (02:33 +0100)] 
fix(deps): update all non-major dependencies (#3162)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 weeks agofix(deps): update all non-major dependencies (#3160)
renovate[bot] [Mon, 23 Mar 2026 11:14:46 +0000 (12:14 +0100)] 
fix(deps): update all non-major dependencies (#3160)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 weeks agochore(deps): lock file maintenance (#3157)
renovate[bot] [Wed, 18 Mar 2026 18:35:16 +0000 (18:35 +0000)] 
chore(deps): lock file maintenance (#3157)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 weeks agochore(deps): update pnpm/action-setup action to v5 (#3159)
renovate[bot] [Wed, 18 Mar 2026 18:20:37 +0000 (19:20 +0100)] 
chore(deps): update pnpm/action-setup action to v5 (#3159)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 weeks agofix(deps): update all non-major dependencies (#3158)
renovate[bot] [Wed, 18 Mar 2026 17:55:32 +0000 (18:55 +0100)] 
fix(deps): update all non-major dependencies (#3158)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 weeks agochore(deps): update all non-major dependencies (#3156)
renovate[bot] [Tue, 17 Mar 2026 18:15:42 +0000 (19:15 +0100)] 
chore(deps): update all non-major dependencies (#3156)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 weeks agochore: migrate biome configuration schema to 2.4.7
Jérôme Benoit [Sun, 15 Mar 2026 10:59:38 +0000 (11:59 +0100)] 
chore: migrate biome configuration schema to 2.4.7

4 weeks agochore(deps): update dependency lint-staged to ^16.4.0 (#3155)
renovate[bot] [Sun, 15 Mar 2026 10:45:14 +0000 (11:45 +0100)] 
chore(deps): update dependency lint-staged to ^16.4.0 (#3155)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 weeks agochore(deps): update all non-major dependencies (#3154)
renovate[bot] [Sat, 14 Mar 2026 22:45:34 +0000 (22:45 +0000)] 
chore(deps): update all non-major dependencies (#3154)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 weeks agochore(deps): lock file maintenance (#3151)
renovate[bot] [Thu, 12 Mar 2026 16:47:43 +0000 (17:47 +0100)] 
chore(deps): lock file maintenance (#3151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 weeks agochore: update serena project configuration
Jérôme Benoit [Wed, 11 Mar 2026 16:54:43 +0000 (17:54 +0100)] 
chore: update serena project configuration

4 weeks agochore(deps): update pnpm to v10.32.1 (#3153)
renovate[bot] [Wed, 11 Mar 2026 11:46:27 +0000 (12:46 +0100)] 
chore(deps): update pnpm to v10.32.1 (#3153)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agochore(deps): update all non-major dependencies (#3152)
renovate[bot] [Tue, 10 Mar 2026 16:45:39 +0000 (17:45 +0100)] 
chore(deps): update all non-major dependencies (#3152)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agofix(deps): update all non-major dependencies (#3150)
renovate[bot] [Mon, 9 Mar 2026 18:24:20 +0000 (18:24 +0000)] 
fix(deps): update all non-major dependencies (#3150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agofix(deps): update all non-major dependencies (#3149)
renovate[bot] [Sat, 7 Mar 2026 12:11:02 +0000 (13:11 +0100)] 
fix(deps): update all non-major dependencies (#3149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agochore: sync serena project configuration
Jérôme Benoit [Sat, 7 Mar 2026 11:10:15 +0000 (12:10 +0100)] 
chore: sync serena project configuration

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
5 weeks agochore: update biome configuration schema
Jérôme Benoit [Fri, 6 Mar 2026 12:30:33 +0000 (13:30 +0100)] 
chore: update biome configuration schema

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
5 weeks agofix(deps): update all non-major dependencies (#3148)
renovate[bot] [Fri, 6 Mar 2026 12:25:21 +0000 (13:25 +0100)] 
fix(deps): update all non-major dependencies (#3148)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agochore(deps): update dependency @rollup/plugin-terser to v1 (#3145)
renovate[bot] [Thu, 5 Mar 2026 23:24:35 +0000 (00:24 +0100)] 
chore(deps): update dependency @rollup/plugin-terser to v1 (#3145)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agochore(deps): update dependency fastify to v5.8.1 [security] (#3147)
renovate[bot] [Thu, 5 Mar 2026 23:06:24 +0000 (00:06 +0100)] 
chore(deps): update dependency fastify to v5.8.1 [security] (#3147)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 weeks agochore: update biome configuration schema version
Jérôme Benoit [Thu, 5 Mar 2026 10:46:09 +0000 (11:46 +0100)] 
chore: update biome configuration schema version

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
5 weeks agochore(deps): lock file maintenance (#3142)
renovate[bot] [Wed, 4 Mar 2026 13:27:10 +0000 (14:27 +0100)] 
chore(deps): lock file maintenance (#3142)

* chore(deps): lock file maintenance

* fix(deps): add tslib as direct devDependency for @rollup/plugin-typescript

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
5 weeks agochore(deps): update all non-major dependencies (#3144)
renovate[bot] [Wed, 4 Mar 2026 12:07:47 +0000 (13:07 +0100)] 
chore(deps): update all non-major dependencies (#3144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 weeks agochore(deps): update dependency @biomejs/biome to ^2.4.5 (#3143)
renovate[bot] [Tue, 3 Mar 2026 01:52:22 +0000 (02:52 +0100)] 
chore(deps): update dependency @biomejs/biome to ^2.4.5 (#3143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 weeks agochore(deps): update all non-major dependencies (#3141)
renovate[bot] [Mon, 2 Mar 2026 14:28:53 +0000 (15:28 +0100)] 
chore(deps): update all non-major dependencies (#3141)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 weeks agochore: update serialize-javascript to 7.0.3
Jérôme Benoit [Sat, 28 Feb 2026 17:54:30 +0000 (18:54 +0100)] 
chore: update serialize-javascript to 7.0.3

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
6 weeks agochore(deps): bump minimatch in the npm_and_yarn group across 1 directory (#3140)
dependabot[bot] [Sat, 28 Feb 2026 14:14:18 +0000 (14:14 +0000)] 
chore(deps): bump minimatch in the npm_and_yarn group across 1 directory (#3140)

Bumps the npm_and_yarn group with 1 update in the / directory: [minimatch](https://github.com/isaacs/minimatch).

Updates `minimatch` from 10.2.2 to 10.2.4
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v10.2.2...v10.2.4)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 10.2.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6 weeks agofix(deps): update all non-major dependencies (#3139)
renovate[bot] [Sat, 28 Feb 2026 14:29:44 +0000 (15:29 +0100)] 
fix(deps): update all non-major dependencies (#3139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 weeks agochore(deps): update all non-major dependencies (#3138)
renovate[bot] [Thu, 26 Feb 2026 19:17:45 +0000 (20:17 +0100)] 
chore(deps): update all non-major dependencies (#3138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 weeks agochore: update serena project configuration
Jérôme Benoit [Wed, 25 Feb 2026 12:39:07 +0000 (13:39 +0100)] 
chore: update serena project configuration

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
6 weeks agochore(deps): update node.js to v24.14.0 (#3137)
renovate[bot] [Wed, 25 Feb 2026 12:36:01 +0000 (13:36 +0100)] 
chore(deps): update node.js to v24.14.0 (#3137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agofix(deps): update all non-major dependencies (#3136)
renovate[bot] [Tue, 24 Feb 2026 11:47:11 +0000 (12:47 +0100)] 
fix(deps): update all non-major dependencies (#3136)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agodocs: publish documentation
Documentation Bot [Mon, 23 Feb 2026 17:37:49 +0000 (17:37 +0000)] 
docs: publish documentation

7 weeks agochore(master): release 5.3.2 (#3130)
Jérôme Benoit [Mon, 23 Feb 2026 17:30:29 +0000 (18:30 +0100)] 
chore(master): release 5.3.2 (#3130)

* chore(master): release 5.3.2

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
7 weeks agochore(deps): lock file maintenance (#3134)
renovate[bot] [Mon, 23 Feb 2026 14:55:44 +0000 (14:55 +0000)] 
chore(deps): lock file maintenance (#3134)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agotest: use strict spy call count assertions in worker tests
Jérôme Benoit [Mon, 23 Feb 2026 14:36:18 +0000 (15:36 +0100)] 
test: use strict spy call count assertions in worker tests

7 weeks agochore(deps): update dependency rollup to ^4.59.0 (#3133)
renovate[bot] [Mon, 23 Feb 2026 14:10:01 +0000 (15:10 +0100)] 
chore(deps): update dependency rollup to ^4.59.0 (#3133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agotest: skip pool.destroy() in afterAll hooks on CI to avoid timeout
Jérôme Benoit [Mon, 23 Feb 2026 13:15:42 +0000 (14:15 +0100)] 
test: skip pool.destroy() in afterAll hooks on CI to avoid timeout

7 weeks agotest: use ESM imports in worker threads files
Jérôme Benoit [Mon, 23 Feb 2026 11:34:37 +0000 (12:34 +0100)] 
test: use ESM imports in worker threads files

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agotest: skip shutdown tests on CI
Jérôme Benoit [Mon, 23 Feb 2026 02:34:21 +0000 (03:34 +0100)] 
test: skip shutdown tests on CI

7 weeks agotest: add retry for flaky tests on CI
Jérôme Benoit [Mon, 23 Feb 2026 02:03:08 +0000 (03:03 +0100)] 
test: add retry for flaky tests on CI

7 weeks agotest: increase vitest timeouts to 240s for slow CI runners
Jérôme Benoit [Mon, 23 Feb 2026 01:53:09 +0000 (02:53 +0100)] 
test: increase vitest timeouts to 240s for slow CI runners

7 weeks agotest: use forks pool for better process isolation
Jérôme Benoit [Mon, 23 Feb 2026 01:34:09 +0000 (02:34 +0100)] 
test: use forks pool for better process isolation

7 weeks agotest: increase vitest timeouts to 120s
Jérôme Benoit [Mon, 23 Feb 2026 01:23:07 +0000 (02:23 +0100)] 
test: increase vitest timeouts to 120s

7 weeks agoci(sonar): enable coverage for mjs sources
Jérôme Benoit [Mon, 23 Feb 2026 01:04:01 +0000 (02:04 +0100)] 
ci(sonar): enable coverage for mjs sources

7 weeks agoci: fix invalid workflow syntax (remove zero-width spaces)
Jérôme Benoit [Mon, 23 Feb 2026 00:47:44 +0000 (01:47 +0100)] 
ci: fix invalid workflow syntax (remove zero-width spaces)

7 weeks agotest(worker): add 22 tests for abstract-worker coverage
Jérôme Benoit [Mon, 23 Feb 2026 00:43:11 +0000 (01:43 +0100)] 
test(worker): add 22 tests for abstract-worker coverage

7 weeks agochore: update rollup to 4.59.0
Jérôme Benoit [Sun, 22 Feb 2026 23:40:57 +0000 (00:40 +0100)] 
chore: update rollup to 4.59.0

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agobuild: rename coverage to test:coverage, remove redundant coverage:html
Jérôme Benoit [Sun, 22 Feb 2026 23:33:05 +0000 (00:33 +0100)] 
build: rename coverage to test:coverage, remove redundant coverage:html

7 weeks agoci: avoid redundant test runs now that coverage includes build+test
Jérôme Benoit [Sun, 22 Feb 2026 23:30:55 +0000 (00:30 +0100)] 
ci: avoid redundant test runs now that coverage includes build+test

7 weeks agobuild: add build step to coverage scripts
Jérôme Benoit [Sun, 22 Feb 2026 23:27:13 +0000 (00:27 +0100)] 
build: add build step to coverage scripts

7 weeks agotest: relax coverage thresholds and increase timeouts
Jérôme Benoit [Sun, 22 Feb 2026 23:22:47 +0000 (00:22 +0100)] 
test: relax coverage thresholds and increase timeouts

7 weeks agodocs: add JSDoc types and descriptions to vitest setup
Jérôme Benoit [Sun, 22 Feb 2026 23:09:37 +0000 (00:09 +0100)] 
docs: add JSDoc types and descriptions to vitest setup

7 weeks agotest: fix async kill handler test for vitest compatibility
Jérôme Benoit [Sun, 22 Feb 2026 23:04:58 +0000 (00:04 +0100)] 
test: fix async kill handler test for vitest compatibility

- Make test async and properly await kill handler completion
- Stub sendToMainWorker to prevent unhandled rejection
- Add assertions for sendToMainWorker call
- Remove sequence.hooks config (not needed)

7 weeks agotest: add custom toMatchObject matcher for @std/expect compatibility
Jérôme Benoit [Sun, 22 Feb 2026 22:51:47 +0000 (23:51 +0100)] 
test: add custom toMatchObject matcher for @std/expect compatibility

Implement custom Vitest matcher that replicates @std/expect's toMatchObject
semantics for arrays. The matcher handles sparse array subset matching where
only defined indices are compared, matching the behavior of @std/expect's
spread-based algorithm in _equal.ts.

This fixes 8 failing tests in queue test files that use toMatchObject with
sparse arrays created via new Array(capacity).

7 weeks agotest: update queue test imports to .mjs files
Jérôme Benoit [Sun, 22 Feb 2026 22:38:24 +0000 (23:38 +0100)] 
test: update queue test imports to .mjs files

7 weeks agotest: update imports to .mjs files
Jérôme Benoit [Sun, 22 Feb 2026 22:22:20 +0000 (23:22 +0100)] 
test: update imports to .mjs files

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agofix(build): exclude vitest.config.ts from TypeScript build
Jérôme Benoit [Sun, 22 Feb 2026 20:34:09 +0000 (21:34 +0100)] 
fix(build): exclude vitest.config.ts from TypeScript build

The vitest.config.ts file was being included in the TypeScript
compilation via tsconfig.json's **/*.ts include pattern. This caused
rollup-plugin-dts to fail when looking for ./lib/index.d.ts.

Adding vitest.config.ts to the exclude array fixes the build.

7 weeks agotest: migrate from mocha to vitest
Jérôme Benoit [Sun, 22 Feb 2026 20:24:18 +0000 (21:24 +0100)] 
test: migrate from mocha to vitest

7 weeks agodocs: consolidate multiple task functions features in README
Jérôme Benoit [Sun, 22 Feb 2026 11:54:11 +0000 (12:54 +0100)] 
docs: consolidate multiple task functions features in README

7 weeks agochore(deps): update ajv to 6.14.0
Jérôme Benoit [Sat, 21 Feb 2026 09:17:59 +0000 (10:17 +0100)] 
chore(deps): update ajv to 6.14.0

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agofix(deps): update all non-major dependencies (#3131)
renovate[bot] [Sat, 21 Feb 2026 09:14:41 +0000 (10:14 +0100)] 
fix(deps): update all non-major dependencies (#3131)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agofix(test): use fake timers for sleep() test to avoid flakiness
Jérôme Benoit [Fri, 20 Feb 2026 20:37:18 +0000 (21:37 +0100)] 
fix(test): use fake timers for sleep() test to avoid flakiness

7 weeks agodocs: publish documentation
Documentation Bot [Fri, 20 Feb 2026 15:36:43 +0000 (15:36 +0000)] 
docs: publish documentation

7 weeks agochore(master): release 5.3.1 (#3129) v5.3.1
Jérôme Benoit [Fri, 20 Feb 2026 15:33:35 +0000 (16:33 +0100)] 
chore(master): release 5.3.1 (#3129)

* chore(master): release 5.3.1

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
7 weeks agofix(iwrr): remove erroneous workerNodeId reset corrupting round-robin state
Jérôme Benoit [Fri, 20 Feb 2026 15:22:56 +0000 (16:22 +0100)] 
fix(iwrr): remove erroneous workerNodeId reset corrupting round-robin state

7 weeks agodocs: publish documentation
Documentation Bot [Fri, 20 Feb 2026 14:29:03 +0000 (14:29 +0000)] 
docs: publish documentation

7 weeks agochore(master): release 5.3.0 (#3125) v5.3.0
Jérôme Benoit [Fri, 20 Feb 2026 14:26:01 +0000 (15:26 +0100)] 
chore(master): release 5.3.0 (#3125)

* chore(master): release 5.3.0

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
7 weeks agochore: remove oh my opencode artifacts
Jérôme Benoit [Fri, 20 Feb 2026 14:23:31 +0000 (15:23 +0100)] 
chore: remove oh my opencode artifacts

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agochore(deps): security: update minimatch to 10.2.2
Jérôme Benoit [Fri, 20 Feb 2026 14:18:39 +0000 (15:18 +0100)] 
chore(deps): security: update minimatch to 10.2.2

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agochore(deps): update all non-major dependencies (#3128)
renovate[bot] [Fri, 20 Feb 2026 14:15:43 +0000 (15:15 +0100)] 
chore(deps): update all non-major dependencies (#3128)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agofeat(pool): add agingFactor and loadExponent tunables to TasksQueueOptions
Jérôme Benoit [Fri, 20 Feb 2026 14:14:32 +0000 (15:14 +0100)] 
feat(pool): add agingFactor and loadExponent tunables to TasksQueueOptions

7 weeks agochore(deps): update all non-major dependencies (#3127)
renovate[bot] [Thu, 19 Feb 2026 18:07:01 +0000 (19:07 +0100)] 
chore(deps): update all non-major dependencies (#3127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 weeks agochore: make eslint works again
Jérôme Benoit [Wed, 18 Feb 2026 12:07:31 +0000 (13:07 +0100)] 
chore: make eslint works again

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agochore: update biome schema version
Jérôme Benoit [Wed, 18 Feb 2026 11:28:50 +0000 (12:28 +0100)] 
chore: update biome schema version

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
7 weeks agochore(deps): update ajv minimum version to 8.18.0
Jérôme Benoit [Wed, 18 Feb 2026 10:51:28 +0000 (11:51 +0100)] 
chore(deps): update ajv minimum version to 8.18.0

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
8 weeks agofix(deps): update all non-major dependencies (#3126)
renovate[bot] [Tue, 17 Feb 2026 15:22:55 +0000 (16:22 +0100)] 
fix(deps): update all non-major dependencies (#3126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8 weeks agochore(deps): apply updates
Jérôme Benoit [Mon, 16 Feb 2026 21:24:19 +0000 (22:24 +0100)] 
chore(deps): apply updates

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
8 weeks agodocs: publish documentation
Documentation Bot [Mon, 16 Feb 2026 19:07:45 +0000 (19:07 +0000)] 
docs: publish documentation

8 weeks agoci: add manual documentation publish workflow
Jérôme Benoit [Mon, 16 Feb 2026 19:05:40 +0000 (20:05 +0100)] 
ci: add manual documentation publish workflow

8 weeks agoci: use protected token for documentation checkout
Jérôme Benoit [Mon, 16 Feb 2026 18:58:32 +0000 (19:58 +0100)] 
ci: use protected token for documentation checkout

8 weeks agochore(master): release 5.2.0 (#3054) v5.2.0
Jérôme Benoit [Mon, 16 Feb 2026 18:45:49 +0000 (19:45 +0100)] 
chore(master): release 5.2.0 (#3054)

* chore(master): release 5.2.0

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
8 weeks agoci: migrate npm publish to OIDC Trusted Publisher
Jérôme Benoit [Mon, 16 Feb 2026 18:27:11 +0000 (19:27 +0100)] 
ci: migrate npm publish to OIDC Trusted Publisher

8 weeks agofix: validate workerNodeKeys on worker ready and remove misleading JSDoc
Jérôme Benoit [Mon, 16 Feb 2026 17:58:41 +0000 (18:58 +0100)] 
fix: validate workerNodeKeys on worker ready and remove misleading JSDoc

8 weeks agochore(deps): lock file maintenance (#3123)
renovate[bot] [Mon, 16 Feb 2026 16:04:53 +0000 (17:04 +0100)] 
chore(deps): lock file maintenance (#3123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8 weeks agochore(deps): update all non-major dependencies (#3122)
renovate[bot] [Mon, 16 Feb 2026 15:55:24 +0000 (16:55 +0100)] 
chore(deps): update all non-major dependencies (#3122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8 weeks agofeat: task function worker node affinity (#2269)
Jérôme Benoit [Mon, 16 Feb 2026 15:52:42 +0000 (16:52 +0100)] 
feat: task function worker node affinity  (#2269)

* feat: task function worker node affinity

closes #778

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: cleanup worker node affinity namespace

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: validate worker nodes affinity

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: refine worke nodes affinity validation

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* fix: check worker node keys affinity is part of pool worker nodes

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* fix: fix default task function properties handling

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* test: improve task function objects coverage

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* test: cleanup tests

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* test: fix mismerge

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: silence linter

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: code reformatting

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: code formatting

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* chore: merge eslint-plugin-perfectionist reformatting

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* chore: reenabled lint-staged

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* chore: fix mismerge

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: code formatting

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes (attempt 2/3)

* chore: fix mismerge

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* perf: lighter worker node keys validation on hot path

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: cleanups

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* refactor: early exit in worker choice strategies

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: align unique worker node affinity handling

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* [autofix.ci] apply automated fixes

* refactor: remove uneeded comment

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* perf: reorder conditions

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: remove uneeded conditions

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* perf: add missing optimization

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* refactor: cleanup worker nodes array validation code

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
* fix: add defensive checks for worker node affinity in selection strategies

- Add bounded loops to prevent infinite loops when no valid worker in affinity set
- Add empty/single-key checks in all strategies
- Add comprehensive tests for workerNodeKeys affinity

* fix: add empty array guard and fix iteration in worker node affinity strategies

* refactor(selection-strategies): extract getSingleWorkerNodeKey helper to reduce duplication

Consolidate the early-return pattern for single-element workerNodeKeys
array into a reusable protected method in AbstractWorkerChoiceStrategy.
All 7 selection strategies now use this helper instead of duplicating
the same check and isWorkerNodeReady call.

* fix(selection-strategies): correct affinity handling and optimize to O(1) lookup

- Fix WeightedRoundRobin: check affinity membership before using workerNodeKey
- Fix InterleavedWeightedRR: add wrap-around to find valid workers behind current position
- Optimize: change checkWorkerNodeKeys() to return Set<number> for O(1) .has() lookup
- Update all 7 strategies to use Set.has() instead of Array.includes()

* refactor(iwrr): remove unnecessary wrap-around logic

The retry mechanism in executeStrategy() already handles the case where
choose() returns undefined. Each call advances the position via
interleavedWeightedRoundRobinNextWorkerNodeId(), eventually covering
the entire (roundId, workerNodeId) space.

Removed the interleavedWeightedRoundRobinChoose() helper method and
inlined the logic directly in choose() for simplicity.

* refactor(api): rename workerNodes to workerNodeKeys for clarity

Rename the task function affinity property from 'workerNodes' to
'workerNodeKeys' to avoid confusion with pool.workerNodes (IWorkerNode[])
and align with internal naming conventions where keys refer to indices.

* test(selection-strategies): add workerNodeKeys affinity tests for all strategies

Add comprehensive tests for worker node keys affinity in choose() method:
- Empty workerNodeKeys returns undefined
- Single workerNodeKey returns that key if ready
- Multiple workerNodeKeys respects affinity constraint

Covers: RoundRobin, LeastUsed, LeastBusy, LeastElu, FairShare,
WeightedRoundRobin, InterleavedWeightedRoundRobin strategies

* test(pool): add workerNodeKeys validation and affinity tests

- Add checkValidWorkerNodes edge case tests
- Add addTaskFunction workerNodeKeys validation tests
- Add integration test for execute() workerNodeKeys affinity

* docs: improve workerNodeKeys JSDoc and error messages

- Expand JSDoc for workerNodeKeys parameter across selection strategies
- Improve error message clarity for invalid worker node keys
- Update tests to match improved error messages

* docs: harmonize workerNodeKeys JSDoc at getSingleWorkerNodeKey

* fix(weighted-round-robin): set nextWorkerNodeKey when staying on same worker

* fix(pool): check worker node affinity before returning dynamic worker

* docs: clarify worker node affinity validation behavior

* refactor: rename checkValidWorkerNodes to checkValidWorkerNodeKeys

Align function name, parameter name, and error messages with actual
semantics: the function validates worker node keys (numeric indices),
not worker node objects.

* refactor: eliminate unnecessary Set/Array allocations in worker node affinity hot paths

- Remove workerNodeKeys getter from IPool interface and AbstractPool
- Replace new Set(this.workerNodeKeys) validation with O(1) range checks
- Rename getTaskFunctionWorkerNodes() to getTaskFunctionWorkerNodeKeysSet()
  returning Set<number> directly from source
- Propagate Set<number> through execute() → executeStrategy() → choose()
  eliminating intermediate array-to-Set conversions
- Replace new Set(this.workerNodes.keys()) in sendTaskFunctionOperationToWorkers()
  with direct workerNodes.length/keys() usage

* fix(wrr): update state in single-element affinity shortcut

Reset nextWorkerNodeKey and workerNodeVirtualTaskExecutionTime in the
size === 1 path to maintain consistent round-robin state.

* fix: address Copilot review comments

- Check affinity before creating dynamic worker
- Add null to workerNodeKeys signature
- Fix anchor link and document length constraint

* chore: disable biome formatter in opencode

* perf(strategies): fast path for round-robin without affinity

* test: consolidate worker choice strategies test suite

* test: verify workerNodeKeys transmission from worker constructor

* fix: address Copilot review concerns for worker node affinity

- Snapshot workerNodeKeys in sendTaskFunctionOperationToWorkers to prevent race conditions
- Use ReadonlySet<number> for workerNodeKeysSet in selection strategies for type safety
- Compute workerNodeKeysSet lazily instead of storing in TaskFunctionProperties
- Allow null in workerNodeKeys type to explicitly disable affinity

* fix: improve error message grammar in addTaskFunction validation

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* fix: validate worker node keys against max pool size and fix single-key state update

- Validate workerNodeKeys against maximumNumberOfWorkers instead of current
  pool size, allowing dynamic pools to reference future worker indices
- Only update nextWorkerNodeKey in RR/WRR single-key path when worker is
  ready, preventing state inconsistency on retry
- Clarify TaskFunctionObject.workerNodeKeys doc regarding null vs undefined

* feat: create dynamic workers to satisfy worker node affinity constraints

In dynamic pools, when a task's workerNodeKeys affinity references
worker nodes beyond the current pool size, automatically create
dynamic workers up to the maximum pool size to satisfy the affinity.

* test: harmonize variable naming in dynamic worker affinity test

* refactor: consolidate worker node keys validation into helper and enforce error types in tests

* fix: remove unused null from workerNodeKeys type and restore test suite title

* docs: mention worker node affinity feature in README

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
* refactor: use project max helper instead of Math.max

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
---------

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
8 weeks agochore(deps): bump markdown-it (#3120)
dependabot[bot] [Sat, 14 Feb 2026 23:26:25 +0000 (00:26 +0100)] 
chore(deps): bump markdown-it (#3120)

Bumps the npm_and_yarn group with 1 update in the / directory: [markdown-it](https://github.com/markdown-it/markdown-it).

Updates `markdown-it` from 14.1.0 to 14.1.1
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.1.0...14.1.1)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-version: 14.1.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8 weeks agochore(deps): update dependency typedoc to ^0.28.17 (#3121)
renovate[bot] [Sat, 14 Feb 2026 23:25:57 +0000 (00:25 +0100)] 
chore(deps): update dependency typedoc to ^0.28.17 (#3121)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore(deps): update all non-major dependencies (#3119)
renovate[bot] [Thu, 12 Feb 2026 16:24:53 +0000 (17:24 +0100)] 
chore(deps): update all non-major dependencies (#3119)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore(deps): lock file maintenance (#3118)
renovate[bot] [Mon, 9 Feb 2026 15:51:24 +0000 (16:51 +0100)] 
chore(deps): lock file maintenance (#3118)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore(deps): update pnpm to v10.29.2 (#3117)
renovate[bot] [Mon, 9 Feb 2026 15:16:11 +0000 (16:16 +0100)] 
chore(deps): update pnpm to v10.29.2 (#3117)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore: update biome configuration schema version
Jérôme Benoit [Sun, 8 Feb 2026 15:04:35 +0000 (16:04 +0100)] 
chore: update biome configuration schema version

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
2 months agofix(deps): update all non-major dependencies (#3116)
renovate[bot] [Sun, 8 Feb 2026 14:49:47 +0000 (15:49 +0100)] 
fix(deps): update all non-major dependencies (#3116)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agofix(deps): update all non-major dependencies (#3114)
renovate[bot] [Sat, 7 Feb 2026 16:02:46 +0000 (17:02 +0100)] 
fix(deps): update all non-major dependencies (#3114)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agofix(deps): update dependency nodemailer to v8 (#3112)
renovate[bot] [Fri, 6 Feb 2026 22:42:36 +0000 (23:42 +0100)] 
fix(deps): update dependency nodemailer to v8 (#3112)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore(deps): update all non-major dependencies (#3113)
renovate[bot] [Fri, 6 Feb 2026 15:06:41 +0000 (16:06 +0100)] 
chore(deps): update all non-major dependencies (#3113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months agochore(deps): update all non-major dependencies (#3111)
renovate[bot] [Thu, 5 Feb 2026 13:01:42 +0000 (14:01 +0100)] 
chore(deps): update all non-major dependencies (#3111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>