All notable changes are grouped by git tag (newest releases first). Within each section, commits are in chronological order for that tag range.
The format is inspired by Keep a Changelog.
- feat: unified per-project build stats — a
Build — by timetable and aLargest Artifactstable (plus a summary block) replace the Missing Projects / Slow Cache Recoveries / Hash Mismatches tables. A new--stats <silent | default | full>flag controls the block independently of--logLevel.SKIProws are omitted and row counts are not capped; full status counts stay in the summary. Raw output size and file counts are measured only when a project is actually built, so cache-hit rows show-in those columns. - fix: zip cache recovery hung forever on Node 24 —
extract-zip's yauzl@2 read stream stalls mid-entry on deflate entries larger than ~1.4 MB (reproduced byte-for-byte outside Zenith), deadlocking the recovery worker. Zip extraction now uses a small yauzl@3.3.1-based streaming extractor (extractZipFileToDir); theextract-zipdependency was removed.
- fix: a failing target reported
Workerpool Worker terminated Unexpectedlyinstead of the actual error. The builder force-killed the pool on the first failure, so workerpool rejected every in-flight task with that message andPromise.allsurfaced whichever rejection won the race; on top of that the real error was replaced withExecuting worker failedinWorkerHelper, andrunTargetthrew theErrorconstructor rather than an instance. Failures now travel as a structuredZenithCommandError(project, script, shell command, cwd, exit code, signal, full stdout and stderr), the pool shuts down gracefully so siblings are not rejected with termination noise, and the run ends with a single failure block and exit code 1. Pool shutdown is memoized because a workerpoolWorkerHandlerholds a single termination callback slot: without it, the concurrent graceful terminates issued by each failing project overwrite each other and every caller but the last waits on a promise that never settles, draining the event loop and exiting 0 with no output at all.
- (
52ab324) perf(builder): faster cyclic dependency check (memoized reachability, Set-based DFS); tests for explicit two-node cycle and acyclic dummy graph
- (
68b7ac8) chore(deps): add tar and @aws-sdk/lib-storage - (
14be943) chore(minio): add node MinIO helpers and cache format benchmark - (
f0ecc28) feat(cache): pluggable zip/files/tar/blobs/auto formats and layout keys - (
706d795) fix(remote): multipart Upload for large streamed S3 puts - (
01f8637) test(cache): round-trip specs for zip, tar, files, and blobs - (
cb32c78) docs(readme): cache formats, --cache-format, MinIO and benchmark - (
5df1491) docs: add CHANGELOG with full commit history - (
832d184) chore(release): 3.0.0 - (
7cd62c0) docs(changelog): regenerate from git tags - (
9aa1393) docs(changelog): align v3.0.0 section with tagged revision
- (
36348ee) chore(publish): new npm token variable
- (
48226a2) perf(hasher): async hashing and faster empty-directory checks - (
84ecd5d) fix(cache): stream zip artifacts, harden remote S3 client, path-style option - (
0214ae3) docs(dev): document S3 endpoint options and add MinIO compose stack - (
a985c7a) chore(release): 2.9.0
- (
f1d526d) feat: callback function invoke added to after get hash function
- (
230d8c0) fix: add projects from constant dependencies during first initialization (#75)
- (
c3dfc10) Feat additional files config (#74)
- (
dbe1166) feat: add onlyDependencies option (#72)
- (
ebea2eb) feat(graph): zenith graph initial (#64) - (
e71ce9c) chore: v2.5.0 - (
eed3635) chore: change zenith config extension - (
ac6a00e) chore(deps): bump micromatch from 4.0.5 to 4.0.8 (#68) - (
d019785) feat: correct timing for cache mismatches - (
3f7ea5f) feat: table output on execution summary - (
1272d80) chore: bump version
- (
9c2822d) chore: fix wrong versioning
- (
8956063) chore: delete pnpm lock - (
4909397) chore(deps): bump @babel/traverse from 7.23.0 to 7.24.5 (#60) - (
00b1908) fix: single build does not cache correctly (#61) - (
59c1f18) fix: single build log errors
- (
b25d861) fix(package.json): version fixed
- (
6865f9c) fix(worker): process.env fixed
- (
caea246) feat(worker): run execution with zenith_parallel_runner
- (
8956063) chore: delete pnpm lock - (
4909397) chore(deps): bump @babel/traverse from 7.23.0 to 7.24.5 (#60) - (
00b1908) fix: single build does not cache correctly (#61)
- (
a3b4e09) fix: use build config single cache
- (
71fc24a) refactor: single or project-by-project builder - (
f80fada) feat: run single command - (
bfaa8b2) chore: version up
- (
1ef70a0) fix: send more details for onFail
- (
9738b5c) feat: read js config and add onFail to config (#57)
- (
9c01697) fix: remove unreadable text color
- (
9085465) feat: enable different config files
- (
e8ed01b) feat: piping (#56) - (
d932dc3) fix(cacher): dont skip stdouts
- (
65f0cb2) fix: update hash before skipping projects
- (
2662d93) feat: add .gitignore to ignored files - (
9becbcb) chore: update version - (
933c0ae) fix: package manager in package.json
- (
899ac55) doc: update readme - (
d34a6db) feat: skip dummy commands (#54)
- (
298e960) feat: add no cache option (#53)
- (
aa15984) feat: skip on script not found at package json flag added (#50) - (
0206bb2) fix: images being corrupted on zip (#51) - (
4c80c1d) v1.4.0
- (
9daaebd) style: add error on console log
- (
31a39d7) perf: do not recover caches when output is stdout and log affected is on
- (
7eba098) fix: error when root lib or build does not exist
- (
6113ed4) fix: remove console log
- (
be75fc1) perf: increase zipper performance
- (
b6000c9) fix: zipper performance and bug fixes
- (
a7ff4b3) feat: remove unzipper package and fix unzipping bugs and performance improvements (#48)
- (
73f551e) debug: add cache debug checks temporarily
- (
ad3d9e6) fix: minor log fix
- (
7e44740) chore: minor version bump to publish package
- (
a78cb88) Revert "fix: set package version to minor change" - (
2b4e669) security: update mock repo dependency
- (
5b12585) refactor: remove zip-local package (#45) - (
1e7eba9) feat: local caching (#46) - (
937268a) feat: hybrid caching (#47) - (
6f72286) fix: set package version to minor change
- (
2e06a06) remove zip-local
- (
5b12585) refactor: remove zip-local package (#45)
- (
251c647) fix: add root package.json to hash if exists
- (
1310bec) fix: remove redundant console log
- (
c428468) chore(deps): bump word-wrap from 1.2.3 to 1.2.4 (#41) - (
f1cfc33) chore(deps): bump semver from 6.3.0 to 6.3.1 (#39) - (
3e3cc75) chore(deps): bump tough-cookie from 4.1.2 to 4.1.3 (#38) - (
1f397bc) test: add mock repo and circular dependency tests - (
3e2da35) feat: skip dependencies command flag (#42)
- (
ffed19f) fix: throw error for circular dependencies (#40)
- (
eed478a) version up (0.9.2)
- (
908b304) fix: dont log for scripts with no command (#37) - (
1b3959a) fix: put missing projects if command is not dummy
- (
a7b8198) fix: jest revert update - (
d6db516) chore: fix semver version for package.json
- (
860361d) chore: update package dependencies
- (
578579e) fix: add requiredFiles option to targets in zenith.json - (
1a5e082) style: linter fix - (
314e18f) fix: build helper test arg
- (
a89da5d) fix: npm publish
- (
069cd65) test: add randomized hashing test (#33) - (
512f3ea) test: missing package json (#35) - (
4fd3085) fix: lint error in error handling at worker (#36)
- (
a4337bc) fix: make sure program does not exit with 0 after error is thrown
- (
387c96c) chore: add readme to package files - (
0c0a50e) refactor: initiate config manager - (
0b49d70) Style/typescript eslint (#34)
- (
e1af803) Fix/hashing empty folders (#31)
- (
c2936f2) fix: dependencies and script is hashed on every recursive call
- (
2aa9841) chore(zenith): typescript packages added to dev dependencies (#28) - (
ad51154) fix: ignore empty files when hashing
- (
d16a7b9) Update package.json - (
1379c0c) Update package.json
- (
8523801) chore: update json file - (
5a5bacb) docs: add pnpm part - (
733acdd) chore: make it ready to public publish - (
4716b21) Update README.md - (
1093e59) migration: convert to ts (#27) - (
a23a80d) Update package.json
- (
49dbc83) fix: @swc/core added for tests
No commits in this range (tag points to same revision as the previous boundary).
- (
6c93a04) feat: added unit test for Hasher (#26) - (
ad54f7f) chore: changed unit test script for gh actions - (
df48546) chore: version bump - (
03300fc) fix: jest config moved to zenith - (
c711c19) fix: removed @jotforminc/jest-preset-base as its private - (
c621f61) fix: lockfile update - (
49dbc83) fix: @swc/core added for tests
- (
265033d) fix: remove console log
- (
729dfc3) feat: log slow projects
- (
4f9e90f) fix: zenith not throwing errors
- (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder - (
5338399) chore: update build system - (
fc06364) chore: version up - (
1c42c20) chore: try without files - (
63d73f2) chore: up version - (
581f799) chore: update version - (
cf3df54) chore: update workflow - (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0 - (
1282b71) chore: v.0.2.1 - (
bf9c1c7) chore: v0.2.2 - (
53dd7d1) fix: worker path corrected & errors throwed - (
dafe1e4) feat(zenith): add log level, add execution time to projects with missed cache (#4) - (
b22f415) style: singleton logger created and replaced console logs - (
6a6a076) Merge pull request #6 from hmdoganjf/style/log-singleton - (
d4aa8e5) style: optimize flag usage - (
878bfa6) style: delete unnecessary variables and logs - (
c94fbcb) docs: update readme - (
fba3deb) fix: buildHelper completed ascii art fixed (#10) - (
67de0c4) feat: test caching (#11) - (
46580c1) chore: update yarn files - (
0c49856) fix: change filter name - (
0c8f8f5) Fix/filter name (#13) - (
a1db3e6) Fix/filter name (#14) - (
2ec7596) Feat/log affected (#15) - (
a98f3b3) fix: remove unnecessary log - (
e2e5659) fix previous release - (
fa59c88) feat: log hash mismatched projects at the end - (
8ad9456) fix: await async logic in send output hash - (
c35b979) Update RemoteCacher.js - (
7b0b18e) feat: log error output - (
a19a4ea) fix: default log level added - (
4b56128) feat: add .zenithignore file (#16) - (
8e1b591) fix: output and remote hashes not matching - (
d8c7d74) test: increase max workers to 10 instead of 6 - (
e43ba55) chore: version up - (
4d147ea) chore: version up (#18) - (
28770a3) feat: worker parametrization (#19) - (
5b4a4f8) Feat/version/up (#20) - (
5d68668) feat: dependency ignoring - (
13aaabd) feat: add debug location flag (#17) - (
bc55101) docs: update readme (#21) - (
e7a35ce) fix: if one of the execution fails terminate all the workers - (
92604c1) docs: introduction to zenith - (
f272bda) ui: completed stats (#22)
No commits in this range (tag points to same revision as the previous boundary).
- (
13aaabd) feat: add debug location flag (#17) - (
bc55101) docs: update readme (#21) - (
e7a35ce) fix: if one of the execution fails terminate all the workers
- (
5d68668) feat: dependency ignoring
- (
e43ba55) chore: version up - (
4d147ea) chore: version up (#18) - (
28770a3) feat: worker parametrization (#19) - (
5b4a4f8) Feat/version/up (#20)
No commits in this range (tag points to same revision as the previous boundary).
- (
d8c7d74) test: increase max workers to 10 instead of 6 - (
e43ba55) chore: version up - (
4d147ea) chore: version up (#18)
- (
8e1b591) fix: output and remote hashes not matching
- (
02540d8) chore: publish first alpha version - (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder - (
5338399) chore: update build system - (
fc06364) chore: version up - (
1c42c20) chore: try without files - (
63d73f2) chore: up version - (
581f799) chore: update version - (
cf3df54) chore: update workflow - (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0 - (
1282b71) chore: v.0.2.1 - (
bf9c1c7) chore: v0.2.2 - (
53dd7d1) fix: worker path corrected & errors throwed - (
dafe1e4) feat(zenith): add log level, add execution time to projects with missed cache (#4) - (
b22f415) style: singleton logger created and replaced console logs - (
6a6a076) Merge pull request #6 from hmdoganjf/style/log-singleton - (
d4aa8e5) style: optimize flag usage - (
878bfa6) style: delete unnecessary variables and logs - (
c94fbcb) docs: update readme - (
fba3deb) fix: buildHelper completed ascii art fixed (#10) - (
67de0c4) feat: test caching (#11) - (
46580c1) chore: update yarn files - (
0c49856) fix: change filter name - (
0c8f8f5) Fix/filter name (#13) - (
a1db3e6) Fix/filter name (#14) - (
2ec7596) Feat/log affected (#15) - (
a98f3b3) fix: remove unnecessary log - (
e2e5659) fix previous release - (
fa59c88) feat: log hash mismatched projects at the end - (
8ad9456) fix: await async logic in send output hash - (
c35b979) Update RemoteCacher.js - (
7b0b18e) feat: log error output - (
a19a4ea) fix: default log level added - (
4b56128) feat: add .zenithignore file (#16)
- (
9134cf9) chore: publish first alpha version
- (
a19a4ea) fix: default log level added
- (
7b0b18e) feat: log error output
- (
8ad9456) fix: await async logic in send output hash - (
c35b979) Update RemoteCacher.js
- (
fa59c88) feat: log hash mismatched projects at the end
- (
e2e5659) fix previous release
- (
a98f3b3) fix: remove unnecessary log
- (
2ec7596) Feat/log affected (#15)
- (
a1db3e6) Fix/filter name (#14)
- (
0c49856) fix: change filter name - (
0c8f8f5) Fix/filter name (#13)
- (
46580c1) chore: update yarn files
- (
4769775) chore: update workflow - (
02540d8) chore: publish first alpha version - (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder - (
5338399) chore: update build system - (
fc06364) chore: version up - (
1c42c20) chore: try without files - (
63d73f2) chore: up version - (
581f799) chore: update version - (
cf3df54) chore: update workflow - (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0 - (
1282b71) chore: v.0.2.1 - (
bf9c1c7) chore: v0.2.2 - (
53dd7d1) fix: worker path corrected & errors throwed - (
dafe1e4) feat(zenith): add log level, add execution time to projects with missed cache (#4) - (
b22f415) style: singleton logger created and replaced console logs - (
6a6a076) Merge pull request #6 from hmdoganjf/style/log-singleton - (
d4aa8e5) style: optimize flag usage - (
878bfa6) style: delete unnecessary variables and logs - (
c94fbcb) docs: update readme - (
fba3deb) fix: buildHelper completed ascii art fixed (#10) - (
67de0c4) feat: test caching (#11)
No commits in this range (tag points to same revision as the previous boundary).
- (
b22f415) style: singleton logger created and replaced console logs - (
6a6a076) Merge pull request #6 from hmdoganjf/style/log-singleton
- (
ff5620b) Chore (#1) - (
b7e188e) chore: build system updates - (
4769775) chore: update workflow - (
02540d8) chore: publish first alpha version - (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder - (
5338399) chore: update build system - (
fc06364) chore: version up - (
1c42c20) chore: try without files - (
63d73f2) chore: up version - (
581f799) chore: update version - (
cf3df54) chore: update workflow - (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0 - (
1282b71) chore: v.0.2.1 - (
bf9c1c7) chore: v0.2.2 - (
53dd7d1) fix: worker path corrected & errors throwed - (
dafe1e4) feat(zenith): add log level, add execution time to projects with missed cache (#4)
No commits in this range (tag points to same revision as the previous boundary).
- (
ca71850) chore: build system demo - (
ff5620b) Chore (#1) - (
b7e188e) chore: build system updates - (
4769775) chore: update workflow - (
02540d8) chore: publish first alpha version - (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder - (
5338399) chore: update build system - (
fc06364) chore: version up - (
1c42c20) chore: try without files - (
63d73f2) chore: up version - (
581f799) chore: update version - (
cf3df54) chore: update workflow - (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0 - (
1282b71) chore: v.0.2.1 - (
bf9c1c7) chore: v0.2.2 - (
53dd7d1) fix: worker path corrected & errors throwed
No commits in this range (tag points to same revision as the previous boundary).
- (
bf9c1c7) chore: v0.2.2
- (
1282b71) chore: v.0.2.1
- (
d013a00) chore: updated file names and folder structure (#2) - (
d6f5331) chore: update build system - (
672a16e) fix: file path issues (#3) - (
c6395bf) chore: build system updates - (
3b1ab48) chore: version 2.0
- (
cf3df54) chore: update workflow
- (
581f799) chore: update version
- (
1c42c20) chore: try without files - (
63d73f2) chore: up version
- (
5338399) chore: update build system - (
fc06364) chore: version up
- (
a400cab) chore(deployment): try with yarn tmp - (
ca71850) chore: build system demo - (
ff5620b) Chore (#1) - (
b7e188e) chore: build system updates - (
4769775) chore: update workflow - (
02540d8) chore: publish first alpha version - (
70a601e) chore: update build folders - (
e3ccc8b) chore: try new build folder
- (
9a9e92d) chore: file structure updated - (
03c7ef8) chore: update package manager - (
a7d4a09) chore(deployment): initial action
Older tags excluded from the automated list above (e.g. typescript-migration*, malformed v.*) are still available via git tag -l and git log.
Regenerate tag sections (after adding tags):
git tag -l 'v*' --sort=v:refname