v9.0.0
9.0.0 (2026-09-11)
- feat(storage)!: overhaul Bucket listing API (503567b)
- feat(storage)!: pluggable StorageBackend, extract @adobe/helix-shared-storage-s3 (b06f628)
Bug Fixes
- (a)wait for response (#950) (ae563b1)
- abort should wait until running tasks finished (#1185) (6dfb329)
- add ETag and LastModified to
metainstorage.get(#1154) (a2da95f) - add missing type (acc4c46)
- add shallow flag to types (#1129) (69ad1a2)
- address comment (7a79bb3)
- address comments (dfa036c)
- allow eslint 9.x (#1255) (55fbbd3)
- allow nock upgrade (#1203) (4c41328)
- body-data: detect YAML with /x-yaml content type (#1171) (4a47315), closes #1170
- body-data: reject non-object JSON bodies with 400 (#1230) (a9dced9)
- Bucket.rmdir should delete files in batches (#1009) (bb4a33f)
- change aws-sdk dependencies to major (e244c8a)
- change bucket.list() prefixes option to be includePrefixes (#1169) (d27f5bf)
- check Account and AccessTokens (#963) (62a1d9d)
- check empty Account only with type 'onedrive' (#962) (e3c39a0)
- collapse modifiers (#1102) (90947fd)
- copy more than just metadata (#976) (70279a2)
- deps: update adobe fixes (719f70f)
- deps: update dependency @adobe/fetch to v4.1.3 (ec1de2e)
- deps: update dependency @aws-sdk/client-s3 to v3.577.0 (#936) (2968b02)
- deps: update dependency @aws-sdk/client-s3 to v3.703.0 (#1031) (d90dbb6)
- deps: update dependency @aws-sdk/client-s3 to v3.705.0 (#1034) (d3b085b)
- deps: update dependency @aws-sdk/client-s3 to v3.723.0 (#1044) (93a9bf0)
- deps: update dependency @aws-sdk/client-s3 to v3.740.0 (#1054) (4d69e98)
- deps: update dependency @aws-sdk/client-s3 to v3.741.0 (#1055) (050697a)
- deps: update dependency @aws-sdk/client-s3 to v3.750.0 (#1063) (c065fcb)
- deps: update dependency @aws-sdk/client-s3 to v3.758.0 (#1069) (734b1b8)
- deps: update dependency @aws-sdk/client-s3 to v3.779.0 (#1079) (455423c)
- deps: update dependency @aws-sdk/client-s3 to v3.798.0 (#1085) (994ec74)
- deps: update dependency @aws-sdk/client-s3 to v3.803.0 (#1088) (13af660)
- deps: update dependency @aws-sdk/client-s3 to v3.850.0 (#1119) (deb3560)
- deps: update dependency @aws-sdk/client-s3 to v3.855.0 (#1123) (ce7215b)
- deps: update dependency @smithy/node-http-handler to v3 (#935) (0b2d0af)
- deps: update dependency @smithy/node-http-handler to v4 (#1043) (81432e9)
- deps: update dependency @smithy/node-http-handler to v4.0.3 (#1067) (b5e0833)
- deps: update dependency ajv to v8.18.0 [security] (#1195) (17685fb)
- deps: update dependency ajv-formats to v3 (#923) (e7789fd)
- deps: update dependency cookie to v1 (#1016) (9a0393f)
- deps: update dependency fs-extra to v11.3.0 (#1048) (cf3a44e)
- deps: update dependency hast-util-to-html to v9.0.2 (5d37060)
- deps: update dependency ignore to v6 (#1004) (95e817a)
- deps: update dependency ignore to v6 (#999) (27ce8a9)
- deps: update dependency ignore to v7 (#1038) (539890f)
- deps: update dependency lru-cache to v11 (#979) (48dab5b)
- deps: update dependency lru-cache to v11 (#988) (65a8c13)
- deps: update dependency lru-cache to v11.2.1 (#1133) (506bb87)
- deps: update dependency lru-cache to v11.2.5 (#1190) (30d4ec8)
- deps: update dependency lru-cache to v11.2.6 (#1200) (d24dfb3)
- deps: update dependency unified to v11.0.5 (6d66c1b)
- deps: update dependency yaml to v2.4.0 (4abb7df)
- deps: update dependency yaml to v2.4.4 (80c4179)
- deps: update dependency yaml to v2.5.0 (d6bec62)
- deps: update dependency yaml to v2.6.0 (66b84d4)
- deps: update dependency yaml to v2.7.0 (#1041) (9ca37c9)
- deps: update dependency yaml to v2.8.3 [security] (#1212) (768be32)
- deps: update external fixes (fa84c45)
- deps: update external fixes (e4c03a2)
- deps: update external fixes (99b87c7)
- deps: update external fixes (b79efa9)
- deps: update external fixes (e99f045)
- deps: update external fixes (ddc6597)
- deps: update external fixes (badc903)
- deps: update external fixes (468ab7f)
- deps: update external fixes (47943a2)
- deps: update external fixes (ddac9e4)
- deps: update external fixes (46c83a4)
- deps: update external fixes (d2a94d1)
- deps: update external fixes (c121af6)
- deps: update external fixes (cf77816)
- deps: update external fixes (0a28146)
- deps: update external fixes (8d55539)
- deps: update external fixes (4b1e61a)
- deps: update external fixes (7819598)
- deps: update external fixes (dca5c24)
- deps: update external fixes (e5329bd)
- deps: update external fixes (bf8b7f3)
- deps: update external fixes (7455f67)
- deps: update external fixes (2c78ac3)
- deps: update external fixes (0c539fb)
- deps: update external fixes (275f436)
- deps: update external fixes (90916cb)
- deps: update external fixes (420fcd9)
- deps: update external fixes (0a36a53)
- deps: update external fixes (709b923)
- deps: update external fixes (9db6f86)
- deps: update external fixes (bed60cc)
- deps: update external fixes (d718527)
- deps: update external fixes (a937f08)
- deps: update external fixes (d89a96f)
- deps: update external fixes (ab6e383)
- deps: update external fixes (5916c80)
- deps: update external fixes (#1023) (09c1b5a)
- deps: update external fixes (#1025) (c2271db)
- deps: update external fixes (#1027) (89e15ba)
- deps: update external fixes (#1028) (5adc65e)
- deps: update external fixes (#1036) (8b71781)
- deps: update external fixes (#1037) (4b12ab0)
- deps: update external fixes (#1039) (0515d0f)
- deps: update external fixes (#1040) (5425a8a)
- deps: update external fixes (#1045) (3c997c6)
- deps: update external fixes (#1047) (2241568)
- deps: update external fixes (#1049) (d5b35dc)
- deps: update external fixes (#1059) (e76009d)
- deps: update external fixes (#1062) (9e3d422)
- deps: update external fixes (#1066) (6c0700a)
- deps: update external fixes (#1075) (d1fa8e7)
- deps: update external fixes (#1078) (5b9c19f)
- deps: update external fixes (#1080) (7645cbb)
- deps: update external fixes (#1082) (28c253f)
- deps: update external fixes (#1084) (eab4939)
- deps: update external fixes (#1087) (df8cebc)
- deps: update external fixes (#1090) (a776b3c)
- deps: update external fixes (#1092) (d5108e5)
- deps: update external fixes (#1094) (1f4e660)
- deps: update external fixes (#1098) (22dad96)
- deps: update external fixes (#1101) (788a3a2)
- deps: update external fixes (#1103) (bf48b42)
- deps: update external fixes (#1108) (898c355)
- deps: update external fixes (#1110) (bbbfabd)
- deps: update external fixes (#1112) (db2aa23)
- deps: update external fixes (#1124) (6122bd8)
- deps: update external fixes (#1125) (dc41928)
- deps: update external fixes (#1132) (a8c3495)
- deps: update external fixes (#1137) (d4339b6)
- deps: update external fixes (#1142) (0b4c582)
- deps: update external fixes (#1160) (e6dcb09)
- deps: update external fixes (#1179) (a140ab9)
- deps: update external fixes (#1183) (d0e9105)
- deps: update external fixes (#1209) (f1173c1)
- deps: update external fixes (#1211) (141843a)
- deps: update external fixes (#1216) (428b690)
- deps: update external fixes (#1218) (c164593)
- deps: update external fixes (#1221) (af7b828)
- deps: update external fixes (#1223) (d0c8d9a)
- deps: update external fixes (#1227) (6039a26)
- deps: update external fixes (#1231) (1f3f538)
- deps: update external fixes (#1235) (24f6119)
- deps: update external fixes (#1243) (05d31a8)
- deps: update external fixes (#1246) (96dbb91)
- deps: update external fixes (#1259) (a778e14)
- deps: update external fixes (#928) (a3b4595)
- deps: update external fixes (#943) (bc19295)
- deps: update external major (major) (#1242) (8af15a4)
- disable R2 for source bus (#1175) (d17b6dd)
- do not throw but provide errors (#1002) (3cdd7ca)
- dot files shouldn't be excluded from listing (#1130) (4fbed25)
- enqueue aborted tasks (#1214) (c24aefb)
- exempt untimestamped update types from minimumReleaseAge (92aa8bd)
- export index and sitemap schemas (#965) (4a965e5)
- getErrors should be available in all configs (#1013) (d607cd3)
- git: handle URL path prefixes in GitUrl parsing (#1208) (fbd4c9d)
- guard against undefined m.url (#1086) (22c7520)
- hardcode s3 region (#1000) (9e04361)
- ignore changes when data has no
Accountkey (#961) (87360e0) - include id in write back message (#971) (61b332b)
- IndexConfig should not allow broken config (#1001) (35f28d1)
- indexer replace (047edd8), closes #1236
- log package parameter loaded with level debug (#1226) (81363cb)
- match all path segment chars (540863e)
- measure time for put and copy (#1131) (85d33e7)
- MemCachePlugin should check equality before calling base (#972) (f4873a1)
- pass abort controller instead (468d46a)
- pass headers in fetch, add user-agent (#944) (df3d126)
- ratelimiter condition (c277872)
- read cache data only once (#967) (29183bc)
- remove base64 decoding, just handled gzipped (d211fa6)
- remove helix-shared-dom (#1116) (429c311)
- remove unused abortSignal from createRateLimiter (a12f358)
- remove unused packages (deprecated with node 22) (#1030) (92f6a47)
- return all matches not just the first (#922) (cd5221a)
- s3: report last-modified diff before saving (#970) (fe2939c)
- s3: write back only when contents changed (#960) (aa71cea)
- secrets release (46766d0)
- semrel (#896) (f28aee2)
- sitemap language should not allow
lastmod(#1020) (e3d5dd0) - spacing (9160673)
- split external dev dependencies into their own Renovate group (d67cc0c)
- steady rate limiting with releasable tokens (cf94712)
- still deserialize cached data (#968) (449063c)
- storage: add copy options for addMetadata (#975) (58e4db1)
- storage: add renameMetadata copy option (#986) (18905cb)
- storage: allow parameters to backend to be passed explicitly (#1262) (bf0768f)
- storage: correctly set isFolder for folder placeholders in deep list (#1224) (97dab52)
- storage: use plain response body in case of XML deserialization error (#1245) (d7e90b7)
- support gzipped responses in store (f900cc3)
- trigger release (60b0b8b)
- types: add more specific processQueue typings (#917) (2c0f6b4)
- types: unrwap processqueue promises (#919) (d6921d4)
- update semantic-release to v25 and node to 24.x for OIDC (#1145) (c4c7753)
- use smaller queue size for multiple deletes (#1012) (4eb1401)
Features
- add 14-day minimum release age for external dependencies (fa254b5)
- add a 'relPath' to the object info passed to the copy filter (#1222) (f6d2ff9)
- add helix-shared-storage (#932) (6cb305b)
- add selectFirst in query config (#958) (83d6f5f)
- add server timing wrapper (#1118) (6d79778)
- add shallow flag to storage.list (#1128) (07edb86)
- add sourceBus() (186bc43)
- add support for read-only s3 cache plugin (for testing) (#914) (e1d19d7)
- add toSISize function with comprehensive tests (#1178) (6c1e65a)
- add type to validation error (#1065) (ae0b8a9)
- allow to set the content and code bus bucket names (#1061) (86afca7)
- bucket.put() stores uncompressed length as metadata (#1172) (f74105e)
- create extra export for modifiers (85ebf51)
- disable R2 from environment (#1057) (622e16b)
- move string utility methods from onedrive-support (#1033) (334fdaf)
- option to include subfolder prefixes in bucket.list() (#1168) (fa6758f)
- queue: add helix-shared-queue base package (#1272) (567d658)
- secrets: Support custom AWS endpoint (#1151) (6908f69)
- sitemap: add index property containing sitemaps to add to the index (#1254) (5a3055a)
- storage: add
HELIX_STORAGE_MAX_ATTEMPTS(#1152) (39fb6fe) - storage: add
maxItemsoption tolist()(#1149) (b2f017e) - storage: add a common StorageError class shared by S3Backend and AzureBackend (#1267) (2163aaf), closes #1264
- storage: add Azure Blob Storage backend (#1263) (4b42ce2)
- storage: add backend-agnostic conditional-copy support to CopyOptions (#1265) (99b1151)
- storage: add streaming putStream() to the storage backend interface (#1266) (475e287)
- storage: allow querying for CRC checksum (#1201) (5cdcd88)
- storage: support mapping for bucket names (#1141) (e9e3ef9)
- support characters function (#1022) (1f4e6f2)
- support copy options (#1199) (a1eb197)
- support disable R2 on bucket itself (#1077) (c432cb8)
- support extension in sitemap location (#945) (9615dcd)
- support rate limiting in processQueue (e4ad90d)
- support selectFirst in indexing (#959) (eff9813)
- suppot YAML in body data (if enabled) (#929) (248910c)
- tokencache: add deserializeHook option to S3CachePlugin (#1233) (9de1ae0)
- use correct deps (1441ffe)
- use remove() for rmdir() (#1014) (0d4ce8b)
Reverts
BREAKING CHANGES
- HelixStorage/HelixStorageS3 renamed to Storage/StorageS3;
Storage now requires an explicit backendFactory; head()/get() metadata use
lowerCamelCase common fields instead of raw S3 field names; putMeta() drops
its opts param; AWS_S3_SYSTEM_HEADERS and Storage.s3() are removed. - list() return type changed from ObjectInfo[] to ListResult;
ObjectInfo.path removed; ObjectInfo.lastModified type changed from string to
Date; ListOptions.includePrefixes removed; listFolders() returns basenames - some indexing configurations will no longer be accepted